Browse Source

Work on permission re-design.

pull/208/head
Halil İbrahim Kalkan 9 years ago
parent
commit
b50cee6bd0
  1. 29
      Volo.Abp.sln
  2. 2
      src/AbpDesk/AbpDesk.Web.Mvc/AbpDeskWebMvcModule.cs
  3. 2
      src/Volo.Abp.Ddd/Volo/Abp/Application/Services/ApplicationService.cs
  4. 21
      src/Volo.Abp.Permissions.Application.Contracts/Volo.Abp.Permissions.Application.Contracts.csproj
  5. 15
      src/Volo.Abp.Permissions.Application.Contracts/Volo/Abp/Permissions/AbpPermissionsDomainSharedModule.cs
  6. 16
      src/Volo.Abp.Permissions.Application.Contracts/Volo/Abp/Permissions/IPermissionAppService.cs
  7. 15
      src/Volo.Abp.Permissions.Application.Contracts/Volo/Abp/Permissions/PermissionGrantInfoDto.cs
  8. 9
      src/Volo.Abp.Permissions.Application.Contracts/Volo/Abp/Permissions/UpdatePermissionDto.cs
  9. 7
      src/Volo.Abp.Permissions.Application.Contracts/Volo/Abp/Permissions/UpdatePermissionsDto.cs
  10. 21
      src/Volo.Abp.Permissions.Application/Volo.Abp.Permissions.Application.csproj
  11. 15
      src/Volo.Abp.Permissions.Application/Volo/Abp/Permissions/AbpPermissionsApplicationModule.cs
  12. 34
      src/Volo.Abp.Permissions.Application/Volo/Abp/Permissions/PermissionAppService.cs
  13. 2
      src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/IPermissionManager.cs
  14. 4
      src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/PermissionManager.cs
  15. 16
      src/Volo.Abp.Permissions.Web/AbpPermissionsWebAutoMapperProfile.cs
  16. 45
      src/Volo.Abp.Permissions.Web/AbpPermissionsWebModule.cs
  17. 15
      src/Volo.Abp.Permissions.Web/Localization/Resources/AbpPermissions/IdentityResource.cs
  18. 18
      src/Volo.Abp.Permissions.Web/Localization/Resources/AbpPermissions/en.json
  19. 25
      src/Volo.Abp.Permissions.Web/Localization/Resources/AbpPermissions/tr.json
  20. 30
      src/Volo.Abp.Permissions.Web/Pages/Permissions/PermissionManagementModal.cshtml
  21. 33
      src/Volo.Abp.Permissions.Web/Pages/Permissions/PermissionManagementModal.cshtml.cs
  22. 27
      src/Volo.Abp.Permissions.Web/Properties/launchSettings.json
  23. 30
      src/Volo.Abp.Permissions.Web/Volo.Abp.Permissions.Web.csproj
  24. 5
      src/Volo.Abp.Permissions/Volo/Abp/Permissions/IPermissionChecker.cs
  25. 15
      src/Volo.Abp.Permissions/Volo/Abp/Permissions/PermissionChecker.cs
  26. 16
      test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/PermissionManager_User_Tests.cs

29
Volo.Abp.sln

@ -258,18 +258,24 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Settings.Domain.Sh
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Abp.Settings", "Abp.Settings", "{D62B8D43-B8D9-4FC6-97E2-DC54CD765915}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Permissions", "src\Volo.Abp.Permissions\Volo.Abp.Permissions.csproj", "{0FDD21F9-9E73-4DB5-8356-A110D3FBDB1D}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Permissions", "src\Volo.Abp.Permissions\Volo.Abp.Permissions.csproj", "{0FDD21F9-9E73-4DB5-8356-A110D3FBDB1D}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Abp.Permissions", "Abp.Permissions", "{055F4AC0-46C4-4E99-89CD-0F30D4A97382}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Permissions.Domain", "src\Volo.Abp.Permissions.Domain\Volo.Abp.Permissions.Domain.csproj", "{D77E0662-8404-43C5-9C46-6289EA207A40}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Permissions.Domain", "src\Volo.Abp.Permissions.Domain\Volo.Abp.Permissions.Domain.csproj", "{D77E0662-8404-43C5-9C46-6289EA207A40}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Permissions.Domain.Shared", "src\Volo.Abp.Permissions.Domain.Shared\Volo.Abp.Permissions.Domain.Shared.csproj", "{E4D0326C-515D-46FA-AF7E-1AC32155BD03}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Permissions.Domain.Shared", "src\Volo.Abp.Permissions.Domain.Shared\Volo.Abp.Permissions.Domain.Shared.csproj", "{E4D0326C-515D-46FA-AF7E-1AC32155BD03}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Permissions.EntityFrameworkCore", "src\Volo.Abp.Permissions.EntityFrameworkCore\Volo.Abp.Permissions.EntityFrameworkCore.csproj", "{2300E155-2621-4FCF-BD44-B61BA5A92B82}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Permissions.EntityFrameworkCore", "src\Volo.Abp.Permissions.EntityFrameworkCore\Volo.Abp.Permissions.EntityFrameworkCore.csproj", "{2300E155-2621-4FCF-BD44-B61BA5A92B82}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Permissions.Tests", "test\Volo.Abp.Permissions.Tests\Volo.Abp.Permissions.Tests.csproj", "{7B4D2BEB-DE3E-4533-8CD4-7BBB30414647}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Permissions.Web", "src\Volo.Abp.Permissions.Web\Volo.Abp.Permissions.Web.csproj", "{8859CFE4-BC7F-4F29-B6B5-A9457435CC32}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Permissions.Application.Contracts", "src\Volo.Abp.Permissions.Application.Contracts\Volo.Abp.Permissions.Application.Contracts.csproj", "{837ABFF5-66EE-486A-8023-8DD3EE7D7D96}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Permissions.Application", "src\Volo.Abp.Permissions.Application\Volo.Abp.Permissions.Application.csproj", "{90197499-CBB6-4C8C-90E6-8718CD755C04}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -704,6 +710,18 @@ Global
{7B4D2BEB-DE3E-4533-8CD4-7BBB30414647}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7B4D2BEB-DE3E-4533-8CD4-7BBB30414647}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7B4D2BEB-DE3E-4533-8CD4-7BBB30414647}.Release|Any CPU.Build.0 = Release|Any CPU
{8859CFE4-BC7F-4F29-B6B5-A9457435CC32}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8859CFE4-BC7F-4F29-B6B5-A9457435CC32}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8859CFE4-BC7F-4F29-B6B5-A9457435CC32}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8859CFE4-BC7F-4F29-B6B5-A9457435CC32}.Release|Any CPU.Build.0 = Release|Any CPU
{837ABFF5-66EE-486A-8023-8DD3EE7D7D96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{837ABFF5-66EE-486A-8023-8DD3EE7D7D96}.Debug|Any CPU.Build.0 = Debug|Any CPU
{837ABFF5-66EE-486A-8023-8DD3EE7D7D96}.Release|Any CPU.ActiveCfg = Release|Any CPU
{837ABFF5-66EE-486A-8023-8DD3EE7D7D96}.Release|Any CPU.Build.0 = Release|Any CPU
{90197499-CBB6-4C8C-90E6-8718CD755C04}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{90197499-CBB6-4C8C-90E6-8718CD755C04}.Debug|Any CPU.Build.0 = Debug|Any CPU
{90197499-CBB6-4C8C-90E6-8718CD755C04}.Release|Any CPU.ActiveCfg = Release|Any CPU
{90197499-CBB6-4C8C-90E6-8718CD755C04}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -835,6 +853,9 @@ Global
{E4D0326C-515D-46FA-AF7E-1AC32155BD03} = {055F4AC0-46C4-4E99-89CD-0F30D4A97382}
{2300E155-2621-4FCF-BD44-B61BA5A92B82} = {055F4AC0-46C4-4E99-89CD-0F30D4A97382}
{7B4D2BEB-DE3E-4533-8CD4-7BBB30414647} = {37087D1B-3693-4E96-983D-A69F210BDE53}
{8859CFE4-BC7F-4F29-B6B5-A9457435CC32} = {055F4AC0-46C4-4E99-89CD-0F30D4A97382}
{837ABFF5-66EE-486A-8023-8DD3EE7D7D96} = {055F4AC0-46C4-4E99-89CD-0F30D4A97382}
{90197499-CBB6-4C8C-90E6-8718CD755C04} = {055F4AC0-46C4-4E99-89CD-0F30D4A97382}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5}

2
src/AbpDesk/AbpDesk.Web.Mvc/AbpDeskWebMvcModule.cs

@ -79,6 +79,8 @@ namespace AbpDesk.Web.Mvc
var authentication = services.AddAuthentication();
services.AddAuthorization();
authentication.AddIdentityServerAuthentication("Bearer", options =>
{
options.Authority = "http://localhost:59980";

2
src/Volo.Abp.Ddd/Volo/Abp/Application/Services/ApplicationService.cs

@ -16,5 +16,7 @@ namespace Volo.Abp.Application.Services
- AbpSession
- ...
*/
//TODO: Add IPermissionChecker (but before split layers of DDD!)
}
}

21
src/Volo.Abp.Permissions.Application.Contracts/Volo.Abp.Permissions.Application.Contracts.csproj

@ -0,0 +1,21 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<AssemblyName>Volo.Abp.Permissions.Application.Contracts</AssemblyName>
<PackageId>Volo.Abp.Permissions.Application.Contracts</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Volo.Abp.Ddd\Volo.Abp.Ddd.csproj" />
<ProjectReference Include="..\Volo.Abp.Permissions.Domain.Shared\Volo.Abp.Permissions.Domain.Shared.csproj" />
</ItemGroup>
</Project>

15
src/Volo.Abp.Permissions.Application.Contracts/Volo/Abp/Permissions/AbpPermissionsDomainSharedModule.cs

@ -0,0 +1,15 @@
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Modularity;
namespace Volo.Abp.Permissions
{
[DependsOn(typeof(AbpDddModule))]
[DependsOn(typeof(AbpPermissionsDomainSharedModule))]
public class AbpPermissionsApplicationContractsModule : AbpModule
{
public override void ConfigureServices(IServiceCollection services)
{
services.AddAssemblyOf<AbpPermissionsDomainSharedModule>();
}
}
}

16
src/Volo.Abp.Permissions.Application.Contracts/Volo/Abp/Permissions/IPermissionAppService.cs

@ -0,0 +1,16 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using JetBrains.Annotations;
using Volo.Abp.Application.Services;
namespace Volo.Abp.Permissions
{
public interface IPermissionAppService : IApplicationService
{
Task<PermissionGrantInfoDto> GetAsync([NotNull] string name, [NotNull] string providerName, [NotNull] string providerKey);
Task<List<PermissionGrantInfoDto>> GetListAsync([NotNull] string providerName, [NotNull] string providerKey);
Task UpdateAsync([NotNull] string providerName, [NotNull] string providerKey, UpdatePermissionsDto input);
}
}

15
src/Volo.Abp.Permissions.Application.Contracts/Volo/Abp/Permissions/PermissionGrantInfoDto.cs

@ -0,0 +1,15 @@
namespace Volo.Abp.Permissions
{
public class PermissionGrantInfoDto
{
public string Name { get; set; }
public string ParentName { get; set; }
public bool IsGranted { get; set; }
public string ProviderName { get; set; }
public string ProviderKey { get; set; }
}
}

9
src/Volo.Abp.Permissions.Application.Contracts/Volo/Abp/Permissions/UpdatePermissionDto.cs

@ -0,0 +1,9 @@
namespace Volo.Abp.Permissions
{
public class UpdatePermissionDto
{
public string Name { get; set; }
public bool IsGranted { get; set; }
}
}

7
src/Volo.Abp.Permissions.Application.Contracts/Volo/Abp/Permissions/UpdatePermissionsDto.cs

@ -0,0 +1,7 @@
namespace Volo.Abp.Permissions
{
public class UpdatePermissionsDto
{
public UpdatePermissionDto[] Permissions { get; set; }
}
}

21
src/Volo.Abp.Permissions.Application/Volo.Abp.Permissions.Application.csproj

@ -0,0 +1,21 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<AssemblyName>Volo.Abp.Permissions.Application</AssemblyName>
<PackageId>Volo.Abp.Permissions.Application</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Volo.Abp.Permissions.Application.Contracts\Volo.Abp.Permissions.Application.Contracts.csproj" />
<ProjectReference Include="..\Volo.Abp.Permissions.Domain\Volo.Abp.Permissions.Domain.csproj" />
</ItemGroup>
</Project>

15
src/Volo.Abp.Permissions.Application/Volo/Abp/Permissions/AbpPermissionsApplicationModule.cs

@ -0,0 +1,15 @@
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Modularity;
namespace Volo.Abp.Permissions
{
[DependsOn(typeof(AbpPermissionsDomainModule))]
[DependsOn(typeof(AbpPermissionsApplicationContractsModule))]
public class AbpPermissionsApplicationModule : AbpModule
{
public override void ConfigureServices(IServiceCollection services)
{
services.AddAssemblyOf<AbpPermissionsApplicationModule>();
}
}
}

34
src/Volo.Abp.Permissions.Application/Volo/Abp/Permissions/PermissionAppService.cs

@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;
namespace Volo.Abp.Permissions
{
public class PermissionAppService : ApplicationService, IPermissionAppService
{
private readonly IPermissionManager _permissionManager;
public PermissionAppService(IPermissionManager permissionManager)
{
_permissionManager = permissionManager;
}
public async Task<PermissionGrantInfoDto> GetAsync(string name, string providerName, string providerKey)
{
var result = await _permissionManager.IsGrantedAsync(name, providerName, providerKey);
throw new NotImplementedException();
}
public async Task<List<PermissionGrantInfoDto>> GetListAsync(string providerName, string providerKey)
{
throw new NotImplementedException();
}
public async Task UpdateAsync(string providerName, string providerKey, UpdatePermissionsDto input)
{
throw new NotImplementedException();
}
}
}

2
src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/IPermissionManager.cs

@ -10,7 +10,7 @@ namespace Volo.Abp.Permissions
Task<List<string>> GetAllGrantedAsync([NotNull] string providerName, [NotNull] string providerKey);
Task GrantAsync( [NotNull] string providerName, [NotNull] string providerKey, [NotNull] string name);
Task GrantAsync([NotNull] string name, [NotNull] string providerName, [NotNull] string providerKey);
Task RevokeAsync([NotNull] string name, [NotNull] string providerName, [NotNull] string providerKey);
}

4
src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/PermissionManager.cs

@ -41,11 +41,11 @@ namespace Volo.Abp.Permissions
.ToList();
}
public async Task GrantAsync(string providerName, string providerKey, string name)
public async Task GrantAsync(string name, string providerName, string providerKey)
{
Check.NotNull(name, nameof(name));
Check.NotNull(providerName, nameof(providerName));
Check.NotNull(providerKey, nameof(providerKey));
Check.NotNull(name, nameof(name));
if (await IsGrantedAsync(providerName, providerKey, name))
{

16
src/Volo.Abp.Permissions.Web/AbpPermissionsWebAutoMapperProfile.cs

@ -0,0 +1,16 @@
using AutoMapper;
namespace Volo.Abp.Permissions.Web
{
public class AbpPermissionsWebAutoMapperProfile : Profile
{
public AbpPermissionsWebAutoMapperProfile()
{
}
private void CreatePermissionMappings()
{
//...
}
}
}

45
src/Volo.Abp.Permissions.Web/AbpPermissionsWebModule.cs

@ -0,0 +1,45 @@
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.AspNetCore.Mvc.Localization;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap;
using Volo.Abp.AutoMapper;
using Volo.Abp.Localization;
using Volo.Abp.Modularity;
using Volo.Abp.Permissions.Web.Localization.Resources.AbpPermissions;
using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.Permissions.Web
{
[DependsOn(typeof(AbpPermissionsApplicationContractsModule))]
[DependsOn(typeof(AbpAspNetCoreMvcUiBootstrapModule))]
[DependsOn(typeof(AbpAutoMapperModule))]
public class AbpPermissionsWebModule : AbpModule
{
public override void PreConfigureServices(IServiceCollection services)
{
services.PreConfigure<AbpMvcDataAnnotationsLocalizationOptions>(options =>
{
options.AddAssemblyResource(typeof(AbpPermissionsResource));
});
}
public override void ConfigureServices(IServiceCollection services)
{
services.AddAssemblyOf<AbpPermissionsWebModule>();
services.Configure<VirtualFileSystemOptions>(options =>
{
options.FileSets.AddEmbedded<AbpPermissionsWebModule>("Volo.Abp.Permissions.Web");
});
services.Configure<AbpLocalizationOptions>(options =>
{
options.Resources.AddVirtualJson<AbpPermissionsResource>("en", "/Localization/Resources/AbpPermissions");
});
services.Configure<AbpAutoMapperOptions>(options =>
{
options.AddProfile<AbpPermissionsWebAutoMapperProfile>(validate: true);
});
}
}
}

15
src/Volo.Abp.Permissions.Web/Localization/Resources/AbpPermissions/IdentityResource.cs

@ -0,0 +1,15 @@
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Localization.Resources.AbpBootstrap;
using Volo.Abp.Localization;
using Volo.Abp.Localization.Resources.AbpValidation;
namespace Volo.Abp.Permissions.Web.Localization.Resources.AbpPermissions
{
[InheritResource(
typeof(AbpValidationResource),
typeof(AbpBootstrapResource))]
[ShortLocalizationResourceName("AbpPermissions")]
public class AbpPermissionsResource
{
}
}

18
src/Volo.Abp.Permissions.Web/Localization/Resources/AbpPermissions/en.json

@ -0,0 +1,18 @@
{
"culture": "en",
"texts": {
"Users": "Users",
"NewUser": "New user",
"UserName": "User name",
"EmailAddress": "Email address",
"PhoneNumber": "Phone number",
"UserInformations": "User informations",
"Roles": "Roles",
"Password": "Password",
"UserDeletionConfirmationMessage": "User '{0}' will be deleted. Do you confirm that?",
"TwoFactorVerification": "Two factor verification",
"AccountLockoutOnFailedLoginAttempts": "Locking account after failed login attempts",
"NewRole": "New role",
"RoleName": "Role name"
}
}

25
src/Volo.Abp.Permissions.Web/Localization/Resources/AbpPermissions/tr.json

@ -0,0 +1,25 @@
{
"culture": "tr",
"texts": {
"Users": "Kullanıcılar",
"NewUser": "Yeni kullanıcı",
"Actions": "İşlemler",
"UserName": "Kullanıcı adı",
"EmailAddress": "E-posta adresi",
"PhoneNumber": "Telefon numarası",
"UserInformations": "Kullanıcı bilgileri",
"Roles": "Roller",
"Close": "Kapat",
"Delete": "Sil",
"Edit": "Düzenle",
"Save": "Kaydet",
"Password": "Şifre",
"UserDeletionConfirmationMessage": "{0} kullanıcısı silinecektir. Onaylıyor musunuz?",
"TwoFactorVerification": "İki aşamalı doğrumala",
"AccountLockoutOnFailedLoginAttempts": "Başarısız giriş denemeleri sonrası hesabı kilitleme",
"NewRole": "Yeni rol",
"RoleName": "Rol adı",
"CreationTime": "Oluşturma zamanı"
}
}

30
src/Volo.Abp.Permissions.Web/Pages/Permissions/PermissionManagementModal.cshtml

@ -0,0 +1,30 @@
@page
@using Volo.Abp.Permissions.Web.Pages.Permissions
@model PermissionManagementModal
@{
Layout = null;
}
<form method="post" asp-page="/Identity/Roles/CreateModal">
<abp-modal>
<abp-modal-header title="@L["NewRole"]"></abp-modal-header>
<abp-modal-body>
<div class="form-group">
<label asp-for="RoleModel.Name"></label>
<input asp-for="RoleModel.Name" class="form-control"/>
<span asp-validation-for="RoleModel.Name" class="text-danger"></span>
</div>
<div asp-validation-summary="All" class="text-danger"></div>
</abp-modal-body>
<abp-modal-footer></abp-modal-footer>
</abp-modal>
</form>

33
src/Volo.Abp.Permissions.Web/Pages/Permissions/PermissionManagementModal.cshtml.cs

@ -0,0 +1,33 @@
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc.RazorPages;
namespace Volo.Abp.Permissions.Web.Pages.Permissions
{
public class PermissionManagementModal : AbpPageModel
{
[BindProperty]
public PerminssionInfoModel[] Permissions { get; set; }
public async Task OnGetAsync()
{
}
public async Task<IActionResult> OnPostAsync()
{
ValidateModel();
return NoContent();
}
public class PerminssionInfoModel
{
[Required]
//[StringLength(IdentityRoleConsts.MaxNameLength)]
[Display(Name = "RoleName")]
public string Name { get; set; }
}
}
}

27
src/Volo.Abp.Permissions.Web/Properties/launchSettings.json

@ -0,0 +1,27 @@
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:49258/",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"Volo.Abp.Permissions.Web": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:49259/"
}
}
}

30
src/Volo.Abp.Permissions.Web/Volo.Abp.Permissions.Web.csproj

@ -0,0 +1,30 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Import Project="..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<AssemblyName>Volo.Abp.Permissions.Web</AssemblyName>
<PackageId>Volo.Abp.Permissions.Web</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
<OutputType>Library</OutputType>
</PropertyGroup>
<ItemGroup>
<EmbeddedResource Include="wwwroot\**\*.*" />
<EmbeddedResource Include="Pages\**\*.cshtml" />
<EmbeddedResource Include="Localization\Resources\**\*.json" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Remove="Localization\Resources\AbpPermissions\en.json" />
<EmbeddedResource Remove="Localization\Resources\AbpPermissions\tr.json" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Volo.Abp.AspNetCore.Mvc.UI.Bootstrap\Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.csproj" />
<ProjectReference Include="..\Volo.Abp.Permissions.Application.Contracts\Volo.Abp.Permissions.Application.Contracts.csproj" />
<ProjectReference Include="..\Volo.Abp.AutoMapper\Volo.Abp.AutoMapper.csproj" />
</ItemGroup>
</Project>

5
src/Volo.Abp.Permissions/Volo/Abp/Permissions/IPermissionChecker.cs

@ -1,5 +1,4 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Threading.Tasks;
using JetBrains.Annotations;
namespace Volo.Abp.Permissions
@ -7,7 +6,5 @@ namespace Volo.Abp.Permissions
public interface IPermissionChecker
{
Task<PermissionGrantInfo> CheckAsync([NotNull]string name);
Task<List<PermissionGrantInfo>> GetAllAsync();
}
}

15
src/Volo.Abp.Permissions/Volo/Abp/Permissions/PermissionChecker.cs

@ -8,7 +8,7 @@ using Volo.Abp.DependencyInjection;
namespace Volo.Abp.Permissions
{
public class PermissionChecker : IPermissionChecker, ITransientDependency
public class PermissionChecker : IPermissionChecker, ISingletonDependency
{
protected IPermissionDefinitionManager PermissionDefinitionManager { get; }
@ -41,19 +41,6 @@ namespace Volo.Abp.Permissions
return GetPermissionGrantInfo(permission);
}
public virtual async Task<List<PermissionGrantInfo>> GetAllAsync()
{
var permissionDefinitions = PermissionDefinitionManager.GetAll();
var permissionGrantInfos = new Dictionary<string, PermissionGrantInfo>();
foreach (var permission in permissionDefinitions)
{
permissionGrantInfos[permission.Name] = await GetPermissionGrantInfo(permission);
}
return permissionGrantInfos.Values.ToList();
}
protected virtual async Task<PermissionGrantInfo> GetPermissionGrantInfo(PermissionDefinition permission)
{
foreach (var provider in Providers)

16
test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/PermissionManager_User_Tests.cs

@ -86,22 +86,6 @@ namespace Volo.Abp.Permissions
// permission.ShouldContain(p => p.Name == "MyPermission1" && !p.IsGranted);
//}
[Fact]
public async Task Should_Get_List_Of_Granted_Permissions_For_Current_User()
{
//User1
_currentUserId = PermissionTestDataBuilder.User1Id;
var permission = await _permissionChecker.GetAllAsync();
permission.Count.ShouldBeGreaterThan(0);
permission.ShouldContain(p => p.Name == "MyPermission1" && p.IsGranted && p.ProviderName == UserPermissionValueProvider.ProviderName);
//User2
_currentUserId = PermissionTestDataBuilder.User2Id;
permission = await _permissionChecker.GetAllAsync();
permission.Count.ShouldBeGreaterThan(0);
permission.ShouldContain(p => p.Name == "MyPermission1" && !p.IsGranted);
}
//[Fact]
//public async Task Should_Grant_Permission_For_A_User()
//{

Loading…
Cancel
Save