Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        public async Task <IEnumerable <PermissionModel> > GetPermissions(Guid roleId)
        {
            var permissions = await _rolePermissionRepository.GetByRole(roleId);

            return(permissions.Select(p => BusinessMapper.Map <PermissionModel>(p.Permission)));
        }