/// <summary> /// Assigns the permission. /// </summary> /// <param name="permissionIds">The permission ids.</param> /// <param name="apiContext">The API context.</param> /// <returns></returns> public UserPermissionResponse AssignPermission(UserPermissionDTO permissionIds, ApiContext apiContext) { _context = (AVOUMContext)DbManager.GetContext(apiContext.ProductType, apiContext.ServerType); UserPermissionsDTO userPermissions = null; for (int i = 0; i < permissionIds.PermissionIds.Length; i++) { userPermissions = new UserPermissionsDTO(); userPermissions.UserId = permissionIds.UserId; userPermissions.PermissionId = Convert.ToInt16(permissionIds.PermissionIds[i]); userPermissions.UserorRole = "User"; // userPermissions.CreatedBy = CreatedBy; userPermissions.CreatedDate = DateTime.Now; userPermissions.Status = true; var _usersPer = _mapper.Map <TblUserPermissions>(userPermissions); _context.TblUserPermissions.Add(_usersPer); } _context.SaveChanges(); //return userPermissions; return(new UserPermissionResponse { Status = BusinessStatus.Created, perm = userPermissions, ResponseMessage = $"Assigned {userPermissions.PermissionId} Permissions successfully!!" }); }
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); }