Browse Source

Merge pull request #18927 from abpframework/ManageRoles

Add `ManageRoles` permission.
pull/18936/head
oykuermann 3 years ago
committed by GitHub
parent
commit
bf59554ff0
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 1
      modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IdentityPermissionDefinitionProvider.cs
  2. 1
      modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IdentityPermissions.cs
  3. 10
      modules/identity/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/IdentityUserAppService.cs
  4. 30
      modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/UserManagement.razor
  5. 27
      modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/UserManagement.razor.cs
  6. 3
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ar.json
  7. 3
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/cs.json
  8. 3
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/de.json
  9. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/el.json
  10. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en-GB.json
  11. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json
  12. 3
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/es.json
  13. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fa.json
  14. 3
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fi.json
  15. 3
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fr.json
  16. 3
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hi.json
  17. 3
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hr.json
  18. 3
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hu.json
  19. 3
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/is.json
  20. 3
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/it.json
  21. 3
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/nl.json
  22. 3
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pl-PL.json
  23. 3
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pt-BR.json
  24. 3
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ro-RO.json
  25. 3
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ru.json
  26. 3
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sk.json
  27. 3
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sl.json
  28. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/tr.json
  29. 3
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/vi.json
  30. 3
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json
  31. 1
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json
  32. 37
      modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/EditModal.cshtml
  33. 25
      modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/EditModal.cshtml.cs

1
modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IdentityPermissionDefinitionProvider.cs

@ -21,6 +21,7 @@ public class IdentityPermissionDefinitionProvider : PermissionDefinitionProvider
usersPermission.AddChild(IdentityPermissions.Users.Update, L("Permission:Edit")); usersPermission.AddChild(IdentityPermissions.Users.Update, L("Permission:Edit"));
usersPermission.AddChild(IdentityPermissions.Users.Delete, L("Permission:Delete")); usersPermission.AddChild(IdentityPermissions.Users.Delete, L("Permission:Delete"));
usersPermission.AddChild(IdentityPermissions.Users.ManagePermissions, L("Permission:ChangePermissions")); usersPermission.AddChild(IdentityPermissions.Users.ManagePermissions, L("Permission:ChangePermissions"));
usersPermission.AddChild(IdentityPermissions.Users.ManageRoles, L("Permission:ManageRoles"));
identityGroup identityGroup
.AddPermission(IdentityPermissions.UserLookup.Default, L("Permission:UserLookup")) .AddPermission(IdentityPermissions.UserLookup.Default, L("Permission:UserLookup"))

1
modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IdentityPermissions.cs

@ -22,6 +22,7 @@ public static class IdentityPermissions
public const string Update = Default + ".Update"; public const string Update = Default + ".Update";
public const string Delete = Default + ".Delete"; public const string Delete = Default + ".Delete";
public const string ManagePermissions = Default + ".ManagePermissions"; public const string ManagePermissions = Default + ".ManagePermissions";
public const string ManageRoles = Update + ".ManageRoles";
} }
public static class UserLookup public static class UserLookup

10
modules/identity/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/IdentityUserAppService.cs

@ -5,6 +5,7 @@ using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Data; using Volo.Abp.Data;
using Volo.Abp.ObjectExtending; using Volo.Abp.ObjectExtending;
@ -16,17 +17,19 @@ public class IdentityUserAppService : IdentityAppServiceBase, IIdentityUserAppSe
protected IIdentityUserRepository UserRepository { get; } protected IIdentityUserRepository UserRepository { get; }
protected IIdentityRoleRepository RoleRepository { get; } protected IIdentityRoleRepository RoleRepository { get; }
protected IOptions<IdentityOptions> IdentityOptions { get; } protected IOptions<IdentityOptions> IdentityOptions { get; }
protected IPermissionChecker PermissionChecker { get; }
public IdentityUserAppService( public IdentityUserAppService(
IdentityUserManager userManager, IdentityUserManager userManager,
IIdentityUserRepository userRepository, IIdentityUserRepository userRepository,
IIdentityRoleRepository roleRepository, IIdentityRoleRepository roleRepository,
IOptions<IdentityOptions> identityOptions) IOptions<IdentityOptions> identityOptions,
IPermissionChecker permissionChecker)
{ {
UserManager = userManager; UserManager = userManager;
UserRepository = userRepository; UserRepository = userRepository;
RoleRepository = roleRepository; RoleRepository = roleRepository;
IdentityOptions = identityOptions; IdentityOptions = identityOptions;
PermissionChecker = permissionChecker;
} }
//TODO: [Authorize(IdentityPermissions.Users.Default)] should go the IdentityUserAppService class. //TODO: [Authorize(IdentityPermissions.Users.Default)] should go the IdentityUserAppService class.
@ -169,6 +172,7 @@ public class IdentityUserAppService : IdentityAppServiceBase, IIdentityUserAppSe
(await UserManager.SetEmailAsync(user, input.Email)).CheckErrors(); (await UserManager.SetEmailAsync(user, input.Email)).CheckErrors();
} }
if (!string.Equals(user.PhoneNumber, input.PhoneNumber, StringComparison.InvariantCultureIgnoreCase)) if (!string.Equals(user.PhoneNumber, input.PhoneNumber, StringComparison.InvariantCultureIgnoreCase))
{ {
(await UserManager.SetPhoneNumberAsync(user, input.PhoneNumber)).CheckErrors(); (await UserManager.SetPhoneNumberAsync(user, input.PhoneNumber)).CheckErrors();
@ -183,7 +187,7 @@ public class IdentityUserAppService : IdentityAppServiceBase, IIdentityUserAppSe
user.Surname = input.Surname; user.Surname = input.Surname;
(await UserManager.UpdateAsync(user)).CheckErrors(); (await UserManager.UpdateAsync(user)).CheckErrors();
user.SetIsActive(input.IsActive); user.SetIsActive(input.IsActive);
if (input.RoleNames != null) if (input.RoleNames != null && await PermissionChecker.IsGrantedAsync(IdentityPermissions.Users.ManageRoles))
{ {
(await UserManager.SetRolesAsync(user, input.RoleNames)).CheckErrors(); (await UserManager.SetRolesAsync(user, input.RoleNames)).CheckErrors();
} }

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

@ -179,7 +179,10 @@
<Tabs @bind-SelectedTab="@EditModalSelectedTab"> <Tabs @bind-SelectedTab="@EditModalSelectedTab">
<Items> <Items>
<Tab Name="UserInformations">@L["UserInformations"]</Tab> <Tab Name="UserInformations">@L["UserInformations"]</Tab>
<Tab Name="Roles">@L["Roles"]</Tab> @if (EditUserRoles != null && EditUserRoles.Any())
{
<Tab Name="Roles">@L["Roles"]</Tab>
}
</Items> </Items>
<Content> <Content>
<TabPanel Name="UserInformations"> <TabPanel Name="UserInformations">
@ -258,18 +261,21 @@
</Field> </Field>
<ExtensionProperties TEntityType="IdentityUserUpdateDto" TResourceType="IdentityResource" Entity="@EditingEntity" LH="@LH" ModalType="ExtensionPropertyModalType.EditModal" /> <ExtensionProperties TEntityType="IdentityUserUpdateDto" TResourceType="IdentityResource" Entity="@EditingEntity" LH="@LH" ModalType="ExtensionPropertyModalType.EditModal" />
</TabPanel> </TabPanel>
<TabPanel Name="Roles"> @if (EditUserRoles != null && EditUserRoles.Any())
@if (EditUserRoles != null) {
{ <TabPanel Name="Roles">
@foreach (var role in EditUserRoles) @if (EditUserRoles != null)
{ {
<Field> @foreach (var role in EditUserRoles)
<input type="hidden" @bind-value="@role.Name" /> {
<Check TValue="bool" @bind-Checked="@role.IsAssigned">@role.Name</Check> <Field>
</Field> <input type="hidden" @bind-value="@role.Name" />
<Check TValue="bool" @bind-Checked="@role.IsAssigned">@role.Name</Check>
</Field>
}
} }
} </TabPanel>
</TabPanel> }
</Content> </Content>
</Tabs> </Tabs>
</Validations> </Validations>
@ -286,4 +292,4 @@
@if (HasManagePermissionsPermission) @if (HasManagePermissionsPermission)
{ {
<PermissionManagementModal @ref="PermissionManagementModal" /> <PermissionManagementModal @ref="PermissionManagementModal" />
} }

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

@ -4,9 +4,11 @@ using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Blazorise; using Blazorise;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Components;
using Volo.Abp.AspNetCore.Components.Web.Extensibility.EntityActions; using Volo.Abp.AspNetCore.Components.Web.Extensibility.EntityActions;
using Volo.Abp.AspNetCore.Components.Web.Extensibility.TableColumns; using Volo.Abp.AspNetCore.Components.Web.Extensibility.TableColumns;
using Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars; using Volo.Abp.AspNetCore.Components.Web.Theming.PageToolbars;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Identity.Localization; using Volo.Abp.Identity.Localization;
using Volo.Abp.ObjectExtending; using Volo.Abp.ObjectExtending;
using Volo.Abp.PermissionManagement.Blazor.Components; using Volo.Abp.PermissionManagement.Blazor.Components;
@ -43,6 +45,9 @@ public partial class UserManagement
private TextRole _passwordTextRole = TextRole.Password; private TextRole _passwordTextRole = TextRole.Password;
public bool IsEditCurrentUser { get; set; } public bool IsEditCurrentUser { get; set; }
[Inject]
protected IPermissionChecker PermissionChecker { get; set; }
public UserManagement() public UserManagement()
{ {
ObjectMapperContext = typeof(AbpIdentityBlazorModule); ObjectMapperContext = typeof(AbpIdentityBlazorModule);
@ -121,15 +126,19 @@ public partial class UserManagement
{ {
EditModalSelectedTab = DefaultSelectedTab; EditModalSelectedTab = DefaultSelectedTab;
IsEditCurrentUser = entity.Id == CurrentUser.Id; IsEditCurrentUser = entity.Id == CurrentUser.Id;
var userRoleNames = (await AppService.GetRolesAsync(entity.Id)).Items.Select(r => r.Name).ToList();
EditUserRoles = Roles.Select(x => new AssignedRoleViewModel if (await PermissionChecker.IsGrantedAsync(IdentityPermissions.Users.ManageRoles))
{ {
Name = x.Name, var userRoleNames = (await AppService.GetRolesAsync(entity.Id)).Items.Select(r => r.Name).ToList();
IsAssigned = userRoleNames.Contains(x.Name)
}).ToArray(); EditUserRoles = Roles.Select(x => new AssignedRoleViewModel
{
Name = x.Name,
IsAssigned = userRoleNames.Contains(x.Name)
}).ToArray();
ChangePasswordTextRole(TextRole.Password); ChangePasswordTextRole(TextRole.Password);
}
await base.OpenEditModalAsync(entity); await base.OpenEditModalAsync(entity);
} }
catch (Exception ex) catch (Exception ex)
@ -141,8 +150,10 @@ public partial class UserManagement
protected override Task OnUpdatingEntityAsync() protected override Task OnUpdatingEntityAsync()
{ {
// apply roles before saving // apply roles before saving
EditingEntity.RoleNames = EditUserRoles.Where(x => x.IsAssigned).Select(x => x.Name).ToArray(); if (EditUserRoles != null)
{
EditingEntity.RoleNames = EditUserRoles.Where(x => x.IsAssigned).Select(x => x.Name).ToArray();
}
return base.OnUpdatingEntityAsync(); return base.OnUpdatingEntityAsync();
} }

3
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ar.json

@ -85,6 +85,7 @@
"Permission:Edit": "تحرير", "Permission:Edit": "تحرير",
"Permission:Delete": "حذف", "Permission:Delete": "حذف",
"Permission:ChangePermissions": "تغيير الأذونات", "Permission:ChangePermissions": "تغيير الأذونات",
"Permission:ManageRoles": "إدارة الأدوار",
"Permission:UserManagement": "إدارة المستخدم", "Permission:UserManagement": "إدارة المستخدم",
"Permission:UserLookup": "بحث المستخدم", "Permission:UserLookup": "بحث المستخدم",
"DisplayName:Abp.Identity.Password.RequiredLength": "الطول المطلوب", "DisplayName:Abp.Identity.Password.RequiredLength": "الطول المطلوب",
@ -127,4 +128,4 @@
"LockoutEndTime": "وقت انتهاء القفل", "LockoutEndTime": "وقت انتهاء القفل",
"FailedAccessCount": "فشل عدد الوصول" "FailedAccessCount": "فشل عدد الوصول"
} }
} }

3
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/cs.json

@ -85,6 +85,7 @@
"Permission:Edit": "Upravit", "Permission:Edit": "Upravit",
"Permission:Delete": "Smazat", "Permission:Delete": "Smazat",
"Permission:ChangePermissions": "Změnit oprávnění", "Permission:ChangePermissions": "Změnit oprávnění",
"Permission:ManageRoles": "Správa rolí",
"Permission:UserManagement": "Správa uživatelů", "Permission:UserManagement": "Správa uživatelů",
"Permission:UserLookup": "Vyhledání uživatele", "Permission:UserLookup": "Vyhledání uživatele",
"DisplayName:Abp.Identity.Password.RequiredLength": "Požadovaná délka", "DisplayName:Abp.Identity.Password.RequiredLength": "Požadovaná délka",
@ -127,4 +128,4 @@
"LockoutEndTime": "Čas konce uzamčení", "LockoutEndTime": "Čas konce uzamčení",
"FailedAccessCount": "Počet neúspěšných přístupů" "FailedAccessCount": "Počet neúspěšných přístupů"
} }
} }

3
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/de.json

@ -85,6 +85,7 @@
"Permission:Edit": "Bearbeiten", "Permission:Edit": "Bearbeiten",
"Permission:Delete": "Löschen", "Permission:Delete": "Löschen",
"Permission:ChangePermissions": "Berechtigungen ändern", "Permission:ChangePermissions": "Berechtigungen ändern",
"Permission:ManageRoles": "Rollen verwalten",
"Permission:UserManagement": "Benutzerverwaltung", "Permission:UserManagement": "Benutzerverwaltung",
"Permission:UserLookup": "Benutzersuche", "Permission:UserLookup": "Benutzersuche",
"DisplayName:Abp.Identity.Password.RequiredLength": "Erforderliche Länge", "DisplayName:Abp.Identity.Password.RequiredLength": "Erforderliche Länge",
@ -127,4 +128,4 @@
"LockoutEndTime": "Endzeit der Sperrung", "LockoutEndTime": "Endzeit der Sperrung",
"FailedAccessCount": "Anzahl der fehlgeschlagenen Zugriffe" "FailedAccessCount": "Anzahl der fehlgeschlagenen Zugriffe"
} }
} }

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/el.json

@ -84,6 +84,7 @@
"Permission:Edit": "Επεξεργασία", "Permission:Edit": "Επεξεργασία",
"Permission:Delete": "Διαγραφή", "Permission:Delete": "Διαγραφή",
"Permission:ChangePermissions": "Αλλαγές στα δικαιώματα", "Permission:ChangePermissions": "Αλλαγές στα δικαιώματα",
"Permission:ManageRoles": "Διαχείριση ρόλων",
"Permission:UserManagement": "Διαχείριση χρηστών", "Permission:UserManagement": "Διαχείριση χρηστών",
"Permission:UserLookup": "Αναζήτηση χρήστη", "Permission:UserLookup": "Αναζήτηση χρήστη",
"DisplayName:Abp.Identity.Password.RequiredLength": "Απαιτούμενο μήκος", "DisplayName:Abp.Identity.Password.RequiredLength": "Απαιτούμενο μήκος",

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en-GB.json

@ -83,6 +83,7 @@
"Permission:Edit": "Edit", "Permission:Edit": "Edit",
"Permission:Delete": "Delete", "Permission:Delete": "Delete",
"Permission:ChangePermissions": "Change permissions", "Permission:ChangePermissions": "Change permissions",
"Permission:ManageRoles": "Manage roles",
"Permission:UserManagement": "User management", "Permission:UserManagement": "User management",
"Permission:UserLookup": "User lookup", "Permission:UserLookup": "User lookup",
"Feature:IdentityGroup": "Identity", "Feature:IdentityGroup": "Identity",

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/en.json

@ -85,6 +85,7 @@
"Permission:Edit": "Edit", "Permission:Edit": "Edit",
"Permission:Delete": "Delete", "Permission:Delete": "Delete",
"Permission:ChangePermissions": "Change permissions", "Permission:ChangePermissions": "Change permissions",
"Permission:ManageRoles": "Manage roles",
"Permission:UserManagement": "User management", "Permission:UserManagement": "User management",
"Permission:UserLookup": "User lookup", "Permission:UserLookup": "User lookup",
"DisplayName:Abp.Identity.Password.RequiredLength": "Required length", "DisplayName:Abp.Identity.Password.RequiredLength": "Required length",

3
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/es.json

@ -85,6 +85,7 @@
"Permission:Edit": "Editar", "Permission:Edit": "Editar",
"Permission:Delete": "Borrar", "Permission:Delete": "Borrar",
"Permission:ChangePermissions": "Cambiar permisos", "Permission:ChangePermissions": "Cambiar permisos",
"Permission:ManageRoles": "Gestionar roles",
"Permission:UserManagement": "Gestión de usuarios", "Permission:UserManagement": "Gestión de usuarios",
"Permission:UserLookup": "Busqueda de usuario", "Permission:UserLookup": "Busqueda de usuario",
"DisplayName:Abp.Identity.Password.RequiredLength": "Longitud requerida", "DisplayName:Abp.Identity.Password.RequiredLength": "Longitud requerida",
@ -127,4 +128,4 @@
"LockoutEndTime": "Hora de finalización del bloqueo", "LockoutEndTime": "Hora de finalización del bloqueo",
"FailedAccessCount": "Recuento de acceso fallido" "FailedAccessCount": "Recuento de acceso fallido"
} }
} }

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fa.json

@ -84,6 +84,7 @@
"Permission:Edit": "ویرایش", "Permission:Edit": "ویرایش",
"Permission:Delete": "حذف", "Permission:Delete": "حذف",
"Permission:ChangePermissions": "تغییر مجوزها", "Permission:ChangePermissions": "تغییر مجوزها",
"Permission:ManageRoles": "مدیریت نقشها و وظایف",
"Permission:UserManagement": "مدیریت کاربر", "Permission:UserManagement": "مدیریت کاربر",
"Permission:UserLookup": "جستجوی کاربر", "Permission:UserLookup": "جستجوی کاربر",
"DisplayName:Abp.Identity.Password.RequiredLength": "طول مورد نیاز", "DisplayName:Abp.Identity.Password.RequiredLength": "طول مورد نیاز",

3
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fi.json

@ -85,6 +85,7 @@
"Permission:Edit": "Muokkaus", "Permission:Edit": "Muokkaus",
"Permission:Delete": "Poisto", "Permission:Delete": "Poisto",
"Permission:ChangePermissions": "Muuta käyttöoikeuksia", "Permission:ChangePermissions": "Muuta käyttöoikeuksia",
"Permission:ManageRoles": "Hallitse rooleja",
"Permission:UserManagement": "Käyttäjien hallinta", "Permission:UserManagement": "Käyttäjien hallinta",
"Permission:UserLookup": "Käyttäjähaku", "Permission:UserLookup": "Käyttäjähaku",
"DisplayName:Abp.Identity.Password.RequiredLength": "Vaadittu pituus", "DisplayName:Abp.Identity.Password.RequiredLength": "Vaadittu pituus",
@ -127,4 +128,4 @@
"LockoutEndTime": "Lukituksen päättymisaika", "LockoutEndTime": "Lukituksen päättymisaika",
"FailedAccessCount": "Epäonnistuneet käyttöoikeudet" "FailedAccessCount": "Epäonnistuneet käyttöoikeudet"
} }
} }

3
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/fr.json

@ -85,6 +85,7 @@
"Permission:Edit": "Modifier", "Permission:Edit": "Modifier",
"Permission:Delete": "Supprimer", "Permission:Delete": "Supprimer",
"Permission:ChangePermissions": "Modifier les autorisations", "Permission:ChangePermissions": "Modifier les autorisations",
"Permission:ManageRoles": "Gérer les rôles",
"Permission:UserManagement": "Gestion des utilisateurs", "Permission:UserManagement": "Gestion des utilisateurs",
"Permission:UserLookup": "Recherche utilisateur", "Permission:UserLookup": "Recherche utilisateur",
"DisplayName:Abp.Identity.Password.RequiredLength": "Longueur requise", "DisplayName:Abp.Identity.Password.RequiredLength": "Longueur requise",
@ -127,4 +128,4 @@
"LockoutEndTime": "Heure de fin du verrouillage", "LockoutEndTime": "Heure de fin du verrouillage",
"FailedAccessCount": "Nombre d&#39;accès ayant échoué" "FailedAccessCount": "Nombre d&#39;accès ayant échoué"
} }
} }

3
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hi.json

@ -85,6 +85,7 @@
"Permission:Edit": "संपादित करें", "Permission:Edit": "संपादित करें",
"Permission:Delete": "हटाएं", "Permission:Delete": "हटाएं",
"Permission:ChangePermissions": "अनुमतियाँ बदलें", "Permission:ChangePermissions": "अनुमतियाँ बदलें",
"Permission:ManageRoles": "भूमिकाएँ प्रबंधित करें",
"Permission:UserManagement": "उपयोगकर्ता प्रबंधन", "Permission:UserManagement": "उपयोगकर्ता प्रबंधन",
"Permission:UserLookup": "उपयोगकर्ता की खोज", "Permission:UserLookup": "उपयोगकर्ता की खोज",
"DisplayName:Abp.Identity.Password.RequiredLength": "आवश्यक लंबाई", "DisplayName:Abp.Identity.Password.RequiredLength": "आवश्यक लंबाई",
@ -127,4 +128,4 @@
"LockoutEndTime": "तालाबंदी समाप्ति समय", "LockoutEndTime": "तालाबंदी समाप्ति समय",
"FailedAccessCount": "विफल पहुंच गणना" "FailedAccessCount": "विफल पहुंच गणना"
} }
} }

3
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hr.json

@ -85,6 +85,7 @@
"Permission:Edit": "Uredi", "Permission:Edit": "Uredi",
"Permission:Delete": "Izbrisati", "Permission:Delete": "Izbrisati",
"Permission:ChangePermissions": "Promjena dopuštenja", "Permission:ChangePermissions": "Promjena dopuštenja",
"Permission:ManageRoles": "Upravljanje ulogama",
"Permission:UserManagement": "Upravljanje korisnicima", "Permission:UserManagement": "Upravljanje korisnicima",
"Permission:UserLookup": "Traženje korisnika", "Permission:UserLookup": "Traženje korisnika",
"DisplayName:Abp.Identity.Password.RequiredLength": "Potrebna dužina", "DisplayName:Abp.Identity.Password.RequiredLength": "Potrebna dužina",
@ -127,4 +128,4 @@
"LockoutEndTime": "Vrijeme završetka zaključavanja", "LockoutEndTime": "Vrijeme završetka zaključavanja",
"FailedAccessCount": "Broj neuspjelih pristupa" "FailedAccessCount": "Broj neuspjelih pristupa"
} }
} }

3
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/hu.json

@ -85,6 +85,7 @@
"Permission:Edit": "Szerkesztés", "Permission:Edit": "Szerkesztés",
"Permission:Delete": "Törlés", "Permission:Delete": "Törlés",
"Permission:ChangePermissions": "Engedélyek módosítása", "Permission:ChangePermissions": "Engedélyek módosítása",
"Permission:ManageRoles": "Szerepkörök kezelése",
"Permission:UserManagement": "Felhasználókezelés", "Permission:UserManagement": "Felhasználókezelés",
"Permission:UserLookup": "Felhaszáló keresés", "Permission:UserLookup": "Felhaszáló keresés",
"DisplayName:Abp.Identity.Password.RequiredLength": "Szükséges hossz", "DisplayName:Abp.Identity.Password.RequiredLength": "Szükséges hossz",
@ -127,4 +128,4 @@
"LockoutEndTime": "A zárolás befejezési ideje", "LockoutEndTime": "A zárolás befejezési ideje",
"FailedAccessCount": "Sikertelen hozzáférések száma" "FailedAccessCount": "Sikertelen hozzáférések száma"
} }
} }

3
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/is.json

@ -85,6 +85,7 @@
"Permission:Edit": "Breyta", "Permission:Edit": "Breyta",
"Permission:Delete": "Eyða", "Permission:Delete": "Eyða",
"Permission:ChangePermissions": "Breyta heimildum", "Permission:ChangePermissions": "Breyta heimildum",
"Permission:ManageRoles": "Hlutverka umsjón",
"Permission:UserManagement": "Notanda umsjón", "Permission:UserManagement": "Notanda umsjón",
"Permission:UserLookup": "Leita að notanda", "Permission:UserLookup": "Leita að notanda",
"DisplayName:Abp.Identity.Password.RequiredLength": "Nauðsynleg lengdh", "DisplayName:Abp.Identity.Password.RequiredLength": "Nauðsynleg lengdh",
@ -127,4 +128,4 @@
"LockoutEndTime": "Lokatími lokunar", "LockoutEndTime": "Lokatími lokunar",
"FailedAccessCount": "Misheppnuð fjöldi aðgangs" "FailedAccessCount": "Misheppnuð fjöldi aðgangs"
} }
} }

3
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/it.json

@ -85,6 +85,7 @@
"Permission:Edit": "Modifica", "Permission:Edit": "Modifica",
"Permission:Delete": "Elimina", "Permission:Delete": "Elimina",
"Permission:ChangePermissions": "Modifica le autorizzazioni", "Permission:ChangePermissions": "Modifica le autorizzazioni",
"Permission:ManageRoles": "Gestione ruoli",
"Permission:UserManagement": "Gestione utenti", "Permission:UserManagement": "Gestione utenti",
"Permission:UserLookup": "Ricerca utente", "Permission:UserLookup": "Ricerca utente",
"DisplayName:Abp.Identity.Password.RequiredLength": "Lunghezza richiesta", "DisplayName:Abp.Identity.Password.RequiredLength": "Lunghezza richiesta",
@ -127,4 +128,4 @@
"LockoutEndTime": "Ora di fine del blocco", "LockoutEndTime": "Ora di fine del blocco",
"FailedAccessCount": "Conteggio accessi non riusciti" "FailedAccessCount": "Conteggio accessi non riusciti"
} }
} }

3
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/nl.json

@ -85,6 +85,7 @@
"Permission:Edit": "Verander", "Permission:Edit": "Verander",
"Permission:Delete": "Verwijder", "Permission:Delete": "Verwijder",
"Permission:ChangePermissions": "Wijzig de rechten", "Permission:ChangePermissions": "Wijzig de rechten",
"Permission:ManageRoles": "Beheer rollen",
"Permission:UserManagement": "Gebruikersbeheer", "Permission:UserManagement": "Gebruikersbeheer",
"Permission:UserLookup": "Gebruiker opzoeken", "Permission:UserLookup": "Gebruiker opzoeken",
"DisplayName:Abp.Identity.Password.RequiredLength": "Vereiste lengte", "DisplayName:Abp.Identity.Password.RequiredLength": "Vereiste lengte",
@ -127,4 +128,4 @@
"LockoutEndTime": "Eindtijd uitsluiting", "LockoutEndTime": "Eindtijd uitsluiting",
"FailedAccessCount": "Aantal mislukte toegangen" "FailedAccessCount": "Aantal mislukte toegangen"
} }
} }

3
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pl-PL.json

@ -85,6 +85,7 @@
"Permission:Edit": "Edytuj", "Permission:Edit": "Edytuj",
"Permission:Delete": "Usuń", "Permission:Delete": "Usuń",
"Permission:ChangePermissions": "Zmień uprawnienia", "Permission:ChangePermissions": "Zmień uprawnienia",
"Permission:ManageRoles": "Zarządzaj rolami",
"Permission:UserManagement": "Zarządzanie użytkownikami", "Permission:UserManagement": "Zarządzanie użytkownikami",
"Permission:UserLookup": "Wyszukiwanie użytkownika", "Permission:UserLookup": "Wyszukiwanie użytkownika",
"DisplayName:Abp.Identity.Password.RequiredLength": "Wymagana długość", "DisplayName:Abp.Identity.Password.RequiredLength": "Wymagana długość",
@ -127,4 +128,4 @@
"LockoutEndTime": "Czas zakończenia blokady", "LockoutEndTime": "Czas zakończenia blokady",
"FailedAccessCount": "Liczba nieudanych dostępów" "FailedAccessCount": "Liczba nieudanych dostępów"
} }
} }

3
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/pt-BR.json

@ -85,6 +85,7 @@
"Permission:Edit": "Editar", "Permission:Edit": "Editar",
"Permission:Delete": "Excluir", "Permission:Delete": "Excluir",
"Permission:ChangePermissions": "Alterar Permissões", "Permission:ChangePermissions": "Alterar Permissões",
"Permission:ManageRoles": "Gerenciar Perfis",
"Permission:UserManagement": "Usuários", "Permission:UserManagement": "Usuários",
"Permission:UserLookup": "Pesquisa de usuário", "Permission:UserLookup": "Pesquisa de usuário",
"DisplayName:Abp.Identity.Password.RequiredLength": "Comprimento requerido", "DisplayName:Abp.Identity.Password.RequiredLength": "Comprimento requerido",
@ -127,4 +128,4 @@
"LockoutEndTime": "Hora de término do bloqueio", "LockoutEndTime": "Hora de término do bloqueio",
"FailedAccessCount": "Contagem de acessos com falha" "FailedAccessCount": "Contagem de acessos com falha"
} }
} }

3
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ro-RO.json

@ -85,6 +85,7 @@
"Permission:Edit": "Editează", "Permission:Edit": "Editează",
"Permission:Delete": "Şterge", "Permission:Delete": "Şterge",
"Permission:ChangePermissions": "Schimbă permisiunile", "Permission:ChangePermissions": "Schimbă permisiunile",
"Permission:ManageRoles": "Administrarea rolurilor",
"Permission:UserManagement": "Administrarea utilizatorilor", "Permission:UserManagement": "Administrarea utilizatorilor",
"Permission:UserLookup": "Căutarea utilizatorilor", "Permission:UserLookup": "Căutarea utilizatorilor",
"DisplayName:Abp.Identity.Password.RequiredLength": "Lungimea necesară", "DisplayName:Abp.Identity.Password.RequiredLength": "Lungimea necesară",
@ -127,4 +128,4 @@
"LockoutEndTime": "Ora de încheiere a blocării", "LockoutEndTime": "Ora de încheiere a blocării",
"FailedAccessCount": "Număr de acces eșuat" "FailedAccessCount": "Număr de acces eșuat"
} }
} }

3
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ru.json

@ -85,6 +85,7 @@
"Permission:Edit": "Редактировать", "Permission:Edit": "Редактировать",
"Permission:Delete": "Удалить", "Permission:Delete": "Удалить",
"Permission:ChangePermissions": "Изменить разрешения", "Permission:ChangePermissions": "Изменить разрешения",
"Permission:ManageRoles": "Управление ролями",
"Permission:UserManagement": "Управление пользователями", "Permission:UserManagement": "Управление пользователями",
"Permission:UserLookup": "Поиск пользователя", "Permission:UserLookup": "Поиск пользователя",
"DisplayName:Abp.Identity.Password.RequiredLength": "Требуемая длина", "DisplayName:Abp.Identity.Password.RequiredLength": "Требуемая длина",
@ -127,4 +128,4 @@
"LockoutEndTime": "Время окончания блокировки", "LockoutEndTime": "Время окончания блокировки",
"FailedAccessCount": "Количество неудачных попыток доступа" "FailedAccessCount": "Количество неудачных попыток доступа"
} }
} }

3
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sk.json

@ -85,6 +85,7 @@
"Permission:Edit": "Upraviť", "Permission:Edit": "Upraviť",
"Permission:Delete": "Zmazať", "Permission:Delete": "Zmazať",
"Permission:ChangePermissions": "Zmeniť oprávnenia", "Permission:ChangePermissions": "Zmeniť oprávnenia",
"Permission:ManageRoles": "Správa rolí",
"Permission:UserManagement": "Správa používateľov", "Permission:UserManagement": "Správa používateľov",
"Permission:UserLookup": "Vyhľadať používateľov", "Permission:UserLookup": "Vyhľadať používateľov",
"DisplayName:Abp.Identity.Password.RequiredLength": "Požadovaná dĺžka", "DisplayName:Abp.Identity.Password.RequiredLength": "Požadovaná dĺžka",
@ -127,4 +128,4 @@
"LockoutEndTime": "Čas ukončenia uzamknutia", "LockoutEndTime": "Čas ukončenia uzamknutia",
"FailedAccessCount": "Počet neúspešných prístupov" "FailedAccessCount": "Počet neúspešných prístupov"
} }
} }

3
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sl.json

@ -85,6 +85,7 @@
"Permission:Edit": "Urejanje", "Permission:Edit": "Urejanje",
"Permission:Delete": "Brisanje", "Permission:Delete": "Brisanje",
"Permission:ChangePermissions": "Spreminjanje dovoljenj", "Permission:ChangePermissions": "Spreminjanje dovoljenj",
"Permission:ManageRoles": "Upravljanje vlog",
"Permission:UserManagement": "Upravljanje uporabnikov", "Permission:UserManagement": "Upravljanje uporabnikov",
"Permission:UserLookup": "Iskanje uporabnikov", "Permission:UserLookup": "Iskanje uporabnikov",
"DisplayName:Abp.Identity.Password.RequiredLength": "Zahtevana dolžina", "DisplayName:Abp.Identity.Password.RequiredLength": "Zahtevana dolžina",
@ -127,4 +128,4 @@
"LockoutEndTime": "Končni čas zaklepanja", "LockoutEndTime": "Končni čas zaklepanja",
"FailedAccessCount": "Število neuspešnih dostopov" "FailedAccessCount": "Število neuspešnih dostopov"
} }
} }

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/tr.json

@ -85,6 +85,7 @@
"Permission:Edit": "Düzenleme", "Permission:Edit": "Düzenleme",
"Permission:Delete": "Silme", "Permission:Delete": "Silme",
"Permission:ChangePermissions": "İzinleri değiştirme", "Permission:ChangePermissions": "İzinleri değiştirme",
"Permission:ManageRoles": "Rolleri yönetme",
"Permission:UserManagement": "Kullanıcı yönetimi", "Permission:UserManagement": "Kullanıcı yönetimi",
"Permission:UserLookup": "Kullanıcı sorgulama", "Permission:UserLookup": "Kullanıcı sorgulama",
"DisplayName:Abp.Identity.Password.RequiredLength": "Uzunluk gerekli", "DisplayName:Abp.Identity.Password.RequiredLength": "Uzunluk gerekli",

3
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/vi.json

@ -85,6 +85,7 @@
"Permission:Edit": "Sửa", "Permission:Edit": "Sửa",
"Permission:Delete": "Xóa", "Permission:Delete": "Xóa",
"Permission:ChangePermissions": "Thay đổi quyền", "Permission:ChangePermissions": "Thay đổi quyền",
"Permission:ManageRoles": "Quản lý vai trò",
"Permission:UserManagement": "Quản lý người dùng", "Permission:UserManagement": "Quản lý người dùng",
"Permission:UserLookup": "Tra cứu người dùng", "Permission:UserLookup": "Tra cứu người dùng",
"DisplayName:Abp.Identity.Password.RequiredLength": "Chiều dài yêu cầu", "DisplayName:Abp.Identity.Password.RequiredLength": "Chiều dài yêu cầu",
@ -127,4 +128,4 @@
"LockoutEndTime": "Thời gian kết thúc khóa", "LockoutEndTime": "Thời gian kết thúc khóa",
"FailedAccessCount": "Số lượt truy cập không thành công" "FailedAccessCount": "Số lượt truy cập không thành công"
} }
} }

3
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hans.json

@ -85,6 +85,7 @@
"Permission:Edit": "编辑", "Permission:Edit": "编辑",
"Permission:Delete": "删除", "Permission:Delete": "删除",
"Permission:ChangePermissions": "更改权限", "Permission:ChangePermissions": "更改权限",
"Permission:ManageRoles": "管理角色",
"Permission:UserManagement": "用户管理", "Permission:UserManagement": "用户管理",
"Permission:UserLookup": "用户查询", "Permission:UserLookup": "用户查询",
"DisplayName:Abp.Identity.Password.RequiredLength": "要求长度", "DisplayName:Abp.Identity.Password.RequiredLength": "要求长度",
@ -127,4 +128,4 @@
"LockoutEndTime": "锁定结束时间", "LockoutEndTime": "锁定结束时间",
"FailedAccessCount": "访问失败次数" "FailedAccessCount": "访问失败次数"
} }
} }

1
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/zh-Hant.json

@ -85,6 +85,7 @@
"Permission:Edit": "編輯", "Permission:Edit": "編輯",
"Permission:Delete": "刪除", "Permission:Delete": "刪除",
"Permission:ChangePermissions": "更改權限", "Permission:ChangePermissions": "更改權限",
"Permission:ManageRoles": "管理角色",
"Permission:UserManagement": "使用者管理", "Permission:UserManagement": "使用者管理",
"Permission:UserLookup": "使用者查詢", "Permission:UserLookup": "使用者查詢",
"DisplayName:Abp.Identity.Password.RequiredLength": "長度需符合", "DisplayName:Abp.Identity.Password.RequiredLength": "長度需符合",

37
modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/EditModal.cshtml

@ -66,25 +66,28 @@
else else
{ {
<abp-input type="@propertyInfo.GetInputType()" <abp-input type="@propertyInfo.GetInputType()"
asp-for="UserInfo.ExtraProperties[propertyInfo.Name]" asp-for="UserInfo.ExtraProperties[propertyInfo.Name]"
label="@propertyInfo.GetLocalizedDisplayName(StringLocalizerFactory)" label="@propertyInfo.GetLocalizedDisplayName(StringLocalizerFactory)"
asp-format="@propertyInfo.GetInputFormatOrNull()" asp-format="@propertyInfo.GetInputFormatOrNull()"
value="@propertyInfo.GetInputValueOrNull(Model.UserInfo.GetProperty(propertyInfo.Name))" /> value="@propertyInfo.GetInputValueOrNull(Model.UserInfo.GetProperty(propertyInfo.Name))" />
} }
} }
} }
</div> </div>
</abp-tab> </abp-tab>
<abp-tab title="@L["Roles"].Value"> @if (Model.Roles.Any())
<div class="mt-3" > {
@for (var i = 0; i < Model.Roles.Length; i++) <abp-tab title="@L["Roles"].Value">
{ <div class="mt-3" >
var role = Model.Roles[i]; @for (var i = 0; i < Model.Roles.Length; i++)
<abp-input abp-id-name="@Model.Roles[i].IsAssigned" asp-for="@role.IsAssigned" label="@role.Name" /> {
<input abp-id-name="@Model.Roles[i].Name" asp-for="@role.Name" /> var role = Model.Roles[i];
} <abp-input abp-id-name="@Model.Roles[i].IsAssigned" asp-for="@role.IsAssigned" label="@role.Name" />
</div> <input abp-id-name="@Model.Roles[i].Name" asp-for="@role.Name" />
</abp-tab> }
</div>
</abp-tab>
}
<abp-tab title="@L["Details"].Value"> <abp-tab title="@L["Details"].Value">
<div class="mt-3"> <div class="mt-3">
<div class="mb-3"> <div class="mb-3">
@ -120,17 +123,17 @@
{ {
const string DateTimeFormat = "MMMM dd, yyyy — HH:mm"; const string DateTimeFormat = "MMMM dd, yyyy — HH:mm";
const string DefaultEmptyValue = "-"; const string DefaultEmptyValue = "-";
static string ConvertUserFriendlyFormat(DateTime? dateTime) static string ConvertUserFriendlyFormat(DateTime? dateTime)
{ {
return dateTime == null ? DefaultEmptyValue : dateTime.Value.ToUniversalTime().ToString(DateTimeFormat); return dateTime == null ? DefaultEmptyValue : dateTime.Value.ToUniversalTime().ToString(DateTimeFormat);
} }
static string ConvertUserFriendlyFormat(DateTimeOffset? dateTime) static string ConvertUserFriendlyFormat(DateTimeOffset? dateTime)
{ {
return dateTime == null ? DefaultEmptyValue : dateTime.Value.UtcDateTime.ToString(DateTimeFormat); return dateTime == null ? DefaultEmptyValue : dateTime.Value.UtcDateTime.ToString(DateTimeFormat);
} }
static string ConvertUserFriendlyFormat(string value) static string ConvertUserFriendlyFormat(string value)
{ {
return value.IsNullOrWhiteSpace() ? DefaultEmptyValue : value; return value.IsNullOrWhiteSpace() ? DefaultEmptyValue : value;

25
modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Users/EditModal.cshtml.cs

@ -6,6 +6,7 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Volo.Abp.Auditing; using Volo.Abp.Auditing;
using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Dtos;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Entities;
using Volo.Abp.ObjectExtending; using Volo.Abp.ObjectExtending;
using Volo.Abp.Validation; using Volo.Abp.Validation;
@ -19,23 +20,29 @@ public class EditModalModel : IdentityPageModel
[BindProperty] [BindProperty]
public AssignedRoleViewModel[] Roles { get; set; } public AssignedRoleViewModel[] Roles { get; set; }
public DetailViewModel Detail { get; set; } public DetailViewModel Detail { get; set; }
protected IIdentityUserAppService IdentityUserAppService { get; } protected IIdentityUserAppService IdentityUserAppService { get; }
protected IPermissionChecker PermissionChecker { get; }
public bool IsEditCurrentUser { get; set; } public bool IsEditCurrentUser { get; set; }
public EditModalModel(IIdentityUserAppService identityUserAppService) public EditModalModel(IIdentityUserAppService identityUserAppService, IPermissionChecker permissionChecker)
{ {
IdentityUserAppService = identityUserAppService; IdentityUserAppService = identityUserAppService;
PermissionChecker = permissionChecker;
} }
public virtual async Task<IActionResult> OnGetAsync(Guid id) public virtual async Task<IActionResult> OnGetAsync(Guid id)
{ {
var user = await IdentityUserAppService.GetAsync(id); var user = await IdentityUserAppService.GetAsync(id);
UserInfo = ObjectMapper.Map<IdentityUserDto, UserInfoViewModel>(user); UserInfo = ObjectMapper.Map<IdentityUserDto, UserInfoViewModel>(user);
Roles = ObjectMapper.Map<IReadOnlyList<IdentityRoleDto>, AssignedRoleViewModel[]>((await IdentityUserAppService.GetAssignableRolesAsync()).Items); if (await PermissionChecker.IsGrantedAsync(IdentityPermissions.Users.ManageRoles))
{
Roles = ObjectMapper.Map<IReadOnlyList<IdentityRoleDto>, AssignedRoleViewModel[]>((await IdentityUserAppService.GetAssignableRolesAsync()).Items);
}
IsEditCurrentUser = CurrentUser.Id == id; IsEditCurrentUser = CurrentUser.Id == id;
var userRoleNames = (await IdentityUserAppService.GetRolesAsync(UserInfo.Id)).Items.Select(r => r.Name).ToList(); var userRoleNames = (await IdentityUserAppService.GetRolesAsync(UserInfo.Id)).Items.Select(r => r.Name).ToList();
@ -46,15 +53,15 @@ public class EditModalModel : IdentityPageModel
role.IsAssigned = true; role.IsAssigned = true;
} }
} }
Detail = ObjectMapper.Map<IdentityUserDto, DetailViewModel>(user); Detail = ObjectMapper.Map<IdentityUserDto, DetailViewModel>(user);
Detail.CreatedBy = await GetUserNameOrNullAsync(user.CreatorId); Detail.CreatedBy = await GetUserNameOrNullAsync(user.CreatorId);
Detail.ModifiedBy = await GetUserNameOrNullAsync(user.LastModifierId); Detail.ModifiedBy = await GetUserNameOrNullAsync(user.LastModifierId);
return Page(); return Page();
} }
private async Task<string> GetUserNameOrNullAsync(Guid? userId) private async Task<string> GetUserNameOrNullAsync(Guid? userId)
{ {
if (!userId.HasValue) if (!userId.HasValue)
@ -126,14 +133,14 @@ public class EditModalModel : IdentityPageModel
{ {
public string CreatedBy { get; set; } public string CreatedBy { get; set; }
public DateTime? CreationTime { get; set; } public DateTime? CreationTime { get; set; }
public string ModifiedBy { get; set; } public string ModifiedBy { get; set; }
public DateTime? LastModificationTime { get; set; } public DateTime? LastModificationTime { get; set; }
public DateTimeOffset? LastPasswordChangeTime { get; set; } public DateTimeOffset? LastPasswordChangeTime { get; set; }
public DateTimeOffset? LockoutEnd { get; set; } public DateTimeOffset? LockoutEnd { get; set; }
public int AccessFailedCount { get; set; } public int AccessFailedCount { get; set; }
} }
} }

Loading…
Cancel
Save