| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- using Abp;
- using Abp.Authorization;
- using Abp.Dependency;
- using Abp.Domain.Uow;
- using Castle.Core.Logging;
- using VberZero.Authorization.Users;
- using VberZero.Session;
- using ILogger = Castle.Core.Logging.ILogger;
- namespace VberZero.Authorization;
- /// <summary>
- /// 应用程序应该继承这个类来实现<see cref="IPermissionChecker"/>。
- /// </summary>
- public class VzPermissionChecker : IPermissionChecker, ITransientDependency, IIocManagerAccessor
- {
- private readonly VzUserManager _userManager;
- public IIocManager IocManager { get; set; }
- public ILogger Logger { get; set; }
- public IVzSession AbpSession { get; set; }
- public ICurrentUnitOfWorkProvider CurrentUnitOfWorkProvider { get; set; }
- public IUnitOfWorkManager UnitOfWorkManager { get; set; }
- public VzPermissionChecker(VzUserManager userManager)
- {
- _userManager = userManager;
- Logger = NullLogger.Instance;
- AbpSession = NullVzSession.Instance;
- }
- public virtual async Task<bool> IsGrantedAsync(string permissionName)
- {
- return AbpSession.UserId.HasValue && await IsGrantedAsync(AbpSession.UserId.Value, permissionName);
- }
- public virtual bool IsGranted(string permissionName)
- {
- return AbpSession.UserId.HasValue && IsGranted(AbpSession.UserId.Value, permissionName);
- }
- public virtual async Task<bool> IsGrantedAsync(long userId, string permissionName)
- {
- return await _userManager.IsGrantedAsync(userId, permissionName);
- }
- public virtual bool IsGranted(long userId, string permissionName)
- {
- return _userManager.IsGranted(userId, permissionName);
- }
- public virtual async Task<bool> IsGrantedAsync(UserIdentifier user, string permissionName)
- {
- return await UnitOfWorkManager.WithUnitOfWorkAsync(async () =>
- {
- if (CurrentUnitOfWorkProvider.Current == null)
- {
- return await IsGrantedAsync(user.UserId, permissionName);
- }
- using (CurrentUnitOfWorkProvider.Current.SetTenantId(user.TenantId))
- {
- return await IsGrantedAsync(user.UserId, permissionName);
- }
- });
- }
- public virtual bool IsGranted(UserIdentifier user, string permissionName)
- {
- return UnitOfWorkManager.WithUnitOfWork(() =>
- {
- if (CurrentUnitOfWorkProvider.Current == null)
- {
- return IsGranted(user.UserId, permissionName);
- }
- using (CurrentUnitOfWorkProvider.Current.SetTenantId(user.TenantId))
- {
- return IsGranted(user.UserId, permissionName);
- }
- });
- }
- }
|