Example #1
0
        public Guid ResetPassword(Guid id, UsersResetPasswordModel model)
        {
            Customer customer = _customerRepository.Get(id);

            customer.AdminUser.SetPassword(model.NewPassword, expireImmediately: true);

            return(customer.Id);
        }
Example #2
0
        public ActionResult ResetPassword(Guid id, UsersResetPasswordModel model)
        {
            if (ModelState.IsValid)
            {
                _customerService.ResetPassword(id, model);
            }

            return(RedirectToAction("details", new { id = model.Id })
                   .AndAlert(AlertType.Success, "Customer updated.", "The Customer details were updated successfully."));
        }
Example #3
0
        public HttpResponseMessage ResetPassword(UsersResetPasswordModel model)
        {
            HttpResponseMessage resp = new HttpResponseMessage();

            IEnumerable <User> users = this.usersManager.GetItems() as IEnumerable <User>;

            User user = users.Where(u => u.Email == model.Email).FirstOrDefault();

            if (user != null)
            {
                if (user.ResetCode == model.ResetCode)
                {
                    string salt = PasswordHelper.CreateSalt(10);
                    string hashedNewPassword = PasswordHelper.CreatePasswordHash(model.NewPassword, salt);

                    user.Salt           = salt;
                    user.HashedPassword = hashedNewPassword;
                    user.ResetCode      = null;

                    this.usersManager.UpdateItem(user);
                    this.usersManager.SaveChanges();

                    resp.Content = new StringContent(JsonConvert.SerializeObject(new ChangeGeneralResponseViewModel()
                    {
                        IsSuccessful = true
                    }));
                    resp.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                }
                else
                {
                    resp.Content = new StringContent(JsonConvert.SerializeObject(new ChangeGeneralResponseViewModel()
                    {
                        IsSuccessful = false, State = "incorrect_reset_code"
                    }));
                    resp.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                }
            }


            return(resp);
        }
Example #4
0
        public async Task <IActionResult> TokenAuthentication([FromBody] LoginViewModel m)
        {
            IActionResult res = null;
            var           _b  = new BaseEntityDTO <LoginViewModel>()
            {
                Start = DateTime.Now, Itens = 1
            };

            try
            {
                var _urp = new UsersResetPasswordModel()
                {
                    Token = m.Token
                };

                var t = await new UsersResetPasswordRepository().FindById(_urp, null);

                if (t == null)
                {
                    throw new Exception($"Link expirado para redefinição de senha");
                }

                var existUser = await _userManager.FindByNameAsync(t.LoginUser);

                if (existUser == null)
                {
                    throw new Exception($"Usuário não encontrado");
                }

                string tokenPassword = await _userManager.GeneratePasswordResetTokenAsync(existUser);

                await _userManager.ResetAccessFailedCountAsync(existUser);

                string senha = Uteis.GeraSenha();

                var result = await _userManager.ResetPasswordAsync(existUser, tokenPassword, senha);

                if (!result.Succeeded)
                {
                    throw new Exception("Houve um erro ao tentar zerar a senha");
                }

                result = await _userManager.ChangePasswordAsync(existUser, senha, m.Password);

                if (!result.Succeeded)
                {
                    throw new Exception(result.Errors.Select(a => a.Description).Aggregate((n, o) => $"Ocorreram os seguintes erros: {n},{o}"));
                }

                await repository.Update(new UsersResetPasswordModel[] { new UsersResetPasswordModel()
                                                                        {
                                                                            Token        = m.Token,
                                                                            SenhaTrocada = true,
                                                                            LoginUser    = t.LoginUser
                                                                        } }, 0, null);

                m.Username = existUser.UserName;

                _b.Result = await AutenticaLogin(m, existUser);

                _b.End   = DateTime.Now;
                _b.Itens = 1;
                res      = Ok(_b);
            }
            catch (Exception err)
            {
                _b.End   = DateTime.Now;
                _b.Error = (err.InnerException ?? err).Message;
                res      = BadRequest(_b);
            }

            return(res);
        }