Ejemplo n.º 1
0
 public GroupPermission(GroupPermissionDTO source)
 {
     GroupPermissionID = source.GroupPermissionID;
     GroupID           = source.GroupID;
     Permissions       = source.Permissions;
     PermissionID      = source.PermissionID;
 }
Ejemplo n.º 2
0
        public async Task <RolePermissionsDTO> GetPermissionsAsync(string id)
        {
            var entity = await _dbContext.Roles.FirstOrDefaultAsync(x => x.Id == id);

            if (entity == null)
            {
                throw new ArgumentException("Role not exists");
            }

            var result = new RolePermissionsDTO {
                Role = entity.Name, Services = new List <ServicePermissionsDTO>()
            };

            var permissions = await _dbContext.Permissions.Include(x => x.Service).Where(x => !x.Expired).ToListAsync();

            var dict = await _dbContext.RolePermissions.Where(x => x.RoleId == id)
                       .ToDictionaryAsync(x => x.PermissionId, x => x);

            var permissionsGroupByService = permissions.GroupBy(x => x.Service.Name);

            foreach (var service in permissionsGroupByService)
            {
                var servicePermissionsDto =
                    new ServicePermissionsDTO {
                    Service = service.Key, Groups = new List <GroupPermissionDTO>()
                };
                var servicePermissions = service.ToList();
                var groups             = servicePermissions.GroupBy(x => x.Module);

                foreach (var group in groups)
                {
                    var groupPermission = new GroupPermissionDTO
                    {
                        Permissions = new List <GrantPermissionDTO>(), Module = group.Key
                    };

                    foreach (var permission in group)
                    {
                        groupPermission.Permissions.Add(new GrantPermissionDTO
                        {
                            Name          = permission.Name,
                            Id            = permission.Id,
                            HasPermission = dict.ContainsKey(permission.Id)
                        });
                    }

                    servicePermissionsDto.Groups.Add(groupPermission);
                }

                result.Services.Add(servicePermissionsDto);
            }

            return(result);
        }
Ejemplo n.º 3
0
        public async Task <UserPermissionsDTO> GetPermissionsAsync(string userId)
        {
            var entity = await _dbContext.Users.FirstOrDefaultAsync(x => x.Id == userId);

            if (entity == null)
            {
                throw new ArgumentException("User not exists");
            }

            var claims = await _userManager.GetClaimsAsync(entity);

            var givenName  = claims.FirstOrDefault(x => x.Type == JwtRegisteredClaimNames.GivenName)?.Value;
            var familyName = claims.FirstOrDefault(x => x.Type == JwtRegisteredClaimNames.FamilyName)?.Value;
            var result     = new UserPermissionsDTO
            {
                UserName = entity.UserName,
                Name     = $"{familyName}{givenName}",
                Email    = entity.Email,
                Services = new List <ServicePermissionsDTO>()
            };

            var permissions = await _dbContext.Permissions.Include(x => x.Service).ToListAsync();

            var dict = await _dbContext.UserPermissions.Where(x => x.UserId == userId)
                       .ToDictionaryAsync(x => x.PermissionId, x => x);

            var permissionsGroupByService = permissions.GroupBy(x => x.Service.Name);

            foreach (var service in permissionsGroupByService)
            {
                var servicePermissionsDto =
                    new ServicePermissionsDTO {
                    Service = service.Key, Groups = new List <GroupPermissionDTO>()
                };
                var servicePermissions = service.ToList();
                var groups             = servicePermissions.GroupBy(x => x.Module);

                foreach (var group in groups)
                {
                    var groupPermission = new GroupPermissionDTO
                    {
                        Permissions = new List <GrantPermissionDTO>(), Module = group.Key
                    };

                    foreach (var permission in group)
                    {
                        groupPermission.Permissions.Add(new GrantPermissionDTO
                        {
                            Name          = permission.Name,
                            Id            = permission.Id,
                            HasPermission = dict.ContainsKey(permission.Id)
                        });
                    }

                    servicePermissionsDto.Groups.Add(groupPermission);
                }

                result.Services.Add(servicePermissionsDto);
            }

            return(result);
        }