示例#1
0
        /// <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));
 }