diff --git a/Volo.Abp.sln b/Volo.Abp.sln
index 33b57a38e5..b8e408ed89 100644
--- a/Volo.Abp.sln
+++ b/Volo.Abp.sln
@@ -260,6 +260,14 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Abp.Settings", "Abp.Setting
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "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}"
+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}"
+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}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -678,6 +686,18 @@ Global
{0FDD21F9-9E73-4DB5-8356-A110D3FBDB1D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0FDD21F9-9E73-4DB5-8356-A110D3FBDB1D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0FDD21F9-9E73-4DB5-8356-A110D3FBDB1D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D77E0662-8404-43C5-9C46-6289EA207A40}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {D77E0662-8404-43C5-9C46-6289EA207A40}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D77E0662-8404-43C5-9C46-6289EA207A40}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {D77E0662-8404-43C5-9C46-6289EA207A40}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E4D0326C-515D-46FA-AF7E-1AC32155BD03}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E4D0326C-515D-46FA-AF7E-1AC32155BD03}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E4D0326C-515D-46FA-AF7E-1AC32155BD03}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E4D0326C-515D-46FA-AF7E-1AC32155BD03}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2300E155-2621-4FCF-BD44-B61BA5A92B82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2300E155-2621-4FCF-BD44-B61BA5A92B82}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2300E155-2621-4FCF-BD44-B61BA5A92B82}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2300E155-2621-4FCF-BD44-B61BA5A92B82}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -804,6 +824,10 @@ Global
{27F990E2-6820-4159-B54A-59C8ADED8D28} = {D62B8D43-B8D9-4FC6-97E2-DC54CD765915}
{D62B8D43-B8D9-4FC6-97E2-DC54CD765915} = {3B481ACC-5BB3-4189-880C-5F7A27EAEB70}
{0FDD21F9-9E73-4DB5-8356-A110D3FBDB1D} = {4C753F64-0C93-4D65-96C2-A40893AFC1E8}
+ {055F4AC0-46C4-4E99-89CD-0F30D4A97382} = {3B481ACC-5BB3-4189-880C-5F7A27EAEB70}
+ {D77E0662-8404-43C5-9C46-6289EA207A40} = {055F4AC0-46C4-4E99-89CD-0F30D4A97382}
+ {E4D0326C-515D-46FA-AF7E-1AC32155BD03} = {055F4AC0-46C4-4E99-89CD-0F30D4A97382}
+ {2300E155-2621-4FCF-BD44-B61BA5A92B82} = {055F4AC0-46C4-4E99-89CD-0F30D4A97382}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5}
diff --git a/src/Volo.Abp.Permissions.Domain.Shared/Volo.Abp.Permissions.Domain.Shared.csproj b/src/Volo.Abp.Permissions.Domain.Shared/Volo.Abp.Permissions.Domain.Shared.csproj
new file mode 100644
index 0000000000..fef7b37c72
--- /dev/null
+++ b/src/Volo.Abp.Permissions.Domain.Shared/Volo.Abp.Permissions.Domain.Shared.csproj
@@ -0,0 +1,20 @@
+
+
+
+
+
+ netstandard2.0
+ Volo.Abp.Permissions.Domain.Shared
+ Volo.Abp.Permissions.Domain.Shared
+ $(AssetTargetFallback);portable-net45+win8+wp8+wpa81;
+ false
+ false
+ false
+
+
+
+
+
+
+
+
diff --git a/src/Volo.Abp.Permissions.Domain.Shared/Volo/Abp/Permissions/AbpPermissionsDomainSharedModule.cs b/src/Volo.Abp.Permissions.Domain.Shared/Volo/Abp/Permissions/AbpPermissionsDomainSharedModule.cs
new file mode 100644
index 0000000000..b813ae517e
--- /dev/null
+++ b/src/Volo.Abp.Permissions.Domain.Shared/Volo/Abp/Permissions/AbpPermissionsDomainSharedModule.cs
@@ -0,0 +1,13 @@
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.Modularity;
+
+namespace Volo.Abp.Permissions
+{
+ public class AbpPermissionsDomainSharedModule : AbpModule
+ {
+ public override void ConfigureServices(IServiceCollection services)
+ {
+ services.AddAssemblyOf();
+ }
+ }
+}
diff --git a/src/Volo.Abp.Permissions.Domain.Shared/Volo/Abp/Permissions/PermissionGrantConsts.cs b/src/Volo.Abp.Permissions.Domain.Shared/Volo/Abp/Permissions/PermissionGrantConsts.cs
new file mode 100644
index 0000000000..e6fa7b129f
--- /dev/null
+++ b/src/Volo.Abp.Permissions.Domain.Shared/Volo/Abp/Permissions/PermissionGrantConsts.cs
@@ -0,0 +1,11 @@
+namespace Volo.Abp.Permissions
+{
+ public static class PermissionGrantConsts
+ {
+ public const int MaxNameLength = 128;
+
+ public const int MaxProviderNameLength = 64;
+
+ public const int MaxProviderKeyLength = 64;
+ }
+}
diff --git a/src/Volo.Abp.Permissions.Domain/Volo.Abp.Permissions.Domain.csproj b/src/Volo.Abp.Permissions.Domain/Volo.Abp.Permissions.Domain.csproj
new file mode 100644
index 0000000000..a8dd53e12c
--- /dev/null
+++ b/src/Volo.Abp.Permissions.Domain/Volo.Abp.Permissions.Domain.csproj
@@ -0,0 +1,22 @@
+
+
+
+
+
+ netstandard2.0
+ Volo.Abp.Permissions.Domain
+ Volo.Abp.Permissions.Domain
+ $(AssetTargetFallback);portable-net45+win8+wp8+wpa81;
+ false
+ false
+ false
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/AbpPermissionsDomainModule.cs b/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/AbpPermissionsDomainModule.cs
new file mode 100644
index 0000000000..def72d7cf8
--- /dev/null
+++ b/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/AbpPermissionsDomainModule.cs
@@ -0,0 +1,16 @@
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.Modularity;
+
+namespace Volo.Abp.Permissions
+{
+ [DependsOn(typeof(AbpPermissionsModule))]
+ [DependsOn(typeof(AbpDddModule))]
+ [DependsOn(typeof(AbpPermissionsDomainSharedModule))]
+ public class AbpPermissionsDomainModule : AbpModule
+ {
+ public override void ConfigureServices(IServiceCollection services)
+ {
+ services.AddAssemblyOf();
+ }
+ }
+}
diff --git a/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/AbpSettingsConsts.cs b/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/AbpSettingsConsts.cs
new file mode 100644
index 0000000000..ce9186f737
--- /dev/null
+++ b/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/AbpSettingsConsts.cs
@@ -0,0 +1,9 @@
+namespace Volo.Abp.Permissions
+{
+ public static class AbpPermissionConsts
+ {
+ public const string DefaultDbTablePrefix = "Abp";
+
+ public const string DefaultDbSchema = null;
+ }
+}
diff --git a/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/IPermissionGrantRepository.cs b/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/IPermissionGrantRepository.cs
new file mode 100644
index 0000000000..4ec344d30a
--- /dev/null
+++ b/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/IPermissionGrantRepository.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Volo.Abp.Domain.Repositories;
+
+namespace Volo.Abp.Permissions
+{
+ public interface IPermissionGrantRepository : IBasicRepository
+ {
+ Task FindAsync(string name, string providerName, string providerKey);
+
+ Task> GetListAsync(string providerName, string providerKey);
+ }
+}
\ No newline at end of file
diff --git a/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/PermissionGrant.cs b/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/PermissionGrant.cs
new file mode 100644
index 0000000000..a075e5ae4c
--- /dev/null
+++ b/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/PermissionGrant.cs
@@ -0,0 +1,41 @@
+using System;
+using JetBrains.Annotations;
+using Volo.Abp.Domain.Entities;
+
+namespace Volo.Abp.Permissions
+{
+ public class PermissionGrant : Entity
+ {
+ [NotNull]
+ public virtual string Name { get; protected set; }
+
+ public virtual bool IsGranted { get; internal set; }
+
+ [CanBeNull]
+ public virtual string ProviderName { get; protected set; }
+
+ [CanBeNull]
+ public virtual string ProviderKey { get; protected set; }
+
+ protected PermissionGrant()
+ {
+
+ }
+
+ public PermissionGrant(
+ Guid id,
+ [NotNull] string name,
+ bool isGranted,
+ [CanBeNull] string providerName = null,
+ [CanBeNull] string providerKey = null)
+ {
+ Check.NotNull(name, nameof(name));
+
+ Id = id;
+ Name = name;
+ IsGranted = isGranted;
+ ProviderName = providerName;
+ ProviderKey = providerKey;
+ }
+ }
+}
diff --git a/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/PermissionStore.cs b/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/PermissionStore.cs
new file mode 100644
index 0000000000..cc6e18036c
--- /dev/null
+++ b/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/PermissionStore.cs
@@ -0,0 +1,53 @@
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Volo.Abp.DependencyInjection;
+
+namespace Volo.Abp.Permissions
+{
+ public class PermissionStore : AbpServiceBase, IPermissionStore, ITransientDependency
+ {
+ private readonly IPermissionGrantRepository _permissionGrantRepository;
+
+ public PermissionStore(IPermissionGrantRepository permissionGrantRepository)
+ {
+ _permissionGrantRepository = permissionGrantRepository;
+ }
+
+ public async Task IsGrantedAsync(string name, string providerName, string providerKey)
+ {
+ var permissionGrant = await _permissionGrantRepository.FindAsync(name, providerName, providerKey);
+ return permissionGrant?.IsGranted;
+ }
+
+ public async Task SetAsync(string name, bool isGranted, string providerName, string providerKey)
+ {
+ var permissionGrant = await _permissionGrantRepository.FindAsync(name, providerName, providerKey);
+ if (permissionGrant == null)
+ {
+ permissionGrant = new PermissionGrant(GuidGenerator.Create(), name, isGranted, providerName, providerKey);
+ await _permissionGrantRepository.InsertAsync(permissionGrant);
+ }
+ else
+ {
+ permissionGrant.IsGranted = isGranted;
+ await _permissionGrantRepository.UpdateAsync(permissionGrant);
+ }
+ }
+
+ public async Task> GetListAsync(string providerName, string providerKey)
+ {
+ var permissionGrants = await _permissionGrantRepository.GetListAsync(providerName, providerKey);
+ return permissionGrants.Select(s => new PermissionGrantInfo(s.Name, s.IsGranted)).ToList();
+ }
+
+ public async Task DeleteAsync(string name, string providerName, string providerKey)
+ {
+ var permissionGrant = await _permissionGrantRepository.FindAsync(name, providerName, providerKey);
+ if (permissionGrant != null)
+ {
+ await _permissionGrantRepository.DeleteAsync(permissionGrant);
+ }
+ }
+ }
+}
diff --git a/src/Volo.Abp.Permissions.EntityFrameworkCore/Volo.Abp.Permissions.EntityFrameworkCore.csproj b/src/Volo.Abp.Permissions.EntityFrameworkCore/Volo.Abp.Permissions.EntityFrameworkCore.csproj
new file mode 100644
index 0000000000..f2fd254586
--- /dev/null
+++ b/src/Volo.Abp.Permissions.EntityFrameworkCore/Volo.Abp.Permissions.EntityFrameworkCore.csproj
@@ -0,0 +1,21 @@
+
+
+
+
+
+ netstandard2.0
+ Volo.Abp.Permissions.EntityFrameworkCore
+ Volo.Abp.Permissions.EntityFrameworkCore
+ $(AssetTargetFallback);portable-net45+win8+wp8+wpa81;
+ false
+ false
+ false
+
+
+
+
+
+
+
+
+
diff --git a/src/Volo.Abp.Permissions.EntityFrameworkCore/Volo/Abp/Permissions/EntityFrameworkCore/AbpPermissionsDbContext.cs b/src/Volo.Abp.Permissions.EntityFrameworkCore/Volo/Abp/Permissions/EntityFrameworkCore/AbpPermissionsDbContext.cs
new file mode 100644
index 0000000000..589f2d1b81
--- /dev/null
+++ b/src/Volo.Abp.Permissions.EntityFrameworkCore/Volo/Abp/Permissions/EntityFrameworkCore/AbpPermissionsDbContext.cs
@@ -0,0 +1,28 @@
+using Microsoft.EntityFrameworkCore;
+using Volo.Abp.Data;
+using Volo.Abp.EntityFrameworkCore;
+
+namespace Volo.Abp.Permissions.EntityFrameworkCore
+{
+ [ConnectionStringName("AbpPermissions")]
+ public class AbpPermissionsDbContext : AbpDbContext, IAbpPermissionsDbContext
+ {
+ public static string TablePrefix { get; set; } = AbpPermissionConsts.DefaultDbTablePrefix;
+
+ public static string Schema { get; set; } = AbpPermissionConsts.DefaultDbSchema;
+
+ public DbSet PermissionGrants { get; set; }
+
+ public AbpPermissionsDbContext(DbContextOptions options)
+ : base(options)
+ {
+
+ }
+
+ protected override void OnModelCreating(ModelBuilder builder)
+ {
+ base.OnModelCreating(builder);
+ builder.ConfigureAbpPermissions(TablePrefix, Schema);
+ }
+ }
+}
diff --git a/src/Volo.Abp.Permissions.EntityFrameworkCore/Volo/Abp/Permissions/EntityFrameworkCore/AbpPermissionsDbContextModelBuilderExtensions.cs b/src/Volo.Abp.Permissions.EntityFrameworkCore/Volo/Abp/Permissions/EntityFrameworkCore/AbpPermissionsDbContextModelBuilderExtensions.cs
new file mode 100644
index 0000000000..fe6c5f1c42
--- /dev/null
+++ b/src/Volo.Abp.Permissions.EntityFrameworkCore/Volo/Abp/Permissions/EntityFrameworkCore/AbpPermissionsDbContextModelBuilderExtensions.cs
@@ -0,0 +1,33 @@
+using JetBrains.Annotations;
+using Microsoft.EntityFrameworkCore;
+
+namespace Volo.Abp.Permissions.EntityFrameworkCore
+{
+ public static class AbpPermissionsDbContextModelBuilderExtensions
+ {
+ public static void ConfigureAbpPermissions(
+ [NotNull] this ModelBuilder builder,
+ [CanBeNull] string tablePrefix = AbpPermissionConsts.DefaultDbTablePrefix,
+ [CanBeNull] string schema = AbpPermissionConsts.DefaultDbSchema)
+ {
+ Check.NotNull(builder, nameof(builder));
+
+ if (tablePrefix == null)
+ {
+ tablePrefix = "";
+ }
+
+ builder.Entity(b =>
+ {
+ b.ToTable(tablePrefix + "Permissions", schema);
+
+ b.Property(x => x.Name).HasMaxLength(PermissionGrantConsts.MaxNameLength).IsRequired();
+ b.Property(x => x.IsGranted).IsRequired().HasDefaultValue(true);
+ b.Property(x => x.ProviderName).HasMaxLength(PermissionGrantConsts.MaxProviderNameLength);
+ b.Property(x => x.ProviderKey).HasMaxLength(PermissionGrantConsts.MaxProviderKeyLength);
+
+ b.HasIndex(x => new {x.Name, x.ProviderName, x.ProviderKey});
+ });
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Volo.Abp.Permissions.EntityFrameworkCore/Volo/Abp/Permissions/EntityFrameworkCore/AbpSettingsEntityFrameworkCoreModule.cs b/src/Volo.Abp.Permissions.EntityFrameworkCore/Volo/Abp/Permissions/EntityFrameworkCore/AbpSettingsEntityFrameworkCoreModule.cs
new file mode 100644
index 0000000000..13f7232ce4
--- /dev/null
+++ b/src/Volo.Abp.Permissions.EntityFrameworkCore/Volo/Abp/Permissions/EntityFrameworkCore/AbpSettingsEntityFrameworkCoreModule.cs
@@ -0,0 +1,23 @@
+using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.EntityFrameworkCore;
+using Volo.Abp.Modularity;
+
+namespace Volo.Abp.Permissions.EntityFrameworkCore
+{
+ [DependsOn(typeof(AbpPermissionsDomainModule))]
+ [DependsOn(typeof(AbpEntityFrameworkCoreModule))]
+ public class AbpPermissionsEntityFrameworkCoreModule : AbpModule
+ {
+ public override void ConfigureServices(IServiceCollection services)
+ {
+ services.AddAbpDbContext(options =>
+ {
+ options.AddDefaultRepositories();
+
+ options.AddRepository();
+ });
+
+ services.AddAssemblyOf();
+ }
+ }
+}
diff --git a/src/Volo.Abp.Permissions.EntityFrameworkCore/Volo/Abp/Permissions/EntityFrameworkCore/EfCorePermissionGrantRepository.cs b/src/Volo.Abp.Permissions.EntityFrameworkCore/Volo/Abp/Permissions/EntityFrameworkCore/EfCorePermissionGrantRepository.cs
new file mode 100644
index 0000000000..261781b3b9
--- /dev/null
+++ b/src/Volo.Abp.Permissions.EntityFrameworkCore/Volo/Abp/Permissions/EntityFrameworkCore/EfCorePermissionGrantRepository.cs
@@ -0,0 +1,29 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.EntityFrameworkCore;
+using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
+using Volo.Abp.EntityFrameworkCore;
+
+namespace Volo.Abp.Permissions.EntityFrameworkCore
+{
+ public class EfCorePermissionGrantRepository : EfCoreRepository, IPermissionGrantRepository
+ {
+ public EfCorePermissionGrantRepository(IDbContextProvider dbContextProvider)
+ : base(dbContextProvider)
+ {
+
+ }
+
+ public async Task FindAsync(string name, string providerName, string providerKey)
+ {
+ return await DbSet.FirstOrDefaultAsync(s => s.Name == name && s.ProviderName == providerName && s.ProviderKey == providerKey);
+ }
+
+ public async Task> GetListAsync(string providerName, string providerKey)
+ {
+ return await DbSet.Where(s => s.ProviderName == providerName && s.ProviderKey == providerKey).ToListAsync();
+ }
+ }
+}
diff --git a/src/Volo.Abp.Permissions.EntityFrameworkCore/Volo/Abp/Permissions/EntityFrameworkCore/IAbpPermissionsDbContext.cs b/src/Volo.Abp.Permissions.EntityFrameworkCore/Volo/Abp/Permissions/EntityFrameworkCore/IAbpPermissionsDbContext.cs
new file mode 100644
index 0000000000..b35c214984
--- /dev/null
+++ b/src/Volo.Abp.Permissions.EntityFrameworkCore/Volo/Abp/Permissions/EntityFrameworkCore/IAbpPermissionsDbContext.cs
@@ -0,0 +1,10 @@
+using Microsoft.EntityFrameworkCore;
+using Volo.Abp.EntityFrameworkCore;
+
+namespace Volo.Abp.Permissions.EntityFrameworkCore
+{
+ public interface IAbpPermissionsDbContext : IEfCoreDbContext
+ {
+ DbSet PermissionGrants { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/src/Volo.Abp.Permissions/Volo/Abp/Permissions/AbpAuthorizationModule.cs b/src/Volo.Abp.Permissions/Volo/Abp/Permissions/AbpPermissionsModule.cs
similarity index 100%
rename from src/Volo.Abp.Permissions/Volo/Abp/Permissions/AbpAuthorizationModule.cs
rename to src/Volo.Abp.Permissions/Volo/Abp/Permissions/AbpPermissionsModule.cs
diff --git a/src/Volo.Abp.Permissions/Volo/Abp/Permissions/IPermissionStore.cs b/src/Volo.Abp.Permissions/Volo/Abp/Permissions/IPermissionStore.cs
index 54d7436cf5..90dd2e0535 100644
--- a/src/Volo.Abp.Permissions/Volo/Abp/Permissions/IPermissionStore.cs
+++ b/src/Volo.Abp.Permissions/Volo/Abp/Permissions/IPermissionStore.cs
@@ -6,7 +6,7 @@ namespace Volo.Abp.Permissions
{
public interface IPermissionStore
{
- Task GetOrNullAsync([NotNull] string name, [CanBeNull] string providerName, [CanBeNull] string providerKey);
+ Task IsGrantedAsync([NotNull] string name, [CanBeNull] string providerName, [CanBeNull] string providerKey);
Task SetAsync([NotNull] string name, bool isGranted, [CanBeNull] string providerName, [CanBeNull] string providerKey);
diff --git a/src/Volo.Abp.Permissions/Volo/Abp/Permissions/NullPermissionStore.cs b/src/Volo.Abp.Permissions/Volo/Abp/Permissions/NullPermissionStore.cs
index 90b59b1c19..f68f92bd41 100644
--- a/src/Volo.Abp.Permissions/Volo/Abp/Permissions/NullPermissionStore.cs
+++ b/src/Volo.Abp.Permissions/Volo/Abp/Permissions/NullPermissionStore.cs
@@ -15,7 +15,7 @@ namespace Volo.Abp.Permissions
Logger = NullLogger.Instance;
}
- public Task GetOrNullAsync(string name, string providerName, string providerKey)
+ public Task IsGrantedAsync(string name, string providerName, string providerKey)
{
return Task.FromResult((bool?)null);
}
diff --git a/src/Volo.Abp.Settings.Domain/Volo/Abp/Settings/SettingStore.cs b/src/Volo.Abp.Settings.Domain/Volo/Abp/Settings/SettingStore.cs
index a1bb9b3c3d..6312249fc7 100644
--- a/src/Volo.Abp.Settings.Domain/Volo/Abp/Settings/SettingStore.cs
+++ b/src/Volo.Abp.Settings.Domain/Volo/Abp/Settings/SettingStore.cs
@@ -28,15 +28,17 @@ namespace Volo.Abp.Settings
setting = new Setting(GuidGenerator.Create(), name, value, providerName, providerKey);
await _settingRepository.InsertAsync(setting);
}
-
- setting.Value = value;
- await _settingRepository.UpdateAsync(setting);
+ else
+ {
+ setting.Value = value;
+ await _settingRepository.UpdateAsync(setting);
+ }
}
public async Task> GetListAsync(string providerName, string providerKey)
{
- var setting = await _settingRepository.GetListAsync(providerName, providerKey);
- return setting.Select(s => new SettingValue(s.Name, s.Value)).ToList();
+ var settings = await _settingRepository.GetListAsync(providerName, providerKey);
+ return settings.Select(s => new SettingValue(s.Name, s.Value)).ToList();
}
public async Task DeleteAsync(string name, string providerName, string providerKey)