예제 #1
0
 public virtual async Task RemovePermissionAsync(TUser user, PermissionGrantInfo permissionGrant)
 {
     await _userPermissionSettingRepository.DeleteAsync(
         permissionSetting => permissionSetting.UserId == user.Id &&
         permissionSetting.Name == permissionGrant.Name &&
         permissionSetting.IsGranted == permissionGrant.IsGranted
         );
 }
예제 #2
0
 public virtual async Task <bool> HasPermissionAsync(TUser user, PermissionGrantInfo permissionGrant)
 {
     return(await _userPermissionSettingRepository.FirstOrDefaultAsync(
                p => p.UserId == user.Id &&
                p.Name == permissionGrant.Name &&
                p.IsGranted == permissionGrant.IsGranted
                ) != null);
 }
예제 #3
0
 /// <inheritdoc/>
 public virtual async Task <bool> HasPermissionAsync(int roleId, PermissionGrantInfo permissionGrant)
 {
     return(await _rolePermissionSettingRepository.FirstOrDefaultAsync(
                p => p.RoleId == roleId &&
                p.Name == permissionGrant.Name &&
                p.IsGranted == permissionGrant.IsGranted
                ) != null);
 }
예제 #4
0
 public virtual bool HasPermission(long userId, PermissionGrantInfo permissionGrant)
 {
     return(_userPermissionSettingRepository.FirstOrDefault(
                p => p.UserId == userId &&
                p.Name == permissionGrant.Name &&
                p.IsGranted == permissionGrant.IsGranted
                ) != null);
 }
예제 #5
0
 public virtual void RemovePermission(TUser user, PermissionGrantInfo permissionGrant)
 {
     _userPermissionSettingRepository.Delete(
         permissionSetting => permissionSetting.UserId == user.Id &&
         permissionSetting.Name == permissionGrant.Name &&
         permissionSetting.IsGranted == permissionGrant.IsGranted
         );
 }
예제 #6
0
 public async Task <bool> HasPermissionAsync(long userId, PermissionGrantInfo permissionGrant)
 {
     return(await _userPermissionRepository.FirstOrDefaultAsync(
                p => p.UserId == userId &&
                p.Name == permissionGrant.Name &&
                p.IsGranted == permissionGrant.IsGranted
                ) != null);
 }
예제 #7
0
 /// <inheritdoc/>
 public virtual async Task RemovePermissionAsync(TRole role, PermissionGrantInfo permissionGrant)
 {
     await _rolePermissionSettingRepository.DeleteAsync(
         permissionSetting => permissionSetting.RoleId == role.Id &&
         permissionSetting.Name == permissionGrant.Name &&
         permissionSetting.IsGranted == permissionGrant.IsGranted
         );
 }
        private object[] SetParameter(ParameterInfo[] paremeters, PermissionGrantInfo permission)
        {
            object[] objlist = new object[paremeters.Length];
            for (int i = 0; i < paremeters.Length; i++)
            {
                objlist[i] = paremeters[i].DefaultValue;
            }
            objlist[0] = permission.Name;

            return(objlist);
        }
예제 #9
0
 public virtual bool HasPermission(long userId, PermissionGrantInfo permissionGrant)
 {
     return(_unitOfWorkManager.WithUnitOfWork(() =>
     {
         return _userPermissionSettingRepository.FirstOrDefault(
             p => p.UserId == userId &&
             p.Name == permissionGrant.Name &&
             p.IsGranted == permissionGrant.IsGranted
             ) != null;
     }));
 }
예제 #10
0
 public virtual async Task <bool> HasPermissionAsync(long userId, PermissionGrantInfo permissionGrant)
 {
     return(await _unitOfWorkManager.WithUnitOfWorkAsync(async() =>
     {
         return await _userPermissionSettingRepository.FirstOrDefaultAsync(
             p => p.UserId == userId &&
             p.Name == permissionGrant.Name &&
             p.IsGranted == permissionGrant.IsGranted
             ) != null;
     }));
 }
예제 #11
0
        public override async Task <PermissionGrantInfo> CheckAsync(string name, string providerName, string providerKey)
        {
            if (providerName == Name)
            {
                var permissionGrant = await PermissionGrantRepository.FindAsync(name, providerName, providerKey);

                return(new PermissionGrantInfo(
                           permissionGrant != null,
                           permissionGrant?.ProviderScope ?? nameof(PermissionScopeType.Prohibited),
                           providerKey
                           ));
            }

            var permissionGrantResult = PermissionGrantInfo.NonGranted;

            if (providerName == UserPermissionValueProvider.ProviderName)
            {
                var userId = Guid.Parse(providerKey);
                var roles  = await UserRoleFinder.GetRolesAsync(userId);

                foreach (var role in roles)
                {
                    var result = await PermissionGrantRepository.FindAsync(name, Name, role);

                    if (result == null)
                    {
                        continue;
                    }

                    // 以角色的最大权限为主
                    var permissionGrantScope = PermissionScopeType.Prohibited;
                    if (Enum.TryParse(permissionGrantResult.ProviderScope, out PermissionScopeType ps))
                    {
                        permissionGrantScope = ps;
                    }

                    var resultScope = PermissionScopeType.Prohibited;
                    if (Enum.TryParse(result.ProviderScope, out PermissionScopeType rs))
                    {
                        resultScope = rs;
                    }

                    if (resultScope > permissionGrantScope)
                    {
                        permissionGrantResult = new PermissionGrantInfo(true, result.ProviderScope, role);
                    }
                }
            }

            return(permissionGrantResult);
        }
예제 #12
0
        /// <inheritdoc/>
        public virtual async Task AddPermissionAsync(TRole role, PermissionGrantInfo permissionGrant)
        {
            if (await HasPermissionAsync(role.Id, permissionGrant))
            {
                return;
            }

            await _rolePermissionSettingRepository.InsertAsync(
                new RolePermissionSetting
            {
                RoleId    = role.Id,
                Name      = permissionGrant.Name,
                IsGranted = permissionGrant.IsGranted
            });
        }
예제 #13
0
        public virtual async Task AddPermissionAsync(TUser user, PermissionGrantInfo permissionGrant)
        {
            if (await HasPermissionAsync(user, permissionGrant))
            {
                return;
            }

            await _userPermissionSettingRepository.InsertAsync(
                new UserPermissionSetting
            {
                UserId    = user.Id,
                Name      = permissionGrant.Name,
                IsGranted = permissionGrant.IsGranted
            });
        }
예제 #14
0
        public Task RemovePermissionAsync(AbpRole role, PermissionGrantInfo permissionGrant)
        {
            return(Task.Factory.StartNew(() =>
            {
                var permissionEntity = _permissionSettingRepository.FirstOrDefault(
                    p => p.RoleId == role.Id &&
                    p.Name == permissionGrant.Name &&
                    p.IsGranted == permissionGrant.IsGranted);
                if (permissionEntity == null)
                {
                    return;
                }

                _permissionSettingRepository.Delete(permissionEntity);
            }));
        }
예제 #15
0
        public virtual void AddPermission(TUser user, PermissionGrantInfo permissionGrant)
        {
            if (HasPermission(user.Id, permissionGrant))
            {
                return;
            }

            _userPermissionSettingRepository.Insert(
                new UserPermissionSetting
            {
                TenantId  = user.TenantId,
                UserId    = user.Id,
                Name      = permissionGrant.Name,
                IsGranted = permissionGrant.IsGranted
            });
        }
예제 #16
0
        public Task AddPermissionAsync(AbpRole role, PermissionGrantInfo permissionGrant)
        {
            return(Task.Factory.StartNew(() =>
            {
                if (HasPermissionAsync(role, permissionGrant).Result)                              //TODO: async/await?
                {
                    return;
                }

                _permissionSettingRepository.Insert(
                    new PermissionSetting
                {
                    RoleId = role.Id,
                    Name = permissionGrant.Name,
                    IsGranted = permissionGrant.IsGranted
                });
            }));
        }
예제 #17
0
        public virtual async Task AddPermissionAsync(TRole role, PermissionGrantInfo permissionGrant)
        {
            await _unitOfWorkManager.WithUnitOfWorkAsync(async() =>
            {
                if (await HasPermissionAsync(role.Id, permissionGrant))
                {
                    return;
                }

                await _rolePermissionSettingRepository.InsertAsync(
                    new RolePermissionSetting
                {
                    TenantId  = role.TenantId,
                    RoleId    = role.Id,
                    Name      = permissionGrant.Name,
                    IsGranted = permissionGrant.IsGranted
                });
            });
        }
예제 #18
0
        public virtual async Task AddPermissionAsync(TUser user, PermissionGrantInfo permissionGrant)
        {
            await _unitOfWorkManager.WithUnitOfWorkAsync(async() =>
            {
                if (await HasPermissionAsync(user.Id, permissionGrant))
                {
                    return;
                }

                await _userPermissionSettingRepository.InsertAsync(
                    new UserPermissionSetting
                {
                    TenantId  = user.TenantId,
                    UserId    = user.Id,
                    Name      = permissionGrant.Name,
                    IsGranted = permissionGrant.IsGranted
                }
                    );
            });
        }
예제 #19
0
 public Task <bool> HasPermissionAsync(AbpRole role, PermissionGrantInfo permissionGrant)
 {
     return(Task.Factory.StartNew(() => _permissionSettingRepository.FirstOrDefault(p => p.RoleId == role.Id && p.Name == permissionGrant.Name && p.IsGranted == permissionGrant.IsGranted) != null));
 }