public GroupPermission(GroupPermissionDTO source) { GroupPermissionID = source.GroupPermissionID; GroupID = source.GroupID; Permissions = source.Permissions; PermissionID = source.PermissionID; }
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); }
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); }