diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/CreateModal.cshtml b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/CreateModal.cshtml index 4e4714fd43..b192a5323b 100644 --- a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/CreateModal.cshtml +++ b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/CreateModal.cshtml @@ -7,6 +7,7 @@ @using Volo.Abp.Localization @using Volo.Abp.ObjectExtending @using Volo.Abp.Data +@using Volo.Abp.Identity @model CreateModalModel @inject IHtmlLocalizer L @inject IStringLocalizerFactory StringLocalizerFactory @@ -25,7 +26,14 @@ - +
+ +
+ + +
+ +
diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/EditModal.cshtml b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/EditModal.cshtml index 725a9610dd..db0dd8422e 100644 --- a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/EditModal.cshtml +++ b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/EditModal.cshtml @@ -7,6 +7,7 @@ @using Volo.Abp.Localization @using Volo.Abp.ObjectExtending @using Volo.Abp.Data +@using Volo.Abp.Identity @model EditModalModel @inject IHtmlLocalizer L @inject IStringLocalizerFactory StringLocalizerFactory @@ -25,7 +26,16 @@ - +
+ +
+ + +
+ +
diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/Index.cshtml b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/Index.cshtml index 1f7f338ba4..48ad716306 100644 --- a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/Index.cshtml +++ b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/Index.cshtml @@ -19,6 +19,7 @@ @section styles { + } @section scripts { diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/index.css b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/index.css new file mode 100644 index 0000000000..acdafe715a --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/index.css @@ -0,0 +1,7 @@ +/* + By default Microsoft Edge, adds password reveal button inside the password input. + https://docs.microsoft.com/en-us/microsoft-edge/web-platform/password-reveal + */ +::-ms-reveal { + display: none; +} \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/index.js b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/index.js index 96ee7e5361..fcd3a72f52 100644 --- a/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/index.js +++ b/modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/index.js @@ -2,12 +2,51 @@ var l = abp.localization.getResource('AbpIdentity'); var _identityUserAppService = volo.abp.identity.identityUser; - var _editModal = new abp.ModalManager( - abp.appPath + 'Identity/Users/EditModal' - ); - var _createModal = new abp.ModalManager( - abp.appPath + 'Identity/Users/CreateModal' - ); + + var togglePasswordVisibility = function () { + $("#PasswordVisibilityButton").click(function (e) { + var button = $(this); + var passwordInput = button.parent().find("input"); + if(!passwordInput) { + return; + } + + if(passwordInput.attr("type") === "password") { + passwordInput.attr("type", "text"); + } + else { + passwordInput.attr("type", "password"); + } + + var icon = button.find("i"); + if(icon) { + icon.toggleClass("fa-eye-slash").toggleClass("fa-eye"); + } + }); + } + + abp.modals.createUser = function () { + var initModal = function (publicApi, args) { + togglePasswordVisibility(); + }; + return { initModal: initModal }; + } + + abp.modals.editUser = function () { + var initModal = function (publicApi, args) { + togglePasswordVisibility(); + }; + return { initModal: initModal }; + } + + var _editModal = new abp.ModalManager({ + viewUrl: abp.appPath + 'Identity/Users/EditModal', + modalClass: "editUser" + }); + var _createModal = new abp.ModalManager({ + viewUrl: abp.appPath + 'Identity/Users/CreateModal', + modalClass: "createUser" + }); var _permissionsModal = new abp.ModalManager( abp.appPath + 'AbpPermissionManagement/PermissionManagementModal' ); @@ -44,9 +83,9 @@ }, { text: l('Delete'), - visible: abp.auth.isGranted( - 'AbpIdentity.Users.Delete' - ), + visible: function(data) { + return abp.auth.isGranted('AbpIdentity.Users.Delete') && abp.currentUser.id !== data.id; + }, confirmMessage: function (data) { return l( 'UserDeletionConfirmationMessage', diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/en.json b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/en.json index ba775f3ab0..98f3a60216 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/en.json +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/en.json @@ -5,6 +5,7 @@ "OnlyProviderPermissons": "Only this provider", "All": "All", "SelectAllInAllTabs": "Grant all permissions", - "SelectAllInThisTab": "Select all" + "SelectAllInThisTab": "Select all", + "RemoveAllPermissionsWarningMessage": "Are you sure you want to remove all permissions?" } } \ No newline at end of file diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml index adc5547693..31639bf136 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml @@ -9,7 +9,7 @@ Layout = null; } -
+ diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/permission-management-modal.js b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/permission-management-modal.js index c33106d884..208047314c 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/permission-management-modal.js +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/permission-management-modal.js @@ -3,6 +3,8 @@ var abp = abp || {}; abp.modals = abp.modals || {}; abp.modals.PermissionManagement = function () { + var l = abp.localization.getResource("AbpPermissionManagement"); + function checkParents($tab, $checkBox) { var parentName = $checkBox .closest('.custom-checkbox') @@ -255,6 +257,27 @@ var abp = abp || {}; initSelectAllInThisTab(); setSelectAllInAllTabs(); + + var $form = $("#PermissionManagementForm"); + var $submitButton = $form.find("button[type='submit']"); + if($submitButton) { + $submitButton.click(function (e) { + e.preventDefault(); + + if(!$form.find("input:checked").length > 0) { + abp.message.confirm(l("RemoveAllPermissionsWarningMessage")) + .then(function (confirmed) { + if(confirmed) { + $form.submit(); + } + }); + } + else { + $form.submit(); + } + }); + } + }; }; })(jQuery); diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/AbpSettingManagementWebModule.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/AbpSettingManagementWebModule.cs index 1c83245c63..6bee4b3c3d 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/AbpSettingManagementWebModule.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/AbpSettingManagementWebModule.cs @@ -2,6 +2,7 @@ using Microsoft.Extensions.DependencyInjection; using Volo.Abp.AspNetCore.Mvc.UI.Bundling; using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared; +using Volo.Abp.AutoMapper; using Volo.Abp.Http.ProxyScripting.Generators.JQuery; using Volo.Abp.Modularity; using Volo.Abp.SettingManagement.Web.Navigation; @@ -14,6 +15,7 @@ namespace Volo.Abp.SettingManagement.Web; [DependsOn( typeof(AbpSettingManagementApplicationContractsModule), + typeof(AbpAutoMapperModule), typeof(AbpAspNetCoreMvcUiThemeSharedModule), typeof(AbpSettingManagementDomainSharedModule) )] @@ -58,5 +60,11 @@ public class AbpSettingManagementWebModule : AbpModule { options.DisableModule(SettingManagementRemoteServiceConsts.ModuleName); }); + + context.Services.AddAutoMapperObjectMapper(); + Configure(options => + { + options.AddProfile(validate: true); + }); } } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/Default.cshtml b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/Default.cshtml index 974e316687..338c13f8a9 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/Default.cshtml +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/Default.cshtml @@ -1,14 +1,14 @@ @using Microsoft.AspNetCore.Mvc.Localization @using Volo.Abp.SettingManagement.Localization @inject IHtmlLocalizer L -@model Volo.Abp.SettingManagement.EmailSettingsDto +@model Volo.Abp.SettingManagement.UpdateEmailSettingsDto - +
- - + + diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/Default.js b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/Default.js index a5b8288d41..c9871bb3d9 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/Default.js +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/Default.js @@ -6,8 +6,12 @@ $("#EmailSettingsForm").on('submit', function (event) { event.preventDefault(); + + if(!$(this).valid()) { + return; + } + var form = $(this).serializeFormToObject(); - volo.abp.settingManagement.emailSettings.update(form).then(function (result) { $(document).trigger("AbpSettingSaved"); }); diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/EmailSettingGroupViewComponent.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/EmailSettingGroupViewComponent.cs index bd0e8d924e..f9c24e1369 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/EmailSettingGroupViewComponent.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Pages/SettingManagement/Components/EmailSettingGroup/EmailSettingGroupViewComponent.cs @@ -16,8 +16,8 @@ public class EmailSettingGroupViewComponent : AbpViewComponent public virtual async Task InvokeAsync() { - var model = await EmailSettingsAppService.GetAsync(); - + var emailSettings = await EmailSettingsAppService.GetAsync(); + var model = ObjectMapper.Map(emailSettings); return View("~/Pages/SettingManagement/Components/EmailSettingGroup/Default.cshtml", model); } } diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/SettingManagementWebAutoMapperProfile.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/SettingManagementWebAutoMapperProfile.cs new file mode 100644 index 0000000000..20ae382454 --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/SettingManagementWebAutoMapperProfile.cs @@ -0,0 +1,11 @@ +using AutoMapper; + +namespace Volo.Abp.SettingManagement.Web; + +public class SettingManagementWebAutoMapperProfile : Profile +{ + public SettingManagementWebAutoMapperProfile() + { + CreateMap(); + } +} \ No newline at end of file diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Volo.Abp.SettingManagement.Web.csproj b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Volo.Abp.SettingManagement.Web.csproj index c7cbc9c60b..b802865379 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Volo.Abp.SettingManagement.Web.csproj +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Web/Volo.Abp.SettingManagement.Web.csproj @@ -15,6 +15,7 @@ +