/// <summary> /// Updates a User's PortalAccess features, e.g. /// Username and UserRole. /// NOTE: this method must return the AuthUserId of the edited user, /// so that anything requiring an access change can handle it for the /// appropriate AuthUser. /// </summary> public UpdatePortalAccessResult UpdatePortalAccess(int userId, PortalAccessUpdater updater) { ThrowIfNull(updater); ValidateAndThrow(updater, new PortalAccessUpdaterValidator()); var user = Context.Users .Include(u => u.AuthUser) .SingleOrDefault(u => u.Id == userId); ThrowIfNull(user); // ReSharper disable once PossibleNullReferenceException if (!user.AuthUser.IsEditable) { throw new ValidationException("This is a protected user and cannot be edited"); } user.AuthUser.Username = updater.Username; user.AuthUser.RoleId = updater.UserRoleId; Context.SetEntityState(user.AuthUser, EntityState.Modified); Context.SaveChanges(); var res = new UpdatePortalAccessResult { Version = user.Version, AuthUserId = user.AuthUserId }; return(res); }
public IHttpActionResult UpdatePortalAccess(int userId, PortalAccessUpdater updater) { return(ExecuteConcurrentValidatedAction(userId, () => { UpdatePortalAccessResult result = _userService.UpdatePortalAccess(userId, updater); RoleManager.StampAuthUser(result.AuthUserId); return Ok(result.Version); }, _userService.Reload)); }