Esempio n. 1
0
 public async Task ChangeUser(User user, UserChangeRequest userChangeRequest)
 {
     user.FirstName = userChangeRequest.ChangeFirstName ? userChangeRequest.FirstName : user.FirstName;
     user.LastName  = userChangeRequest.ChangeLastName ? userChangeRequest.LastName : user.LastName;
     if (userChangeRequest.ChangePassword)
     {
         var(hash, salt)   = _passwordService.CreatePasswordHash(userChangeRequest.NewPassword);
         user.Password     = hash;
         user.PasswordSalt = salt;
     }
     await _unitOfWork.Users.Update(user);
 }
        public IActionResult RequestChange()
        {
            ViewData["where"] = ControllerName;
            if (ValidateSession())
            {
                if (Request.HasFormContentType)
                {
                    Microsoft.AspNetCore.Http.IFormCollection form = Request.Form;
                    UserChangeRequestTypes types = (UserChangeRequestTypes)Enum.Parse(typeof(UserChangeRequestTypes), form[nameof(UserChangeRequest.RequestTypes)][0]);
                    string            reason     = form[nameof(UserChangeRequest.DetailTexts)][0];
                    string            newVal     = form[nameof(UserChangeRequest.NewContent)][0];
                    UserChangeRequest request    = new UserChangeRequest()
                    {
                        DetailTexts  = reason,
                        SolverID     = "",
                        NewContent   = newVal,
                        Status       = UCRProcessStatus.NotSolved,
                        RequestTypes = types,
                        UserID       = CurrentUser.ObjectId
                    };

                    if (DataBaseOperation.CreateData(ref request) != DBQueryStatus.ONE_RESULT)
                    {
                        LW.E("AccountController->ProcessNewUCR: Create UCR Failed!");
                        return(DatabaseError(ServerAction.MyAccount_CreateChangeRequest, XConfig.Messages["CreateUCR_Failed"]));
                    }

                    InternalMessage messageAdmin = new InternalMessage()
                    {
                        _Type = GlobalMessageTypes.UCR_Created_TO_ADMIN, DataObject = request, User = CurrentUser, ObjectId = request.ObjectId
                    };
                    InternalMessage message_User = new InternalMessage()
                    {
                        _Type = GlobalMessageTypes.UCR_Created__TO_User, DataObject = request, User = CurrentUser, ObjectId = request.ObjectId
                    };
                    MessagingSystem.AddMessageProcesses(messageAdmin, message_User);

                    return(Redirect($"/{HomeController.ControllerName}/{nameof(HomeController.RequestResult)}?req=changereq&status=ok&callback=/Account/"));
                }
                else
                {
                    ViewData["cUser"] = CurrentUser.ToString();
                    return(View(new UserChangeRequest()
                    {
                        UserID = CurrentUser.ObjectId
                    }));
                }
            }
            else
            {
                return(LoginFailed("/" + ControllerName + "/" + nameof(RequestChange)));
            }
        }
        public IActionResult Update(Guid id, [FromBody] UserChangeRequest item)
        {
            if (item == null)
            {
                return(BadRequest());
            }

            var user = _context.User.FirstOrDefault(t => t.Id.Equals(id));

            if (user == null)
            {
                return(NotFound());
            }
            if (isUser(user))
            {
                user.LastName   = item.LastName;
                user.MailAdress = item.MailAdress;
                user.FirstName  = item.FirstName;
                _context.User.Update(user);
                _context.SaveChanges();
                return(new OkObjectResult(item));
            }
            return(Unauthorized());
        }
        public Response Post(UserChangeRequest request, string username)
        {
            var repo = this.Repository as NHibernateRepository;

            if (repo == null)
            {
                return(ThrowHttpReponseException("Repository is not NHibernateRepository."));
            }

            using (var transaction = repo.Session.BeginTransaction())
            {
                try
                {
                    var user = repo.Query <LMConnect.Key.User>()
                               .FirstOrDefault(u => u.Username == username);

                    if (user != null)
                    {
                        var update = request.GetPendingUpdate(user);

                        user.PendingUpdates.Add(update);
                        repo.Save(user);
                        transaction.Commit();

                        return(new UserUpdateResponse(update, request.EmailFrom));
                    }

                    return(ThrowHttpReponseException("User not found."));
                }
                catch
                {
                    transaction.Rollback();
                    throw;
                }
            }
        }