Browse Source

Add resource permission grant repositories for EF Core and MongoDB

pull/24374/head
maliming 11 months ago
parent
commit
0c0cff768b
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 1
      modules/permission-management/src/Volo.Abp.PermissionManagement.EntityFrameworkCore/Volo/Abp/PermissionManagement/EntityFrameworkCore/AbpPermissionManagementEntityFrameworkCoreModule.cs
  2. 74
      modules/permission-management/src/Volo.Abp.PermissionManagement.EntityFrameworkCore/Volo/Abp/PermissionManagement/EntityFrameworkCore/EfCoreResourcePermissionGrantRepository.cs
  3. 1
      modules/permission-management/src/Volo.Abp.PermissionManagement.MongoDB/Volo/Abp/PermissionManagement/MongoDb/AbpPermissionManagementMongoDbModule.cs
  4. 79
      modules/permission-management/src/Volo.Abp.PermissionManagement.MongoDB/Volo/Abp/PermissionManagement/MongoDb/MongoResourcePermissionGrantRepository.cs

1
modules/permission-management/src/Volo.Abp.PermissionManagement.EntityFrameworkCore/Volo/Abp/PermissionManagement/EntityFrameworkCore/AbpPermissionManagementEntityFrameworkCoreModule.cs

@ -17,6 +17,7 @@ public class AbpPermissionManagementEntityFrameworkCoreModule : AbpModule
options.AddRepository<PermissionGroupDefinitionRecord, EfCorePermissionGroupDefinitionRecordRepository>();
options.AddRepository<PermissionDefinitionRecord, EfCorePermissionDefinitionRecordRepository>();
options.AddRepository<PermissionGrant, EfCorePermissionGrantRepository>();
options.AddRepository<ResourcePermissionGrant, EfCoreResourcePermissionGrantRepository>();
});
}
}

74
modules/permission-management/src/Volo.Abp.PermissionManagement.EntityFrameworkCore/Volo/Abp/PermissionManagement/EntityFrameworkCore/EfCoreResourcePermissionGrantRepository.cs

@ -0,0 +1,74 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
namespace Volo.Abp.PermissionManagement.EntityFrameworkCore;
public class EfCoreResourcePermissionGrantRepository : EfCoreRepository<IPermissionManagementDbContext, ResourcePermissionGrant, Guid>, IResourcePermissionGrantRepository
{
public EfCoreResourcePermissionGrantRepository(IDbContextProvider<IPermissionManagementDbContext> dbContextProvider)
: base(dbContextProvider)
{
}
public virtual async Task<ResourcePermissionGrant> FindAsync(string name, string resourceName, string resourceKey, string providerName, string providerKey, CancellationToken cancellationToken = default)
{
return await (await GetDbSetAsync())
.OrderBy(x => x.Id)
.FirstOrDefaultAsync(s =>
s.Name == name &&
s.ResourceName == resourceName &&
s.ResourceKey == resourceKey &&
s.ProviderName == providerName &&
s.ProviderKey == providerKey,
GetCancellationToken(cancellationToken)
);
}
public virtual async Task<List<ResourcePermissionGrant>> GetListAsync(string resourceName, string resourceKey, string providerName, string providerKey, CancellationToken cancellationToken = default)
{
return await (await GetDbSetAsync())
.Where(s =>
s.ResourceName == resourceName &&
s.ResourceKey == resourceKey &&
s.ProviderName == providerName &&
s.ProviderKey == providerKey
).ToListAsync(GetCancellationToken(cancellationToken));
}
public virtual async Task<List<ResourcePermissionGrant>> GetListAsync(string[] names, string resourceName, string resourceKey, string providerName, string providerKey, CancellationToken cancellationToken = default)
{
return await (await GetDbSetAsync())
.Where(s =>
names.Contains(s.Name) &&
s.ResourceName == resourceName &&
s.ResourceKey == resourceKey &&
s.ProviderName == providerName &&
s.ProviderKey == providerKey
).ToListAsync(GetCancellationToken(cancellationToken));
}
public virtual async Task<List<string>> GetPermissionsAsync(string resourceName, string resourceKey, CancellationToken cancellationToken = default)
{
return await (await GetDbSetAsync())
.Where(s =>
s.ResourceName == resourceName &&
s.ResourceKey == resourceKey
).Select(x => x.Name).ToListAsync(GetCancellationToken(cancellationToken));
}
public virtual async Task<List<string>> GetResourceKeys(string resourceName, string name, CancellationToken cancellationToken = default)
{
return await (await GetDbSetAsync())
.Where(s =>
s.ResourceName == resourceName &&
s.Name == name
).Select(x => x.ResourceKey).ToListAsync(GetCancellationToken(cancellationToken));
}
}

1
modules/permission-management/src/Volo.Abp.PermissionManagement.MongoDB/Volo/Abp/PermissionManagement/MongoDb/AbpPermissionManagementMongoDbModule.cs

@ -19,6 +19,7 @@ public class AbpPermissionManagementMongoDbModule : AbpModule
options.AddRepository<PermissionGroupDefinitionRecord, MongoPermissionGroupDefinitionRecordRepository>();
options.AddRepository<PermissionDefinitionRecord, MongoPermissionDefinitionRecordRepository>();
options.AddRepository<PermissionGrant, MongoPermissionGrantRepository>();
options.AddRepository<ResourcePermissionGrant, MongoResourcePermissionGrantRepository>();
});
}
}

79
modules/permission-management/src/Volo.Abp.PermissionManagement.MongoDB/Volo/Abp/PermissionManagement/MongoDb/MongoResourcePermissionGrantRepository.cs

@ -0,0 +1,79 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using MongoDB.Driver.Linq;
using Volo.Abp.Domain.Repositories.MongoDB;
using Volo.Abp.MongoDB;
namespace Volo.Abp.PermissionManagement.MongoDB;
public class MongoResourcePermissionGrantRepository : MongoDbRepository<IPermissionManagementMongoDbContext, ResourcePermissionGrant, Guid>, IResourcePermissionGrantRepository
{
public MongoResourcePermissionGrantRepository(IMongoDbContextProvider<IPermissionManagementMongoDbContext> dbContextProvider)
: base(dbContextProvider)
{
}
public virtual async Task<ResourcePermissionGrant> FindAsync(string name, string resourceName, string resourceKey, string providerName, string providerKey, CancellationToken cancellationToken = default)
{
cancellationToken = GetCancellationToken(cancellationToken);
return await (await GetQueryableAsync(cancellationToken))
.OrderBy(x => x.Id)
.FirstOrDefaultAsync(s =>
s.Name == name &&
s.ResourceName == resourceName &&
s.ResourceKey == resourceKey &&
s.ProviderName == providerName &&
s.ProviderKey == providerKey,
cancellationToken
);
}
public virtual async Task<List<ResourcePermissionGrant>> GetListAsync(string resourceName, string resourceKey, string providerName, string providerKey, CancellationToken cancellationToken = default)
{
cancellationToken = GetCancellationToken(cancellationToken);
return await (await GetQueryableAsync(cancellationToken))
.Where(s =>
s.ResourceName == resourceName &&
s.ResourceKey == resourceKey &&
s.ProviderName == providerName &&
s.ProviderKey == providerKey
).ToListAsync(cancellationToken);
}
public virtual async Task<List<ResourcePermissionGrant>> GetListAsync(string[] names, string resourceName, string resourceKey, string providerName, string providerKey, CancellationToken cancellationToken = default)
{
cancellationToken = GetCancellationToken(cancellationToken);
return await (await GetQueryableAsync(cancellationToken))
.Where(s =>
names.AsEnumerable().Contains(s.Name) &&
s.ResourceName == resourceName &&
s.ResourceKey == resourceKey &&
s.ProviderName == providerName &&
s.ProviderKey == providerKey
).ToListAsync(cancellationToken);
}
public virtual async Task<List<string>> GetPermissionsAsync(string resourceName, string resourceKey, CancellationToken cancellationToken = default)
{
cancellationToken = GetCancellationToken(cancellationToken);
return await (await GetQueryableAsync(cancellationToken))
.Where(s =>
s.ResourceName == resourceName &&
s.ResourceKey == resourceKey
).Select(x => x.Name).ToListAsync(cancellationToken);
}
public virtual async Task<List<string>> GetResourceKeys(string resourceName, string name, CancellationToken cancellationToken = default)
{
cancellationToken = GetCancellationToken(cancellationToken);
return await (await GetQueryableAsync(cancellationToken))
.Where(s =>
s.ResourceName == resourceName &&
s.Name == name
).Select(x => x.ResourceKey).ToListAsync(cancellationToken);
}
}
Loading…
Cancel
Save