/// <summary>
 /// User saving event.
 /// </summary>
 /// <remarks>
 /// User is already saved but the object itself is not updated yet.
 /// </remarks>
 void User_Saving(IUserService service, SaveEventArgs <IUser> e)
 {
     foreach (var savedEntity in e.SavedEntities)
     {
         if (savedEntity != null)
         {
             if (!savedEntity.IsNewEntity())
             {
                 // Update permissions for old users if the user type changes.
                 IUser savedUser = service.GetUserById(savedEntity.Id);
                 if (savedEntity.UserType.Alias != savedUser.UserType.Alias)
                 {
                     _userTypePermissionsService.CopyPermissionsForSingleUser(savedUser);
                 }
             }
             else
             {
                 // Set permissions for new users.
                 _userTypePermissionsService.CopyPermissionsForSingleUser(savedEntity);
             }
         }
     }
 }
        public object ApplyAllGroupPermissions(ApplyRequest request)
        {
            // Variables.
            var failureReason = default(string);
            var userService   = Services.UserService;
            var user          = userService.GetUserById(request.UserId);
            var success       = true;


            // User found?
            if (user == null)
            {
                success       = false;
                failureReason = UserNotFound;
            }


            // Copy permissions.
            if (success)
            {
                _userTypePermissionsService.CopyPermissionsForSingleUser(user);
            }


            // Indicate success or failure.
            if (success)
            {
                return(new
                {
                    Success = true
                });
            }
            else
            {
                return(new
                {
                    Success = false,
                    Reason = failureReason
                });
            }
        }