diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml index ae31edc5e7..2b0fcb9c2c 100644 --- a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml +++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml @@ -2,10 +2,26 @@ @using Microsoft.AspNetCore.Mvc.Localization @using Volo.Abp.Account.Localization @using Volo.Abp.Account.Settings +@using Volo.Abp.Account.Web.Pages.Account; +@using Volo.Abp.AspNetCore.Mvc.UI.Theming; +@using Volo.Abp.Identity; @using Volo.Abp.Settings @model Volo.Abp.Account.Web.Pages.Account.LoginModel @inject IHtmlLocalizer L +@inject IThemeManager ThemeManager @inject Volo.Abp.Settings.ISettingProvider SettingProvider + +@{ + Layout = ThemeManager.CurrentTheme.GetAccountLayout(); +} + +@section scripts + { + + + +} +

@L["Login"]

@@ -21,17 +37,21 @@
- +
+
- - +
+ + +
+
- + @L["ForgotPassword"] diff --git a/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.js b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.js new file mode 100644 index 0000000000..56934f4fef --- /dev/null +++ b/modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.js @@ -0,0 +1,22 @@ +$(function () { + $("#PasswordVisibilityButton").click(function (e) { + let button = $(this); + let passwordInput = button.parent().find("input"); + if (!passwordInput) { + return; + } + + if (passwordInput.attr("type") === "password") { + passwordInput.attr("type", "text"); + } + else { + passwordInput.attr("type", "password"); + } + + let icon = button.find("i"); + if (icon) { + icon.toggleClass("fa-eye-slash").toggleClass("fa-eye"); + } + }); + +}); diff --git a/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/UserManagement.razor b/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/UserManagement.razor index 1aa88f2c14..657fe795ec 100644 --- a/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/UserManagement.razor +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/UserManagement.razor @@ -101,7 +101,9 @@ - + @@ -220,7 +222,9 @@ - + diff --git a/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/UserManagement.razor.cs b/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/UserManagement.razor.cs index 28520a018c..403e46601d 100644 --- a/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/UserManagement.razor.cs +++ b/modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/UserManagement.razor.cs @@ -35,12 +35,13 @@ public partial class UserManagement protected string CreateModalSelectedTab = DefaultSelectedTab; protected string EditModalSelectedTab = DefaultSelectedTab; + protected bool ShowPassword { get; set; } protected PageToolbar Toolbar { get; } = new(); private List UserManagementTableColumns => TableColumns.Get(); private TextRole _passwordTextRole = TextRole.Password; - + public UserManagement() { ObjectMapperContext = typeof(AbpIdentityBlazorModule); @@ -232,12 +233,14 @@ public partial class UserManagement { if (textRole == null) { - ChangePasswordTextRole(_passwordTextRole == TextRole.Password ? TextRole.Text: TextRole.Password); + ChangePasswordTextRole(_passwordTextRole == TextRole.Password ? TextRole.Text : TextRole.Password); + ShowPassword = !ShowPassword; } else { _passwordTextRole = textRole.Value; } + } } diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Pages/TenantManagement/TenantManagement.razor b/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Pages/TenantManagement/TenantManagement.razor index a1d4f66427..0c03d5cbd2 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Pages/TenantManagement/TenantManagement.razor +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Pages/TenantManagement/TenantManagement.razor @@ -65,14 +65,21 @@ - - @L["DisplayName:AdminPassword"] * - - - - - - + + @L["DisplayName:AdminPassword"] * + + + + + + + + + + + diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Pages/TenantManagement/TenantManagement.razor.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Pages/TenantManagement/TenantManagement.razor.cs index 5969237a21..9d1edbad7a 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Pages/TenantManagement/TenantManagement.razor.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Pages/TenantManagement/TenantManagement.razor.cs @@ -1,14 +1,11 @@ using System; using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; using System.Threading.Tasks; using Blazorise; using Microsoft.AspNetCore.Authorization; using Volo.Abp.AspNetCore.Components.Web.Extensibility.EntityActions; using Volo.Abp.AspNetCore.Components.Web.Extensibility.TableColumns; using Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars; -using Volo.Abp.BlazoriseUI; -using Volo.Abp.FeatureManagement; using Volo.Abp.FeatureManagement.Blazor.Components; using Volo.Abp.ObjectExtending; using Volo.Abp.TenantManagement.Localization; @@ -24,6 +21,8 @@ public partial class TenantManagement protected FeatureManagementModal FeatureManagementModal; + protected bool ShowPassword { get; set; } + protected PageToolbar Toolbar { get; } = new(); protected List TenantManagementTableColumns => TableColumns.Get(); @@ -127,4 +126,9 @@ public partial class TenantManagement return base.SetTableColumnsAsync(); } + + protected virtual void TogglePasswordVisibility() + { + ShowPassword = !ShowPassword; + } } diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/TenantConsts.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/TenantConsts.cs index 99077d265b..4dcd003af2 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/TenantConsts.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/TenantConsts.cs @@ -6,4 +6,14 @@ public static class TenantConsts /// Default value: 64 /// public static int MaxNameLength { get; set; } = 64; + + /// + /// Default value: 128 + /// + public static int MaxPasswordLength { get; set; } = 128; + + /// + /// Default value: 256 + /// + public static int AdminEmailAddress { get; set; } = 256; } diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Create.js b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Create.js new file mode 100644 index 0000000000..b19f44be46 --- /dev/null +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Create.js @@ -0,0 +1,22 @@ +$(document).ready(function () { + $(document).on('click', '#PasswordVisibilityButton', function () { + let button = $(this); + let passwordInput = button.parent().find("input"); + if (!passwordInput) { + return; + } + + if (passwordInput.attr("type") === "password") { + passwordInput.attr("type", "text"); + } + else { + passwordInput.attr("type", "password"); + } + + let icon = button.find("i"); + if (icon) { + icon.toggleClass("fa-eye-slash").toggleClass("fa-eye"); + } + }) +}); + diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml index 03f6f6d70c..27c228a80a 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml @@ -7,6 +7,7 @@ @using Volo.Abp.TenantManagement.Localization @using Volo.Abp.TenantManagement.Web.Pages.TenantManagement.Tenants @using Volo.Abp.Data +@using Volo.Abp.TenantManagement; @model CreateModalModel @inject IHtmlLocalizer L @inject IStringLocalizerFactory StringLocalizerFactory @@ -21,7 +22,15 @@ - +
+
+ + +
+ +
@foreach (var propertyInfo in ObjectExtensionManager.Instance.GetProperties()) { diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml.cs b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml.cs index ffd9c162a0..24f732442d 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml.cs +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml.cs @@ -43,12 +43,13 @@ public class CreateModalModel : TenantManagementPageModel [Required] [EmailAddress] - [MaxLength(256)] + [DynamicStringLength(typeof(TenantConsts), nameof(TenantConsts.AdminEmailAddress))] + public string AdminEmailAddress { get; set; } [Required] [DataType(DataType.Password)] - [MaxLength(128)] + [DynamicStringLength(typeof(TenantConsts), nameof(TenantConsts.MaxPasswordLength))] public string AdminPassword { get; set; } } } diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Index.cshtml b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Index.cshtml index a93733a338..f2bf7d3705 100644 --- a/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Index.cshtml +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Index.cshtml @@ -21,7 +21,8 @@ - + + } @section content_toolbar {