public async Task <Guid[]> GetPermissions(params Guid[] roleIds) { var permissionIds = new List <Guid>(); foreach (var roleId in roleIds) { var key = new KeyValuePair <string, Guid>(CacheTypes.RolePermission, roleId); if (_cache.TryGetValue(key, out var cachedPermissions)) { permissionIds.AddRange(cachedPermissions as IEnumerable <Guid> ?? Array.Empty <Guid>()); } else { permissionIds.AddRange((await _rolePermissionRepository.GetByRole(roleId)).Select(x => x.PermissionId)); _cache.Set(key, permissionIds, TimeSpan.FromHours(1)); } } return(permissionIds.ToArray()); }
public async Task <IEnumerable <PermissionModel> > GetPermissions(Guid roleId) { var permissions = await _rolePermissionRepository.GetByRole(roleId); return(permissions.Select(p => BusinessMapper.Map <PermissionModel>(p.Permission))); }