Browse Source

implement entity action and table column extensibility in identity module.

pull/7686/head
Ilkay Ilknur 6 years ago
parent
commit
e63080ac95
  1. 57
      modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/RoleManagement.razor
  2. 101
      modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/RoleManagement.razor.cs
  3. 53
      modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/UserManagement.razor
  4. 71
      modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/UserManagement.razor.cs

57
modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/RoleManagement.razor

@ -1,15 +1,15 @@
@page "/identity/roles" @page "/identity/roles"
@attribute [Authorize( IdentityPermissions.Roles.Default )] @attribute [Authorize(IdentityPermissions.Roles.Default)]
@using Volo.Abp.Identity @using Volo.Abp.Identity
@using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Authorization
@using Microsoft.AspNetCore.Components.Forms @using Microsoft.AspNetCore.Components.Forms
@using Volo.Abp.PermissionManagement.Blazor.Components @using Volo.Abp.PermissionManagement.Blazor.Components
@using Microsoft.Extensions.Localization @using Microsoft.Extensions.Localization
@using Volo.Abp.Identity.Localization @using Volo.Abp.Identity.Localization
@using Volo.Abp.AspNetCore.Components.Extensibility
@inject AbpBlazorMessageLocalizerHelper<IdentityResource> LH @inject AbpBlazorMessageLocalizerHelper<IdentityResource> LH
@inherits AbpCrudPageBase<IIdentityRoleAppService, IdentityRoleDto, Guid, GetIdentityRolesInput, IdentityRoleCreateDto, IdentityRoleUpdateDto> @inherits AbpCrudPageBase<IIdentityRoleAppService, IdentityRoleDto, Guid, GetIdentityRolesInput, IdentityRoleCreateDto, IdentityRoleUpdateDto>
<Card> <Card>
<CardHeader> <CardHeader>
@* ************************* PAGE HEADER ************************* *@ @* ************************* PAGE HEADER ************************* *@
@ -18,7 +18,7 @@
<Heading Size="HeadingSize.Is1">@L["Roles"]</Heading> <Heading Size="HeadingSize.Is1">@L["Roles"]</Heading>
</Column> </Column>
<Column ColumnSize="ColumnSize.IsAuto"> <Column ColumnSize="ColumnSize.IsAuto">
@if ( HasCreatePermission ) @if (HasCreatePermission)
{ {
<Button Color="Color.Primary" Clicked="OpenCreateModalAsync"> <Button Color="Color.Primary" Clicked="OpenCreateModalAsync">
<Icon Margin="Margin.Is1.FromRight" Name="IconName.Add"></Icon>@L["NewRole"] <Icon Margin="Margin.Is1.FromRight" Name="IconName.Add"></Icon>@L["NewRole"]
@ -29,47 +29,14 @@
</CardHeader> </CardHeader>
<CardBody> <CardBody>
@* ************************* DATA GRID ************************* *@ @* ************************* DATA GRID ************************* *@
<DataGrid TItem="IdentityRoleDto" <AbpDataGrid TItem="IdentityRoleDto"
Data="Entities" Data="Entities"
ReadData="OnDataGridReadAsync" ReadData="OnDataGridReadAsync"
TotalItems="TotalCount" TotalItems="TotalCount"
ShowPager="true" ShowPager="true"
PageSize="PageSize"> PageSize="PageSize"
<DataGridColumns> Page="typeof(RoleManagement)">
<DataGridEntityActionsColumn TItem="IdentityRoleDto" @ref="@EntityActionsColumn"> </AbpDataGrid>
<DisplayTemplate>
<EntityActions TItem="IdentityRoleDto" EntityActionsColumn="@EntityActionsColumn">
<EntityAction TItem="IdentityRoleDto"
RequiredPolicy="@UpdatePolicyName"
Clicked="() => OpenEditModalAsync(context)"
Text="@L["Edit"]"></EntityAction>
<EntityAction TItem="IdentityRoleDto"
RequiredPolicy="@ManagePermissionsPolicyName"
Clicked="() => PermissionManagementModal.OpenAsync(PermissionProviderName, context.Name)"
Text="@L["Permissions"]"></EntityAction>
<EntityAction TItem="IdentityRoleDto"
RequiredPolicy="@DeletePolicyName"
Clicked="() => DeleteEntityAsync(context)"
ConfirmationMessage="()=> GetDeleteConfirmationMessage(context)"
Text="@L["Delete"]"></EntityAction>
</EntityActions>
</DisplayTemplate>
</DataGridEntityActionsColumn>
<DataGridColumn TItem="IdentityRoleDto" Field="@nameof(IdentityRoleDto.Name)" Caption="@L["RoleName"].Value">
<DisplayTemplate>
@(context.Name)
@if (context.IsDefault)
{
<Badge Color="Color.Primary" Margin="Margin.Is1.FromLeft">@L["DisplayName:IsDefault"]</Badge>
}
@if (context.IsPublic)
{
<Badge Color="Color.Light" Margin="Margin.Is1.FromLeft">@L["DisplayName:IsPublic"]</Badge>
}
</DisplayTemplate>
</DataGridColumn>
</DataGridColumns>
</DataGrid>
</CardBody> </CardBody>
</Card> </Card>
@ -152,4 +119,4 @@
@if (HasManagePermissionsPermission) @if (HasManagePermissionsPermission)
{ {
<PermissionManagementModal @ref="PermissionManagementModal" /> <PermissionManagementModal @ref="PermissionManagementModal" />
} }

101
modules/identity/src/Volo.Abp.Identity.Blazor/Pages/Identity/RoleManagement.razor.cs

@ -1,7 +1,13 @@
using System; using System;
using System.Collections.Generic;
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.Extensibility;
using Volo.Abp.AspNetCore.Components.Extensibility.EntityActions;
using Volo.Abp.AspNetCore.Components.Extensibility.TableColumns;
using Volo.Abp.Identity.Localization; using Volo.Abp.Identity.Localization;
using Volo.Abp.PermissionManagement.Blazor.Components; using Volo.Abp.PermissionManagement.Blazor.Components;
@ -12,9 +18,9 @@ namespace Volo.Abp.Identity.Blazor.Pages.Identity
protected const string PermissionProviderName = "R"; protected const string PermissionProviderName = "R";
protected PermissionManagementModal PermissionManagementModal; protected PermissionManagementModal PermissionManagementModal;
protected string ManagePermissionsPolicyName; protected string ManagePermissionsPolicyName;
protected bool HasManagePermissionsPermission { get; set; } protected bool HasManagePermissionsPermission { get; set; }
public RoleManagement() public RoleManagement()
@ -28,6 +34,97 @@ namespace Volo.Abp.Identity.Blazor.Pages.Identity
ManagePermissionsPolicyName = IdentityPermissions.Roles.ManagePermissions; ManagePermissionsPolicyName = IdentityPermissions.Roles.ManagePermissions;
} }
protected override ValueTask SetEntityActionsAsync()
{
UIExtensions.Instance
.EntityActions
.Get<RoleManagement>()
.AddIfNotContains(new EntityAction[]
{
new EntityAction
{
Text = L["Edit"],
RequiredPolicy = UpdatePolicyName,
Clicked = async (data) => await OpenEditModalAsync(data.As<IdentityRoleDto>())
},
new EntityAction
{
Text = L["Permissions"],
RequiredPolicy = ManagePermissionsPolicyName,
Clicked = async (data) =>
{
await PermissionManagementModal.OpenAsync(PermissionProviderName,
data.As<IdentityRoleDto>().Name);
}
},
new EntityAction
{
Text = L["Delete"],
RequiredPolicy = DeletePolicyName,
Clicked = async (data) => await DeleteEntityAsync(data.As<IdentityRoleDto>()),
ConfirmationMessage = (data) => GetDeleteConfirmationMessage(data.As<IdentityRoleDto>())
}
});
return ValueTask.CompletedTask;
}
protected override ValueTask SetTableColumnsAsync()
{
UIExtensions.Instance
.TableColumns
.Get<RoleManagement>()
.AddIfNotContains(new TableColumn[]
{
new TableColumn
{
Title = L["Actions"],
Actions = UIExtensions.Instance.EntityActions.Get<RoleManagement>()
},
new TableColumn
{
Title = L["RoleName"],
Data = nameof(IdentityRoleDto.Name),
Render = (data) =>
{
return (builder) =>
{
var role = data.As<IdentityRoleDto>();
builder.AddContent(0, role.Name);
if (role.IsDefault)
{
builder.OpenComponent<Badge>();
builder.AddAttribute(0, "Color", Color.Primary);
builder.AddAttribute(1, "Margin", Margin.Is1.FromLeft);
builder.AddAttribute(2, "ChildContent",
(RenderFragment) ((builder2) =>
{
builder2.AddContent(3, L["DisplayName:IsDefault"]);
}));
builder.CloseComponent();
}
if (role.IsPublic)
{
builder.OpenComponent<Badge>();
builder.AddAttribute(0, "Color", Color.Light);
builder.AddAttribute(1, "Margin", Margin.Is1.FromLeft);
builder.AddAttribute(2, "ChildContent",
(RenderFragment) ((builder2) =>
{
builder2.AddContent(3, L["DisplayName:IsPublic"]);
}));
builder.CloseComponent();
}
};
}
},
});
return ValueTask.CompletedTask;
}
protected override async Task SetPermissionsAsync() protected override async Task SetPermissionsAsync()
{ {
await base.SetPermissionsAsync(); await base.SetPermissionsAsync();

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

@ -1,9 +1,7 @@
@page "/identity/users" @page "/identity/users"
@attribute [Authorize( IdentityPermissions.Users.Default )] @attribute [Authorize( IdentityPermissions.Users.Default )]
@using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Authorization
@using Microsoft.AspNetCore.Components.Forms
@using Volo.Abp.PermissionManagement.Blazor.Components @using Volo.Abp.PermissionManagement.Blazor.Components
@using Microsoft.Extensions.Localization
@using Volo.Abp.Identity.Localization @using Volo.Abp.Identity.Localization
@inject AbpBlazorMessageLocalizerHelper<IdentityResource> LH @inject AbpBlazorMessageLocalizerHelper<IdentityResource> LH
@ -28,49 +26,14 @@
</CardHeader> </CardHeader>
<CardBody> <CardBody>
@* ************************* DATA GRID ************************* *@ @* ************************* DATA GRID ************************* *@
<DataGrid TItem="IdentityUserDto" <AbpDataGrid TItem="IdentityUserDto"
Data="Entities" Data="Entities"
ReadData="OnDataGridReadAsync" ReadData="OnDataGridReadAsync"
TotalItems="TotalCount" TotalItems="TotalCount"
ShowPager="true" ShowPager="true"
PageSize="PageSize"> PageSize="PageSize"
<DataGridColumns> Page="typeof(UserManagement)">
<DataGridEntityActionsColumn TItem="IdentityUserDto" @ref="@EntityActionsColumn"> </AbpDataGrid>
<DisplayTemplate>
<EntityActions TItem="IdentityUserDto" EntityActionsColumn="@EntityActionsColumn">
<EntityAction TItem="IdentityUserDto"
RequiredPolicy="@UpdatePolicyName"
Clicked="() => OpenEditModalAsync(context)"
Text="@L["Edit"]" />
<EntityAction TItem="IdentityUserDto"
RequiredPolicy="@ManagePermissionsPolicyName"
Clicked="() => PermissionManagementModal.OpenAsync(PermissionProviderName, context.Id.ToString())"
Text="@L["Permissions"]" />
<EntityAction TItem="IdentityUserDto"
RequiredPolicy="@DeletePolicyName"
Clicked="() => DeleteEntityAsync(context)"
ConfirmationMessage="()=>GetDeleteConfirmationMessage(context)"
Text="@L["Delete"]" />
</EntityActions>
</DisplayTemplate>
</DataGridEntityActionsColumn>
<DataGridColumn TItem="IdentityUserDto" Field="@nameof(IdentityUserDto.UserName)" Caption="@L["UserName"].Value">
<DisplayTemplate>
@(context.As<IdentityUserDto>().UserName)
</DisplayTemplate>
</DataGridColumn>
<DataGridColumn TItem="IdentityUserDto" Field="@nameof(IdentityUserDto.Email)" Caption="@L["Email"].Value">
<DisplayTemplate>
@(context.As<IdentityUserDto>().Email)
</DisplayTemplate>
</DataGridColumn>
<DataGridColumn TItem="IdentityUserDto" Field="@nameof(IdentityUserDto.PhoneNumber)" Caption="@L["PhoneNumber"].Value">
<DisplayTemplate>
@(context.As<IdentityUserDto>().PhoneNumber)
</DisplayTemplate>
</DataGridColumn>
</DataGridColumns>
</DataGrid>
</CardBody> </CardBody>
</Card> </Card>

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

@ -4,6 +4,10 @@ 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.Extensibility;
using Volo.Abp.AspNetCore.Components.Extensibility.EntityActions;
using Volo.Abp.AspNetCore.Components.Extensibility.TableColumns;
using Volo.Abp.Identity.Localization; using Volo.Abp.Identity.Localization;
using Volo.Abp.PermissionManagement.Blazor.Components; using Volo.Abp.PermissionManagement.Blazor.Components;
@ -104,6 +108,73 @@ namespace Volo.Abp.Identity.Blazor.Pages.Identity
{ {
return string.Format(L["UserDeletionConfirmationMessage"], entity.UserName); return string.Format(L["UserDeletionConfirmationMessage"], entity.UserName);
} }
protected override ValueTask SetEntityActionsAsync()
{
UIExtensions.Instance
.EntityActions
.Get<UserManagement>()
.AddIfNotContains(new EntityAction[]
{
new EntityAction
{
Text = L["Edit"],
RequiredPolicy = UpdatePolicyName,
Clicked = async (data) => await OpenEditModalAsync(data.As<IdentityUserDto>())
},
new EntityAction
{
Text = L["Permissions"],
RequiredPolicy = ManagePermissionsPolicyName,
Clicked = async (data) =>
{
await PermissionManagementModal.OpenAsync(PermissionProviderName,
data.As<IdentityUserDto>().Id.ToString());
}
},
new EntityAction
{
Text = L["Delete"],
RequiredPolicy = DeletePolicyName,
Clicked = async (data) => await DeleteEntityAsync(data.As<IdentityUserDto>()),
ConfirmationMessage = (data) => GetDeleteConfirmationMessage(data.As<IdentityUserDto>())
}
});
return ValueTask.CompletedTask;
}
protected override ValueTask SetTableColumnsAsync()
{
UIExtensions.Instance
.TableColumns
.Get<UserManagement>()
.AddIfNotContains(new TableColumn[]
{
new TableColumn
{
Title = L["Actions"],
Actions = UIExtensions.Instance.EntityActions.Get<UserManagement>()
},
new TableColumn
{
Title = L["UserName"],
Data = nameof(IdentityUserDto.UserName),
},
new TableColumn
{
Title = L["Email"],
Data = nameof(IdentityUserDto.Email),
},
new TableColumn
{
Title = L["PhoneNumber"],
Data = nameof(IdentityUserDto.PhoneNumber),
}
});
return ValueTask.CompletedTask;
}
} }
public class AssignedRoleViewModel public class AssignedRoleViewModel

Loading…
Cancel
Save