diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentitySettingNames.cs b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Settings/IdentitySettingNames.cs
similarity index 81%
rename from modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentitySettingNames.cs
rename to modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Settings/IdentitySettingNames.cs
index aa820777a4..babeb4fb77 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentitySettingNames.cs
+++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Settings/IdentitySettingNames.cs
@@ -1,4 +1,4 @@
-namespace Volo.Abp.Identity
+namespace Volo.Abp.Identity.Settings
{
public static class IdentitySettingNames
{
@@ -32,5 +32,13 @@
public const string RequireConfirmedEmail = SignInPrefix + ".RequireConfirmedEmail";
public const string RequireConfirmedPhoneNumber = SignInPrefix + ".RequireConfirmedPhoneNumber";
}
+
+ public static class User
+ {
+ private const string UserPrefix = Prefix + ".User";
+
+ public const string IsUserNameUpdateEnabled = UserPrefix + ".IsUserNameUpdateEnabled";
+ public const string IsEmailUpdateEnabled = UserPrefix + ".IsEmailUpdateEnabled";
+ }
}
}
\ No newline at end of file
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityOptionsFactory.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityOptionsFactory.cs
index 3a76062c59..2dce5cdfee 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityOptionsFactory.cs
+++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityOptionsFactory.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.Options;
+using Volo.Abp.Identity.Settings;
using Volo.Abp.Options;
using Volo.Abp.Settings;
diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentitySettingDefinitionProvider.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentitySettingDefinitionProvider.cs
index 34604b5418..472dca8784 100644
--- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentitySettingDefinitionProvider.cs
+++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentitySettingDefinitionProvider.cs
@@ -1,4 +1,5 @@
-using Volo.Abp.Settings;
+using Volo.Abp.Identity.Settings;
+using Volo.Abp.Settings;
namespace Volo.Abp.Identity
{
@@ -20,7 +21,10 @@ namespace Volo.Abp.Identity
new SettingDefinition(IdentitySettingNames.Lockout.MaxFailedAccessAttempts),
new SettingDefinition(IdentitySettingNames.SignIn.RequireConfirmedEmail),
- new SettingDefinition(IdentitySettingNames.SignIn.RequireConfirmedPhoneNumber)
+ new SettingDefinition(IdentitySettingNames.SignIn.RequireConfirmedPhoneNumber),
+
+ new SettingDefinition(IdentitySettingNames.User.IsUserNameUpdateEnabled),
+ new SettingDefinition(IdentitySettingNames.User.IsEmailUpdateEnabled)
);
}
diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Shared/PersonalSettingsModal.cshtml b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Shared/PersonalSettingsModal.cshtml
index 9f60b02709..666d21f0e4 100644
--- a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Shared/PersonalSettingsModal.cshtml
+++ b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Shared/PersonalSettingsModal.cshtml
@@ -9,12 +9,27 @@
Layout = null;
}
-
+
\ No newline at end of file
+
\ No newline at end of file
diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Shared/PersonalSettingsModal.cshtml.cs b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Shared/PersonalSettingsModal.cshtml.cs
index 6799b3a971..23606ba9e1 100644
--- a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Shared/PersonalSettingsModal.cshtml.cs
+++ b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Shared/PersonalSettingsModal.cshtml.cs
@@ -1,10 +1,10 @@
+using System;
using System.ComponentModel.DataAnnotations;
-using System.Security.Authentication;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
-using Microsoft.Extensions.Localization;
using Volo.Abp.AspNetCore.Mvc.UI.RazorPages;
-using Volo.Abp.Identity.Localization;
+using Volo.Abp.Identity.Settings;
+using Volo.Abp.Settings;
namespace Volo.Abp.Identity.Web.Pages.Identity.Shared
{
@@ -13,6 +13,18 @@ namespace Volo.Abp.Identity.Web.Pages.Identity.Shared
[BindProperty]
public PersonalSettingsInfoModel PersonalSettingsInfoModel { get; set; }
+ [BindProperty]
+ public PersonalSettingsInfoModel PersonalSettingsInfoModel2 { get; set; }
+
+ public bool IsUsernameUpdateDisabled => !string.Equals(
+ SettingManager.GetOrNull(IdentitySettingNames.User.IsUserNameUpdateEnabled), "true",
+ StringComparison.OrdinalIgnoreCase);
+
+ public bool IsEmailUpdateDisabled => !string.Equals(
+ SettingManager.GetOrNull(IdentitySettingNames.User.IsEmailUpdateEnabled), "true",
+ StringComparison.OrdinalIgnoreCase);
+
+
private readonly IProfileAppService _profileAppService;
public PersonalSettingsModal(IProfileAppService profileAppService)
@@ -33,6 +45,24 @@ namespace Volo.Abp.Identity.Web.Pages.Identity.Shared
var updateDto = ObjectMapper.Map(PersonalSettingsInfoModel);
+ ProfileDto user = null;
+
+ if (IsUsernameUpdateDisabled )
+ {
+ user = await _profileAppService.GetAsync();
+ updateDto.UserName = user.UserName;
+ }
+
+ if (IsEmailUpdateDisabled)
+ {
+ if (user == null)
+ {
+ user = await _profileAppService.GetAsync();
+ }
+
+ updateDto.Email = user.Email;
+ }
+
await _profileAppService.UpdateAsync(updateDto);
return NoContent();
diff --git a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityOptions_Tests.cs b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityOptions_Tests.cs
index 4ea482f7b4..f65ac22021 100644
--- a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityOptions_Tests.cs
+++ b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/IdentityOptions_Tests.cs
@@ -5,6 +5,7 @@ using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
using NSubstitute;
using Shouldly;
+using Volo.Abp.Identity.Settings;
using Volo.Abp.Settings;
using Xunit;