Example #1
0
        private async Task <RolePermissionCacheItem> GetRolePermissionCacheItemAsync(long roleId)
        {
            var cacheKey = roleId + "@0";

            return(await _cacheManager.GetRolePermissionCache().GetAsync(cacheKey, async() =>
            {
                var newCacheItem = new RolePermissionCacheItem(roleId);

                var role = await Store.FindByIdAsync(roleId.ToString(), CancellationToken);
                if (role == null)
                {
                    throw new SmdException("There is no role with given id: " + roleId);
                }

                foreach (var permissionInfo in await RolePermissionStore.GetPermissionsAsync(roleId))
                {
                    if (permissionInfo.IsGranted)
                    {
                        newCacheItem.GrantedPermissions.AddIfNotContains(permissionInfo.Name);
                    }
                    else
                    {
                        newCacheItem.GrantedPermissions.Remove(permissionInfo.Name);
                    }
                }

                return newCacheItem;
            }));
        }
Example #2
0
 /// <summary>
 /// Prohibits a permission for a role.
 /// </summary>
 /// <param name="role">Role</param>
 /// <param name="permission">Permission</param>
 public async Task ProhibitPermissionAsync(TRole role, Permission permission)
 {
     if (!await IsGrantedAsync(role.Id, permission))
     {
         return;
     }
     await RolePermissionStore.RemovePermissionAsync(role, new PermissionGrantInfo(permission.Name, true));
 }
Example #3
0
        /// <summary>
        /// Grants a permission for a role.
        /// </summary>
        /// <param name="role">Role</param>
        /// <param name="permission">Permission</param>
        public async Task GrantPermissionAsync(TRole role, Permission permission)
        {
            if (await IsGrantedAsync(role.Id, permission))
            {
                return;
            }

            await RolePermissionStore.RemovePermissionAsync(role, new PermissionGrantInfo(permission.Name, false, null));

            await RolePermissionStore.AddPermissionAsync(role, new PermissionGrantInfo(permission.Name, true, null));
        }
Example #4
0
        /// <summary>
        /// Grants a permission for a role.
        /// </summary>
        /// <param name="role">Role</param>
        /// <param name="permission">Permission</param>
        public async Task GrantPermissionAsync(Role role, Permission permission)
        {
            if (await IsGrantedAsync(role.Id, permission))
            {
                return;
            }

            await RolePermissionStore.AddPermissionAsync(role, new PermissionGrantInfo(permission.Name, true));

            await RemoveRolePermissionCacheItemAsync(role.Id);
        }
Example #5
0
        /// <summary>
        /// Prohibits a permission for a role.
        /// </summary>
        /// <param name="role">Role</param>
        /// <param name="permission">Permission</param>
        public async Task ProhibitPermissionAsync(TRole role, Permission permission)
        {
            if (!await HasPermissionAsync(role, permission))
            {
                return;
            }

            if (permission.IsGrantedByDefault)
            {
                await RolePermissionStore.AddPermissionAsync(role, new PermissionGrantInfo(permission.Name, false));
            }
            else
            {
                await RolePermissionStore.RemovePermissionAsync(role, new PermissionGrantInfo(permission.Name, true));
            }
        }
Example #6
0
        private async Task <RolePermissionCacheItem> GetRolePermissionCacheItemAsync(int roleId)
        {
            var cacheKey = roleId + "@" + (GetCurrentTenantId() ?? 0);

            return(await _cacheManager.GetRolePermissionCache().GetAsync(cacheKey, async() =>
            {
                var newCacheItem = new RolePermissionCacheItem(roleId);

                foreach (var permissionInfo in await RolePermissionStore.GetPermissionsAsync(roleId))
                {
                    if (permissionInfo.IsGranted)
                    {
                        newCacheItem.GrantedPermissions.Add(permissionInfo.Name);
                    }
                }
                return newCacheItem;
            }));
        }
Example #7
0
        private RolePermissionCacheItem GetRolePermissionCacheItem(int roleId)
        {
            var cacheKey = roleId + "@" + (GetCurrentTenantId() ?? 0);

            return(_cacheManager.GetRolePermissionCache().Get(cacheKey, () =>
            {
                var newCacheItem = new RolePermissionCacheItem(roleId);

                var role = AbpStore.FindById(roleId.ToString(), CancellationToken);
                if (role == null)
                {
                    throw new AbpException("There is no role with given id: " + roleId);
                }

                var staticRoleDefinition = RoleManagementConfig.StaticRoles.FirstOrDefault(r =>
                                                                                           r.RoleName == role.Name && r.Side == role.GetMultiTenancySide()
                                                                                           );

                if (staticRoleDefinition != null)
                {
                    foreach (var permission in _permissionManager.GetAllPermissions())
                    {
                        if (staticRoleDefinition.IsGrantedByDefault(permission))
                        {
                            newCacheItem.GrantedPermissions.Add(permission.Name);
                        }
                    }
                }

                foreach (var permissionInfo in RolePermissionStore.GetPermissions(roleId))
                {
                    if (permissionInfo.IsGranted)
                    {
                        newCacheItem.GrantedPermissions.AddIfNotContains(permissionInfo.Name);
                    }
                    else
                    {
                        newCacheItem.GrantedPermissions.Remove(permissionInfo.Name);
                    }
                }

                return newCacheItem;
            }));
        }
        private async Task <RolePermissionCacheItem> GetRolePermissionCacheItemAsync(int roleId)
        {
            var cacheKey = roleId + "@" + (GetCurrentTenantId() ?? 0);

            return(await CacheManager.GetRolePermissionCache().GetAsync(cacheKey, async() =>
            {
                var newCacheItem = new RolePermissionCacheItem(roleId);

                var role = await Store.FindByIdAsync(roleId);
                if (role == null)
                {
                    throw new CodeZeroException("There is no role with given id: " + roleId);
                }

                var staticRoleDefinition = RoleManagementConfig.StaticRoles.FirstOrDefault(r =>
                                                                                           r.RoleName == role.Name && r.Side == role.GetMultiTenancySide());
                if (staticRoleDefinition != null)
                {
                    foreach (var permission in PermissionManager.GetAllPermissions())
                    {
                        if (staticRoleDefinition.IsGrantedByDefault(permission))
                        {
                            newCacheItem.GrantedPermissions.Add(permission.Name);
                        }
                    }
                }

                foreach (var permissionInfo in await RolePermissionStore.GetPermissionsAsync(roleId))
                {
                    if (permissionInfo.IsGranted)
                    {
                        newCacheItem.GrantedPermissions.AddIfNotContains(permissionInfo.Name);
                    }
                    else
                    {
                        newCacheItem.GrantedPermissions.Remove(permissionInfo.Name);
                    }
                }

                return newCacheItem;
            }));
        }
Example #9
0
        private async Task <RolePermissionCacheItem> GetRolePermissionCacheItemAsync(int roleId)
        {
            return(await _rolePermissionCache.GetAsync(roleId, async() =>
            {
                var newCacheItem = new RolePermissionCacheItem(roleId);

                foreach (var permissionInfo in await RolePermissionStore.GetPermissionsAsync(roleId))
                {
                    if (permissionInfo.IsGranted)
                    {
                        newCacheItem.GrantedPermissions.Add(permissionInfo.Name);
                    }
                    else
                    {
                        newCacheItem.ProhibitedPermissions.Add(permissionInfo.Name);
                    }
                }

                return newCacheItem;
            }));
        }
 /// <summary>
 /// Resets all permission settings for a role.
 /// It removes all permission settings for the role.
 /// Role will have permissions those have <see cref="Permission.IsGrantedByDefault"/> set to true.
 /// </summary>
 /// <param name="role">Role</param>
 public async Task ResetAllPermissionsAsync(TRole role)
 {
     await RolePermissionStore.RemoveAllPermissionSettingsAsync(role);
 }
Example #11
0
 /// <summary>
 /// Checks if a role has a permission.
 /// </summary>
 /// <param name="role">The rolepermission</param>
 /// <param name="permission">The permission</param>
 /// <returns>True, if the role has the permission</returns>
 public async Task <bool> HasPermissionAsync(TRole role, Permission permission)
 {
     return(permission.IsGrantedByDefault
         ? !(await RolePermissionStore.HasPermissionAsync(role, new PermissionGrantInfo(permission.Name, false)))
         : (await RolePermissionStore.HasPermissionAsync(role, new PermissionGrantInfo(permission.Name, true))));
 }