public SaveResponse Update(IUnitOfWork uow, UserRoleUpdateRequest request) { if (request is null) { throw new ArgumentNullException("request"); } if (request.UserID is null) { throw new ArgumentNullException("userID"); } if (request.Roles is null) { throw new ArgumentNullException("permissions"); } var userID = request.UserID.Value; var oldList = new HashSet <Int32>( GetExisting(uow.Connection, userID) .Select(x => x.RoleId.Value)); var newList = new HashSet <Int32>(request.Roles.ToList()); if (oldList.SetEquals(newList)) { return(new SaveResponse()); } foreach (var k in oldList) { if (newList.Contains(k)) { continue; } new SqlDelete(fld.TableName) .Where( new Criteria(fld.UserId) == userID & new Criteria(fld.RoleId) == k) .Execute(uow.Connection); } foreach (var k in newList) { if (oldList.Contains(k)) { continue; } uow.Connection.Insert(new MyRow { UserId = userID, RoleId = k }); } Cache.InvalidateOnCommit(uow, fld); Cache.InvalidateOnCommit(uow, Entities.UserPermissionRow.Fields); return(new SaveResponse()); }
public async Task <bool> UpdateUserRole(UserRoleUpdateRequest request) { var user = await _userManager.FindByIdAsync(request.UserId.ToString()); if (user == null) { return(false); } var removedRoles = request.Roles.Where(x => x.Selected == false) .Select(x => x.Name).ToList(); foreach (var roleName in removedRoles) { if (await _userManager.IsInRoleAsync(user, roleName) == true) { await _userManager.RemoveFromRoleAsync(user, roleName); } } var addRoles = request.Roles.Where(x => x.Selected == true) .Select(x => x.Name).ToList(); foreach (var roleName in addRoles) { if (await _userManager.IsInRoleAsync(user, roleName) == false) { await _userManager.AddToRoleAsync(user, roleName); } } return(true); }
public void ChangeStatus(int id, UserRoleUpdateRequest req) { _dataProvider.ExecuteNonQuery( "dbo.UsersRoles_ChangeStatus", (paramCol) => { paramCol.AddWithValue("@UserId", id); paramCol.AddWithValue("@IsActive", req.IsActive); }, null ); }
public SaveResponse Update(IUnitOfWork uow, UserRoleUpdateRequest request) { Check.NotNull(request, "request"); Check.NotNull(request.UserID, "userID"); Check.NotNull(request.Roles, "permissions"); var userID = request.UserID.Value; var oldList = new HashSet <Int32>( GetExisting(uow.Connection, userID) .Select(x => x.RoleId.Value)); var newList = new HashSet <Int32>(request.Roles.ToList()); if (oldList.SetEquals(newList)) { return(new SaveResponse()); } foreach (var k in oldList) { if (newList.Contains(k)) { continue; } new SqlDelete(fld.TableName) .Where( new Criteria(fld.UserId) == userID & new Criteria(fld.RoleId) == k) .Execute(uow.Connection); } foreach (var k in newList) { if (oldList.Contains(k)) { continue; } uow.Connection.Insert(new MyRow { UserId = userID, RoleId = k }); } BatchGenerationUpdater.OnCommit(uow, fld.GenerationKey); BatchGenerationUpdater.OnCommit(uow, Entities.UserPermissionRow.Fields.GenerationKey); return(new SaveResponse()); }
public async Task <IActionResult> UpdateUserRole(/*[FromForm]*/ UserRoleUpdateRequest request) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var result = await _userService.UpdateUserRole(request); if (!result) { return(BadRequest("Account is not exist")); } return(Ok(result)); }
public async Task <IActionResult> UpdateUserRoles(Guid userId, UserRoleUpdateRequest request, CancellationToken cancellationToken) { var user = await _dbContext.Users .Include(e => e.Roles) .FirstOrDefaultAsync(e => e.Id == userId, cancellationToken: cancellationToken); if (user == null) { return(NotFound(new ProblemDetails { Detail = "No such user" })); } var otherAdminsPresent = await _dbContext.Users .Where(e => e.Id != user.Id) .AnyAsync(e => e.Roles.Any(r => r.Name == "admin"), cancellationToken); if (!request.RoleNames.Contains("admin") && !otherAdminsPresent) { return(BadRequest(new ProblemDetails { Detail = "There must be at least one user with admin role" })); } user.Roles.Clear(); var requestedRoles = await _dbContext.Roles.Where(r => request.RoleNames.Contains(r.Name)) .ToListAsync(cancellationToken: cancellationToken); foreach (var role in requestedRoles) { user.Roles.Add(role); } await _dbContext.SaveChangesAsync(cancellationToken); return(NoContent()); }
public SaveResponse Update(IUnitOfWork uow, UserRoleUpdateRequest request) { return(new MyRepository().Update(uow, request)); }
public SaveResponse Update(IUnitOfWork uow, UserRoleUpdateRequest request) { return new MyRepository().Update(uow, request); }