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 9827656af3..0b12a65227 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
@@ -68,36 +68,58 @@
-
- @L["DisplayName:UserName"]
-
-
-
- @L["DisplayName:Name"]
-
-
-
- @L["DisplayName:Surname"]
-
-
-
- @L["DisplayName:Password"]
-
-
-
- @L["DisplayName:Email"]
-
-
-
- @L["DisplayName:PhoneNumber"]
-
-
-
- @L["DisplayName:LockoutEnabled"]
-
-
- @L["DisplayName:TwoFactorEnabled"]
-
+
+
+ @L["UserInformations"]
+ @L["Roles"]
+
+
+
+
+ @L["DisplayName:UserName"]
+
+
+
+ @L["DisplayName:Name"]
+
+
+
+ @L["DisplayName:Surname"]
+
+
+
+ @L["DisplayName:Password"]
+
+
+
+ @L["DisplayName:Email"]
+
+
+
+ @L["DisplayName:PhoneNumber"]
+
+
+
+ @L["DisplayName:LockoutEnabled"]
+
+
+ @L["DisplayName:TwoFactorEnabled"]
+
+
+
+ @if (NewEntityRoles != null)
+ {
+ @foreach (var role in NewEntityRoles)
+ {
+
+
+ @role.Name
+
+ }
+ }
+
+
+
@@ -116,36 +138,59 @@
-
- @L["DisplayName:UserName"]
-
-
-
- @L["DisplayName:Name"]
-
-
-
- @L["DisplayName:Surname"]
-
-
-
- @L["DisplayName:Password"]
-
-
-
- @L["DisplayName:Email"]
-
-
-
- @L["DisplayName:PhoneNumber"]
-
-
-
- @L["DisplayName:LockoutEnabled"]
-
-
- @L["DisplayName:TwoFactorEnabled"]
-
+
+
+
+ @L["UserInformations"]
+ @L["Roles"]
+
+
+
+
+ @L["DisplayName:UserName"]
+
+
+
+ @L["DisplayName:Name"]
+
+
+
+ @L["DisplayName:Surname"]
+
+
+
+ @L["DisplayName:Password"]
+
+
+
+ @L["DisplayName:Email"]
+
+
+
+ @L["DisplayName:PhoneNumber"]
+
+
+
+ @L["DisplayName:LockoutEnabled"]
+
+
+ @L["DisplayName:TwoFactorEnabled"]
+
+
+
+ @if (EditEntityRoles != null)
+ {
+ @foreach (var role in EditEntityRoles)
+ {
+
+
+ @role.Name
+
+ }
+ }
+
+
+
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 3f5970570e..cb616a90d3 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
@@ -1,4 +1,9 @@
-using Volo.Abp.PermissionManagement.Blazor.Components;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Volo.Abp.PermissionManagement.Blazor.Components;
+using Volo.Abp.Threading;
namespace Volo.Abp.Identity.Blazor.Pages.Identity
{
@@ -8,9 +13,68 @@ namespace Volo.Abp.Identity.Blazor.Pages.Identity
private PermissionManagementModal PermissionManagementModal;
+ protected IReadOnlyList Roles;
+
+ protected AssignedRoleViewModel[] NewEntityRoles;
+
+ protected AssignedRoleViewModel[] EditEntityRoles;
+
public UserManagement()
{
ObjectMapperContext = typeof(AbpIdentityBlazorModule);
}
+
+ protected override async Task OnInitializedAsync()
+ {
+ await base.OnInitializedAsync();
+
+ Roles = (await AppService.GetAssignableRolesAsync()).Items;
+ }
+
+ protected override void OpenCreateModal()
+ {
+
+ NewEntityRoles = Roles.Select(x => new AssignedRoleViewModel
+ {
+ Name = x.Name,
+ IsAssigned = x.IsDefault
+ }).ToArray();
+
+ base.OpenCreateModal();
+ }
+
+ protected override Task CreateEntityAsync()
+ {
+ NewEntity.RoleNames = NewEntityRoles.Where(x => x.IsAssigned).Select(x => x.Name).ToArray();
+
+ return base.CreateEntityAsync();
+ }
+
+ protected override async Task OpenEditModalAsync(Guid id)
+ {
+ var userRoleNames = (await AppService.GetRolesAsync(id)).Items.Select(r => r.Name).ToList();
+
+ EditEntityRoles = Roles.Select(x => new AssignedRoleViewModel
+ {
+ Name = x.Name,
+ IsAssigned = userRoleNames.Contains(x.Name)
+ }).ToArray();
+
+ await base.OpenEditModalAsync(id);
+ }
+
+ protected override Task UpdateEntityAsync()
+ {
+ EditingEntity.RoleNames = EditEntityRoles.Where(x => x.IsAssigned).Select(x => x.Name).ToArray();
+
+ return base.UpdateEntityAsync();
+ }
+ }
+
+ public class AssignedRoleViewModel
+ {
+ public string Name { get; set; }
+
+ public bool IsAssigned { get; set; }
}
}