Browse Source

Merge pull request #14705 from abpframework/auto-merge/rel-7-0/1463

Merge branch dev with rel-7.0
pull/14709/head
Enis Necipoglu 4 years ago
committed by GitHub
parent
commit
63e8829a1e
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 28
      modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.cshtml
  2. 22
      modules/account/src/Volo.Abp.Account.Web/Pages/Account/Login.js
  3. 8
      modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/UserManagement.razor
  4. 7
      modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/UserManagement.razor.cs
  5. 23
      modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Pages/TenantManagement/TenantManagement.razor
  6. 10
      modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Pages/TenantManagement/TenantManagement.razor.cs
  7. 10
      modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/TenantConsts.cs
  8. 22
      modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Create.js
  9. 11
      modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml
  10. 5
      modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/CreateModal.cshtml.cs
  11. 3
      modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Index.cshtml

28
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<AccountResource> L
@inject IThemeManager ThemeManager
@inject Volo.Abp.Settings.ISettingProvider SettingProvider
@{
Layout = ThemeManager.CurrentTheme.GetAccountLayout();
}
@section scripts
{
<abp-script-bundle name="@typeof(LoginModel).FullName">
<abp-script src="/Pages/Account/Login.js" />
</abp-script-bundle>
}
<div class="card mt-3 shadow-sm rounded">
<div class="card-body p-5">
<h4>@L["Login"]</h4>
@ -21,17 +37,21 @@
<form method="post" class="mt-4">
<div class="mb-3">
<label asp-for="LoginInput.UserNameOrEmailAddress" class="form-label"></label>
<input asp-for="LoginInput.UserNameOrEmailAddress" class="form-control"/>
<input asp-for="LoginInput.UserNameOrEmailAddress" class="form-control" />
<span asp-validation-for="LoginInput.UserNameOrEmailAddress" class="text-danger"></span>
</div>
<div class="mb-3">
<label asp-for="LoginInput.Password" class="form-label"></label>
<input asp-for="LoginInput.Password" class="form-control"/>
<span asp-validation-for="LoginInput.Password" class="text-danger"></span>
<div class="input-group">
<input type="password" class="form-control" autocomplete="new-password" maxlength="@IdentityUserConsts.MaxPasswordLength" asp-for="LoginInput.Password" />
<button class="btn btn-secondary" type="button" id="PasswordVisibilityButton"><i class="fa fa-eye-slash" aria-hidden="true"></i></button>
</div>
<span asp-validation-for="LoginInput.Password"></span>
</div>
<abp-row>
<abp-column>
<abp-input asp-for="LoginInput.RememberMe" class="mb-4"/>
<abp-input asp-for="LoginInput.RememberMe" class="mb-4" />
</abp-column>
<abp-column class="text-end">
<a href="@Url.Page("./ForgotPassword", new {returnUrl = Model.ReturnUrl, returnUrlHash = Model.ReturnUrlHash})">@L["ForgotPassword"]</a>

22
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");
}
});
});

8
modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/UserManagement.razor

@ -101,7 +101,9 @@
</TextEdit>
</Addon>
<Addon AddonType="AddonType.End">
<Button Color="Color.Secondary" Clicked="@(() => ChangePasswordTextRole(null))"><Icon Name="IconName.EyeSlash"/></Button>
<Button Color="Color.Secondary" Clicked="@(() => ChangePasswordTextRole(null))">
<Icon Name="ShowPassword ? IconName.Eye : IconName.EyeSlash" />
</Button>
</Addon>
</Addons>
<ValidationError Style="display: block"/>
@ -220,7 +222,9 @@
</TextEdit>
</Addon>
<Addon AddonType="AddonType.End">
<Button Color="Color.Secondary" Clicked="@(() => ChangePasswordTextRole(null))"><Icon Name="IconName.EyeSlash"/></Button>
<Button Color="Color.Secondary" Clicked="@(() => ChangePasswordTextRole(null))">
<Icon Name="ShowPassword ? IconName.Eye : IconName.EyeSlash" />
</Button>
</Addon>
</Addons>
<ValidationError Style="display: block"/>

7
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<TableColumn> UserManagementTableColumns => TableColumns.Get<UserManagement>();
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;
}
}
}

23
modules/tenant-management/src/Volo.Abp.TenantManagement.Blazor/Pages/TenantManagement/TenantManagement.razor

@ -65,14 +65,21 @@
</Field>
</Validation>
<Validation MessageLocalizer="@LH.Localize">
<Field>
<FieldLabel>@L["DisplayName:AdminPassword"] *</FieldLabel>
<TextEdit Role="@TextRole.Password" @bind-Text="@NewEntity.AdminPassword">
<Feedback>
<ValidationError/>
</Feedback>
</TextEdit>
</Field>
<Field>
<FieldLabel>@L["DisplayName:AdminPassword"] *</FieldLabel>
<Addons>
<Addon AddonType="AddonType.Body">
<TextEdit Role="ShowPassword ? TextRole.Text : TextRole.Password" @bind-Text="@NewEntity.AdminPassword">
</TextEdit>
</Addon>
<Addon AddonType="AddonType.End">
<Button Color="Color.Secondary" Clicked="@(() => TogglePasswordVisibility())">
<Icon Name="ShowPassword ? IconName.Eye : IconName.EyeSlash" />
</Button>
</Addon>
</Addons>
<ValidationError Style="display: block" />
</Field>
</Validation>
<ExtensionProperties TEntityType="TenantCreateDto" TResourceType="AbpTenantManagementResource" Entity="@NewEntity" LH="@LH"/>
</Validations>

10
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<TableColumn> TenantManagementTableColumns => TableColumns.Get<TenantManagement>();
@ -127,4 +126,9 @@ public partial class TenantManagement
return base.SetTableColumnsAsync();
}
protected virtual void TogglePasswordVisibility()
{
ShowPassword = !ShowPassword;
}
}

10
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
/// </summary>
public static int MaxNameLength { get; set; } = 64;
/// <summary>
/// Default value: 128
/// </summary>
public static int MaxPasswordLength { get; set; } = 128;
/// <summary>
/// Default value: 256
/// </summary>
public static int AdminEmailAddress { get; set; } = 256;
}

22
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");
}
})
});

11
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<AbpTenantManagementResource> L
@inject IStringLocalizerFactory StringLocalizerFactory
@ -21,7 +22,15 @@
<abp-input asp-for="Tenant.AdminEmailAddress" />
<abp-input asp-for="Tenant.AdminPassword" />
<div class="mb-3">
<div class="input-group">
<input type="password" class="form-control" maxlength="@TenantConsts.MaxPasswordLength" asp-for="Tenant.AdminPassword" />
<button class="btn btn-secondary" type="button" id="PasswordVisibilityButton">
<i class="fa fa-eye-slash" aria-hidden="true"></i>
</button>
</div>
<span asp-validation-for="Tenant.AdminPassword"></span>
</div>
@foreach (var propertyInfo in ObjectExtensionManager.Instance.GetProperties<CreateModalModel.TenantInfoModel>())
{

5
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; }
}
}

3
modules/tenant-management/src/Volo.Abp.TenantManagement.Web/Pages/TenantManagement/Tenants/Index.cshtml

@ -21,7 +21,8 @@
<abp-script-bundle name="@typeof(IndexModel).FullName">
<abp-script src="/client-proxies/multi-tenancy-proxy.js" />
<abp-script src="/Pages/FeatureManagement/feature-management-modal.js"/>
<abp-script src="/Pages/TenantManagement/Tenants/Index.js"/>
<abp-script src="/Pages/TenantManagement/Tenants/Index.js" />
<abp-script src="/Pages/TenantManagement/Tenants/Create.js" />
</abp-script-bundle>
}
@section content_toolbar {

Loading…
Cancel
Save