Example #1
0
        public async Task <ActionResult> RecuperarSenha(RecoverPassword model)
        {
            if (!model.Senha.Equals(model.ConfirmarSenha))
            {
                ViewBag.Error = "Senhas não conferem";
                return(View("Error"));
            }

            var data = new Dictionary <string, string> {
                { "Email", model.Email },
                { "Password", model.Senha },
                { "ConfirmPassword", model.ConfirmarSenha }
            };

            using (var client = new HttpClient()) {
                client.BaseAddress = new Uri(BaseUrl.URL);

                using (var requestContent = new FormUrlEncodedContent(data)) {
                    var response = await client.PostAsync("/api/Account/change", requestContent);

                    if (response.IsSuccessStatusCode)
                    {
                        return(RedirectToAction("Login", "Account"));
                    }

                    return(View("Error"));
                }
            }
        }
Example #2
0
        public ActionResult RecoverPassword()
        {
            var passwordResetToken = Request["PasswordResetToken"] ?? "";

            using (var context = new SEContext())
            {
                var user = context.User.Include("SecurityQuestionLookupItem").Where(u => u.PasswordResetToken == passwordResetToken && u.PasswordResetExpiry > DateTime.Now).FirstOrDefault();
                if (user == null)
                {
                    HandleErrorInfo error = new HandleErrorInfo(new ArgumentException("INFO: The password recovery token is not valid or has expired"), "Account", "RecoverPassword");
                    return(View("Error", error));
                }
                if (user.Enabled == false)
                {
                    HandleErrorInfo error = new HandleErrorInfo(new InvalidOperationException("INFO: Your account is not currently approved or active"), "Account", "Recover");
                    return(View("Error", error));
                }
                RecoverPassword recoverPasswordModel = new RecoverPassword()
                {
                    Id                 = user.Id,
                    SecurityAnswer     = "",
                    SecurityQuestion   = user.SecurityQuestionLookupItem.Description,
                    PasswordResetToken = passwordResetToken,
                    UserName           = user.UserName
                };
                return(View("RecoverPassword", recoverPasswordModel));
            }
        }
Example #3
0
        public async Task <IActionResult> RecoveryPassword([FromBody] RecoverPassword userRec)
        {
            try
            {
                var user = await _userManager.FindByEmailAsync(userRec.Email);

                if (user == null)
                {
                    return(BadRequest(new { message = "The selected email doesn't exist" }));
                }
                var code = await _userManager.ResetPasswordAsync(user, userRec.code, userRec.NewPassword);

                if (code.Succeeded)
                {
                    var response = new HttpResponseMessage(HttpStatusCode.OK);
                    response.Content = new StringContent("Password successfully updated");
                    return(Ok(response));
                }

                foreach (var err in code.Errors)
                {
                    if (err.Code.Equals("InvalidToken"))
                    {
                        return(BadRequest(new { message = "Invalid Token" }));
                    }
                }

                return(BadRequest(new { message = code.Errors }));
            }
            catch (Exception e)
            {
                var ex = e;
                return(BadRequest());
            }
        }
        public long RecoverPassword(RecoverPassword recoverEmail)
        {
            LogBook.LogBook.TextLog.Info(string.Format("EMail {0}", recoverEmail.recoverEmail));
            var repository = new INSecurityImplementation();
            var result     = repository.RecoverPassword(recoverEmail.recoverEmail, Request.RequestUri.GetLeftPart(UriPartial.Authority));

            return(string.IsNullOrEmpty(result)  ? (long)0 : (long)1);
        }
Example #5
0
        public async Task <ActionResult> RecoverPassword(RecoverPassword recoverPasswordModel)
        {
            using (var context = new SEContext())
            {
                var user = context.User.Where(u => u.Id == recoverPasswordModel.Id).FirstOrDefault();
                if (user == null)
                {
                    HandleErrorInfo error = new HandleErrorInfo(new Exception("INFO: The user is not valid"), "Account", "RecoverPassword");
                    return(View("Error", error));
                }
                if (!(user.Enabled))
                {
                    HandleErrorInfo error = new HandleErrorInfo(new Exception("INFO: Your account is not currently approved or active"), "Account", "Recover");
                    return(View("Error", error));
                }
                if (user.SecurityAnswer != recoverPasswordModel.SecurityAnswer)
                {
                    ModelState.AddModelError("SecurityAnswer", "The security answer is incorrect");
                    return(View("RecoverPassword", recoverPasswordModel));
                }
                if (recoverPasswordModel.Password != recoverPasswordModel.ConfirmPassword)
                {
                    ModelState.AddModelError("ConfirmPassword", "The passwords do not match");
                    return(View("RecoverPassword", recoverPasswordModel));
                }
                var recaptchaSuccess = ValidateRecaptcha();
                if (ModelState.IsValid && recaptchaSuccess)
                {
                    var result = await UserManager.ChangePasswordFromTokenAsync(user.Id, recoverPasswordModel.PasswordResetToken, recoverPasswordModel.Password);

                    if (result.Succeeded)
                    {
                        context.SaveChanges();
                        await UserManager.SignInAsync(user.UserName, false);

                        return(View("RecoverPasswordSuccess"));
                    }
                    else
                    {
                        AddErrors(result);
                        return(View("RecoverPassword", recoverPasswordModel));
                    }
                }
                else
                {
                    ModelState.AddModelError("", "Password change was not successful");
                    return(View("RecoverPassword", recoverPasswordModel));
                }
            }
        }
Example #6
0
        public bool CheckRecoverPassword(RecoverPassword recoverPassword)
        {
            var item = _usuarioInfrastructure.GetByMail(recoverPassword.Email);

            if (item == null)
            {
                return(false);
            }

            var tokens = _usuarioInfrastructure.GetTokenValid(item.Id);

            if (!tokens.Contains(recoverPassword.Token))
            {
                return(false);
            }

            _usuarioInfrastructure.ChangePassword(item.UserName, recoverPassword.Password);
            return(true);
        }
Example #7
0
        public bool ResetPassword(string email, out string message)
        {
            var result = false;

            message = string.Empty;
            try
            {
                using (var context = new BankingContext())
                {
                    var user = context.Users.FirstOrDefault(a => a.UserName.ToLower() == email.ToLower());
                    if (user != null)
                    {
                        var bytes = Encoding.UTF8.GetBytes(email + "!" + DateTime.Now.ToString());
                        var code  = Convert.ToBase64String(bytes);
                        var body  = $@"<h3>Dear Customer, </h3><p>Please click on the link below for your password reset.</p><br/>
                                    <p><a href='https://localhost:44376/account/resetpassword?g={code}'>Reset</a></p>";

                        var passwordRecord = new RecoverPassword
                        {
                            ExpiryTime   = DateTime.Now.AddMinutes(15),
                            RecoveryCode = code,
                            UserId       = user.Id
                        };

                        EmailService.SendEmail(email, "Password Recovery", body, true);

                        context.RecoverPasswords.Add(passwordRecord);
                        context.SaveChanges();

                        message = $"Recovery mail successfully sent to {email}";
                    }
                    else
                    {
                        message = "User with supplied email address not found";
                    }
                }
            }
            catch (Exception ex)
            {
                message = ex.Message;
            }
            return(result);
        }
Example #8
0
        public async Task <string> TryToSendEmailRecovery(string username)
        {
            var userExists = UserManager.FindByName(username);

            if (userExists == null)
            {
                return(String.Empty);
            }

            var valid           = ConfigurationManager.AppSettings["ValidPreregistrationDays"] ?? "5";
            var validUntil      = DateTime.UtcNow.AddDays(Convert.ToInt32(valid));
            var token           = Guid.NewGuid().ToString().Replace("-", "");
            var recoverPassword = new RecoverPassword
            {
                UserName   = username,
                ValidUntil = validUntil,
                Token      = token,
                Activated  = false
            };
            await _recoverPasswordRepository.AddAsync(recoverPassword);

            var templateDictionary = new Dictionary <string, string>
            {
                {
                    "TOKEN",
                    $"{ConfigurationManager.AppSettings["WebRoute"]}/login/recoverpassword?token={token}"
                },
                {
                    "NAME",
                    username
                }
            };
            const string lang = "en-US";

            await _emailServices.SendEmail(userExists.Email, "TechTrackerX Recover Password", "RecoverPassword", templateDictionary, lang);

            return(token);
        }
Example #9
0
        public Operation PasswordResetUpdate(RecoverPassword model)
        {
            return(Operation.Create(() =>
            {
                if (model == null)
                {
                    throw new Exception("Password recover cannot be empty");
                }

                model.Validate();

                var user = _db.Users.FirstOrDefault(c => c.PasswordResetCode == model.Code);

                if (user == null)
                {
                    throw new Exception("User code does not exist");
                }
                double code_in_minute = double.Parse(config["System:passwordResetCodeMinute"]);

                if (user.PasswordResetDate.Subtract(DateTime.Now).Minutes > code_in_minute)
                {
                    throw new Exception("Password reset code has expires, please request for a new reset code");
                }

                if (model.Password != model.ConfirmPassword)
                {
                    throw new Exception("Password must be equal confirm password");
                }

                user.Password = EncryptPassword(model.Password, user.Salt);
                user.ModifiedDate = DateTime.UtcNow;
                _db.Users.Update(user);

                _db.SaveChanges();
            }));
        }
        public async Task <IActionResult> Post([FromBody] RecoverPassword command)
        {
            await DispatchAsync(command);

            return(Ok());
        }
Example #11
0
        public IActionResult UpdatePassword([FromBody] RecoverPassword model)
        {
            var op = _repo.PasswordResetUpdate(model);

            return(Ok(op));
        }
Example #12
0
        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            RecoverPassword recForm = new RecoverPassword();

            recForm.ShowDialog();
        }