From 80ecf096714114b250dae997aabe96e2915478e7 Mon Sep 17 00:00:00 2001 From: Alper Ebicoglu Date: Thu, 15 Nov 2018 16:28:04 +0300 Subject: [PATCH] closes #179 --- .../Settings}/IdentitySettingNames.cs | 10 +++++- .../Abp/Identity/AbpIdentityOptionsFactory.cs | 1 + .../AbpIdentitySettingDefinitionProvider.cs | 8 +++-- .../Shared/PersonalSettingsModal.cshtml | 21 +++++++++-- .../Shared/PersonalSettingsModal.cshtml.cs | 36 +++++++++++++++++-- .../Abp/Identity/IdentityOptions_Tests.cs | 1 + 6 files changed, 68 insertions(+), 9 deletions(-) rename modules/identity/src/{Volo.Abp.Identity.Domain/Volo/Abp/Identity => Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Settings}/IdentitySettingNames.cs (81%) 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;