Esempio n. 1
0
        public Response ResetPassword(ResetPasswordRequest request)
        {
            var login = _repository.Select<Login>()
                .Join(l => l.User)
                .FirstOrDefault(l => l.Token == request.Token);

            if (login == null || !login.IsPasswordRecovery)
            {
                throw Errors.User_InvalidPasswordRecoveryToken;
            }

            if (login.ExpireDate < DateTime.UtcNow)
            {
                throw Errors.User_PasswordRecoveryTokenExpired;
            }

            login.ExpireDate = DateTime.UtcNow;
            login.User.Password = _crypto.ComputeHash(request.NewPassword);

            _repository.Update(login);
            _repository.Update(login.User);

            login = CreateLogin(login.User);

            return Response.Success.WithData(new
            {
                login.Token
            });
        }
        public Result<ServiceResponse> ResetPassword(ResetPasswordRequest request)
        {
            return this.InTransaction("Default", uow =>
            {
                request.CheckNotNull();

                if (string.IsNullOrEmpty(request.Token))
                    throw new ArgumentNullException("token");

                int userId;
                using (var ms = new MemoryStream(MachineKey.Unprotect(
                    Convert.FromBase64String(request.Token), "ResetPassword")))
                using (var br = new BinaryReader(ms))
                {
                    var dt = DateTime.FromBinary(br.ReadInt64());
                    if (dt < DateTime.UtcNow)
                        throw new ValidationError(Texts.Validation.InvalidResetToken);

                    userId = br.ReadInt32();
                }

                UserRow user;
                using (var connection = SqlConnections.NewFor<UserRow>())
                {
                    user = connection.TryById<UserRow>(userId);
                    if (user == null)
                        throw new ValidationError(Texts.Validation.InvalidResetToken);
                }

                if (request.ConfirmPassword != request.NewPassword)
                    throw new ValidationError("PasswordConfirmMismatch", LocalText.Get("Validation.PasswordConfirm"));

                request.NewPassword = UserRepository.ValidatePassword(user.Username, request.NewPassword, false);

                var salt = Membership.GeneratePassword(5, 1);
                var hash = SiteMembershipProvider.ComputeSHA512(request.NewPassword + salt);
                UserRepository.CheckPublicDemo(user.UserId);

                uow.Connection.UpdateById(new UserRow
                {
                    UserId = user.UserId.Value,
                    PasswordSalt = salt,
                    PasswordHash = hash
                });

                BatchGenerationUpdater.OnCommit(uow, UserRow.Fields.GenerationKey);

                return new ServiceResponse();
            });
        }
Esempio n. 3
0
        public void ResetPassword_Call_FindByIdAsync_ResetPasswordAsync_Methods()
        {
            var accountsController = new AccountsController(
                _applicationUserManager.Object,
                _emailSendingServiceMock.Object,
                _inviteServiceMock.Object);

            var resetPassword = new ResetPasswordRequest {
                UserId = "SomeIdId", Code = "Code"
            };
            var resetResult = IdentityResult.Success;

            _applicationUserManager.Setup(um => um.FindByIdAsync(It.IsAny <string>())).ReturnsAsync(_registerUser);
            _applicationUserManager.Setup(um => um.ResetPasswordAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(resetResult);

            var actionResult = accountsController.ResetPassword(resetPassword);

            _applicationUserManager.Verify(um => um.FindByIdAsync(It.IsAny <string>()), Times.Once());
            _applicationUserManager.Verify(um => um.ResetPasswordAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()), Times.Once());
        }
        public async Task <BaseResponse <string> > ResetPasswordAsync(ResetPasswordRequest request)
        {
            var user = await _userManager.FindByEmailAsync(request.Email);

            if (user == null)
            {
                throw new ApiException($"You are not registered with '{request.Email}'.");
            }

            var result = await _userManager.ResetPasswordAsync(user, request.Token, request.Password);

            if (result.Succeeded)
            {
                return(new BaseResponse <string>(request.Email, message: $"Password Resetted."));
            }
            else
            {
                throw new ApiException($"Error occured while reseting the password. Please try again.");
            }
        }
Esempio n. 5
0
        public async Task <bool> ResetPassword(ResetPasswordRequest request)
        {
            var getUser = await _schoolHubDbContext.User.FirstOrDefaultAsync(x => x.Id == request.UserId && x.IsEmailConfirmed == true);

            if (getUser != null)
            {
                getUser.Password = request.Password;
            }
            _schoolHubDbContext.Entry(getUser).State = EntityState.Modified;
            await _schoolHubDbContext.SaveChangesAsync();

            //TODO: Send Email to User
            #region New Password Reset Notification
            const int type = (int)NotificationType.PasswordReset;
            await _notificationProcessor.ProcessNotificationAsync(getUser, type);

            #endregion

            return(true);
        }
Esempio n. 6
0
        private async Task <ApiResponse> ResetPassword(ResetPasswordRequest request)
        {
            var apiResp = new ApiResponse
            {
                ResponseCode = ResponseCode.Fail
            };

            var securityResp = await _security.Reset(request.EmailOrUsername);

            if (securityResp.ResponseCode != ResponseCode.Success)
            {
                apiResp.ResponseMessage = securityResp.ResponseMessage;

                return(apiResp);
            }

            apiResp.ResponseCode = ResponseCode.Success;

            return(apiResp);
        }
Esempio n. 7
0
        public async Task ResetPassword(ResetPasswordRequest model)
        {
            var user = _context.User.SingleOrDefault(x =>
                                                     x.ResetToken == model.Token &&
                                                     x.ResetTokenExpires > DateTime.UtcNow);

            if (user == null)
            {
                throw new AppException("Invalid token");
            }

            // update password and remove reset token
            user.PasswordHash      = BC.HashPassword(model.Password);
            user.PasswordReset     = DateTime.UtcNow;
            user.ResetToken        = null;
            user.ResetTokenExpires = null;

            _context.User.Update(user);
            await _context.SaveChangesAsync();
        }
Esempio n. 8
0
        protected void login_Click(object sender, EventArgs e)
        {
            ResetPasswordRequest request = new ResetPasswordRequest();

            request.Email       = Request.QueryString["email"];
            request.Guid        = Request.QueryString["guid"];
            request.NewPassword = tbPassword.Text;

            PasswordRecoveryResponse response = _systemService.ResetPassword(request);

            if (response.Success)
            {
                X.Msg.Alert("Success", "Your Password Has been changed succesfully!");
                Response.Redirect("~/Login.aspx");
            }
            else
            {
                lblError.Text = "Could not Reset Password";
            }
        }
Esempio n. 9
0
        public void ResetPassword(ResetPasswordRequest model)
        {
            var account = accountRepository.GetAll().SingleOrDefault(
                x => x.ResetToken == model.Token &&
                x.ResetTokenExpires > DateTime.UtcNow
                );

            if (account == null)
            {
                throw new AppException("Invalid token");
            }

            // update password and remove reset token
            account.PasswordHash      = BC.HashPassword(model.Password);
            account.PasswordReset     = DateTime.UtcNow;
            account.ResetToken        = null;
            account.ResetTokenExpires = null;

            accountRepository.Update(account, account.Id);
        }
Esempio n. 10
0
        public ActionResult <LoginResponse> ResetPassword([Required, FromBody] ResetPasswordRequest request)
        {
            if (string.IsNullOrEmpty(request.newPassword))
            {
                return(ModelError("newPassword", LoginAuthMessage.PasswordMustHaveAValue.NiceToString()));
            }

            var error = UserEntity.OnValidatePassword(request.newPassword);

            if (error != null)
            {
                return(ModelError("newPassword", error));
            }

            var rpr = ResetPasswordRequestLogic.ResetPasswordRequestExecute(request.code, request.newPassword);

            return(new LoginResponse {
                userEntity = rpr.User, token = AuthTokenServer.CreateToken(rpr.User), authenticationType = "resetPassword"
            });
        }
Esempio n. 11
0
        public async Task ResetPasswordAsync_WhenPasswordResetFailed_ShouldReturnResetPasswordFailed()
        {
            var request = new ResetPasswordRequest()
            {
                Password = "******",
                UserId   = Guid.NewGuid(),
                Code     = "verification code",
            };

            _mockUserManger.Setup(e => e.FindByIdAsync(request.UserId.ToString()))
            .ReturnsAsync(new User());
            _mockUserManger.Setup(e => e.ResetPasswordAsync(It.IsAny <User>(), request.Code, request.Password))
            .ReturnsAsync(IdentityResult.Failed());

            var response = await sut.ResetPasswordAsync(request);

            response.IsSuccess.Should().BeFalse();
            response.ResponseException !.ErrorCode.Should().Be(ErrorCode.ResetPasswordFailed);
            response.ResponseException.ErrorMessage.Should().Be(ErrorCode.ResetPasswordFailed.GetDescription());
        }
Esempio n. 12
0
        public void TestResetPasswordWithInvalidToken()
        {
            var claims = new Claim[]
            {
                new Claim(ClaimTypes.Email, testAccount.Email)
            };
            var tokenConfig = appSettings.Value.TokenConfig;
            var token       = IdentityHelper.GenerateToken(tokenConfig.Secret, tokenConfig.Issuer, tokenConfig.Audience, claims, tokenConfig.Expires);

            token = token.Replace('e', 'f');
            var request = new ResetPasswordRequest
            {
                Token       = token,
                NewPassword = "******"
            };
            var result = service.ResetPassword(request);

            Assert.AreEqual(false, result.IsSuccess);
            Assert.AreEqual(IdentityResultCode.InvalidToken, result.ResultCode);
        }
Esempio n. 13
0
        public void ResetPassword(ResetPasswordRequest model)
        {
            var account = _context.Accounts.SingleOrDefault(x =>
                                                            x.ResetToken == model.Token &&
                                                            x.ResetTokenExpires > DateTime.UtcNow);

            if (account == null)
            {
                throw new AppException("Invalid token");
            }

            // update password and remove reset token
            account.PasswordHash      = BC.HashPassword(model.Password);
            account.PasswordReset     = DateTime.UtcNow;
            account.ResetToken        = null;
            account.ResetTokenExpires = null;

            _context.Accounts.Update(account);
            _context.SaveChanges();
        }
        public async Task <ActionResult> ResetPassword(ResetPasswordRequest model)
        {
            // Using email address since the username is public information
            var user = await this.userManager.FindByEmailAsync(model.Email);

            if (user == null)
            {
                // Don't reveal that the user does not exist
                return(this.Ok());
            }

            var code = await this.userManager.GeneratePasswordResetTokenAsync(user);

            await this.emailSender.SendEmailAsync(
                model.Email,
                "Password Reset",
                $"There was a request to reset your Clicker Heroes Tracker password. If this was not you, please ignore this email.<br /><br />To reset your password, please enter this verification code:<br /><br />{code}");

            return(this.Ok());
        }
Esempio n. 15
0
        public Reply resetPassword(ResetPasswordRequest oRequest)
        {
            Reply oReply = new Reply();

            oReply.status = Constants.ERROR;
            try
            {
                //validaciones comunes
                if (!ModelState.IsValid)
                {
                    oReply.message = GetErrorsModel();
                    return(oReply);
                }
                using (ZonasAkronDevEntities db = new ZonasAkronDevEntities())
                {
                    users oUser = (from d in db.users
                                   where d.resetPassword.Equals(oRequest.token) && d.idStatus == 1
                                   select d).FirstOrDefault();
                    if (oUser == null)
                    {
                        oReply.message = "Su solicitud ya no es válida inténtelo nuevamente.";
                    }
                    else
                    {
                        string newPass = Utilities.Encrypt.GetSHA256(oRequest.password);
                        oUser.password        = newPass;
                        oUser.resetPassword   = "";
                        oUser.updated_at      = DateTime.Now;
                        db.Entry(oUser).State = System.Data.Entity.EntityState.Modified;
                        db.SaveChanges();
                        oReply.status  = Constants.SUCCESS;
                        oReply.message = "Tu contraseña se modificó correctamente";
                    }
                }
            }
            catch (Exception ex)
            {
                oReply.message = Constants.Exception.ERROR + ex.Message;
            }
            return(oReply);
        }
Esempio n. 16
0
        public void RequestPasswordReset(string email, string siteUrl, Func <string, string> resetUrlGenerator)
        {
            if (string.IsNullOrEmpty(email))
            {
                throw new ArgumentNullException("email");
            }

            if (string.IsNullOrEmpty(siteUrl))
            {
                throw new ArgumentNullException("siteurl");
            }

            if (resetUrlGenerator == null)
            {
                throw new ArgumentNullException("resetUrlGenerator");
            }

            User user = _userService.GetUserByEmail(email);

            if (user == null)
            {
                throw new UserNotExistsException(string.Format(CultureInfo.InvariantCulture, "User with email {0} not found", email));
            }

            DateTime expiration = DateTime.UtcNow.Add(_webConfiguration.ResetPasswordRequestExpiration);

            ResetPasswordRequest request = _userService.CreatePasswordResetRequestForUser(user, expiration);
            string       link            = resetUrlGenerator(request.Token);
            TimeZoneData timeZoneData    = _timeZonesProvider.GetTimeZoneByIdOrDefault(user.TimeZone);
            var          templateData    = new Dictionary <string, object>
            {
                { "link", link },
                { "siteurl", siteUrl },
                { "username", user.Name },
                { "expire", new DateTimeOffset(request.Expiration).ToOffset(timeZoneData.Offset).ToString("dd.MM.yyyy HH:mm zzz") }
            };
            string emailBody    = _templateEngine.TransformTemplate(templateData, MailResources.RestorePasswordMailBody);
            string emailSubject = _templateEngine.TransformTemplate(templateData, MailResources.RestorePasswordMailSubject);

            _mailService.SendMessage(emailSubject, emailBody, _webConfiguration.RestorePasswordMailFrom, user.Email);
        }
Esempio n. 17
0
        public async Task <Result> ResetPassword(ResetPasswordRequest request)
        {
            ValidationResult validationResult = _recoverPasswordValidator.Validate(request);

            if (!validationResult.IsValid)
            {
                _logger.LogWarning($"Invlid RecoverPassword request");
                return(Result.Fail(validationResult.Errors));
            }

            AppUserEntity appUser = await _userManager.FindByEmailAsync(request.Email);

            if (appUser == null)
            {
                _logger.LogWarning($"No user. Email {request.Email}");
                return(Result.Ok());
            }

            bool emailConfirmed = await _userManager.IsEmailConfirmedAsync(appUser);

            if (!emailConfirmed || !appUser.Enabled || appUser.LockoutEnd != null)
            {
                _logger.LogWarning($"User email not confirmed. UserId {appUser.Id}");
                return(Result.Ok());
            }

            string         code           = Encoding.UTF8.GetString(WebEncoders.Base64UrlDecode(request.Code));
            IdentityResult identityResult = await _userManager.ResetPasswordAsync(appUser, code, request.Password);

            if (!identityResult.Succeeded)
            {
                _logger.LogWarning($"Faild to reset password for user. User {appUser.Id}");
                return(Result.Fail(identityResult.Errors));
            }

            await _emailSender.SendEmailAsync(appUser.Email, "Password changed", $"Your password has been changed");

            _logger.LogInformation($"Password reset. UserId {appUser.Id}");

            return(Result.Ok());
        }
        public async Task <JsonResult> ResetPassword([FromBody] ResetPasswordRequest request)
        {
            BaseResponse response = new BaseResponse();
            AppUser      user     = await _userManager.FindByEmailAsync(request.Email);

            if (user != null)
            {
                IdentityResult identityResult = await _userManager.ResetPasswordAsync(user, request.Token, request.Password);

                if (identityResult.Succeeded)
                {
                    response.Number  = 1;
                    response.Message = "Şifre Başarılı Bir Şekilde Değiştirilmiştir";
                    return(Json(response));
                }
                identityResult.Errors.ToList <IdentityError>();
            }
            response.Number  = 2;
            response.Message = "Geçersiz Email ve Token Bilgisi";
            return(Json(response));
        }
        /// <summary>
        /// Resets the password of the user.
        /// </summary>
        /// <param name="resetPasswordDetails"></param>
        /// <returns>returns 200 status code, if password reset is success</returns>
        public async Task <IHttpActionResult> ResetPassword(ResetPasswordRequest resetPasswordDetails)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            try
            {
                var isOTPValid = await _unitOfWork.GetForgotPasswordRepository().VerifyOTP(resetPasswordDetails.OTP, resetPasswordDetails.UserId);

                if (isOTPValid)
                {
                    await _repo.ResetPassword(resetPasswordDetails.NewPassword, resetPasswordDetails.UserId);
                }
                return(Ok("password reset successfully"));
            }
            catch (Exception e)
            {
                return(InternalServerError(e));
            }
        }
        public async Task <bool> ResetUserPasswordAsync(ResetPasswordRequest req)
        {
            var user = await _repo.GetAsync(req.Id);

            if (user == null)
            {
                throw new KeyNotFoundException($"Could not find user with id: {req.Id}");
            }

            user.Password = req.Password;
            var updatedUser = _repo.Update(user);

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

            await _repo.UnitOfWork.SaveChangesAsync();

            return(true);
        }
Esempio n. 21
0
        public async Task <Response <string> > ResetPasswordAsync(ResetPasswordRequest request)
        {
            var user = await _userRepository.FindAsync(x =>
                                                       x.ResetToken == request.Token &&
                                                       x.ResetTokenExpires > DateTime.UtcNow);

            if (user == null)
            {
                throw new ApiException("Invalid token");
            }

            // update password and remove reset token
            user.Password          = BC.HashPassword(request.Password);
            user.PasswordReset     = DateTime.UtcNow;
            user.ResetToken        = null;
            user.ResetTokenExpires = null;

            await _userRepository.UpdateAsync(user);

            return(new Response <string>(user.Email, "Password Resetted."));
        }
Esempio n. 22
0
        public async Task <IResult> ResetPasswordAsync(ResetPasswordRequest request)
        {
            var user = await _userManager.FindByEmailAsync(request.Email);

            if (user == null)
            {
                // Don't reveal that the user does not exist
                return(Result.Fail("An Error has occured!"));
            }

            var result = await _userManager.ResetPasswordAsync(user, request.Token, request.Password);

            if (result.Succeeded)
            {
                return(Result.Success("Password Reset Successful!"));
            }
            else
            {
                return(Result.Fail("An Error has occured!"));
            }
        }
Esempio n. 23
0
        public async Task ResetPasswordAsync_Should_Return_NoContentResult()
        {
            var resetPasswordRequest = new ResetPasswordRequest
            {
                Email           = "*****@*****.**",
                Code            = "123456",
                Password        = "******",
                ConfirmPassword = "******",
            };
            var resetPasswordCommand = new ResetPasswordCommand(resetPasswordRequest.Email, resetPasswordRequest.Code, resetPasswordRequest.Password);

            _mapperMock.Setup(x => x.Map <ResetPasswordRequest, ResetPasswordCommand>(It.IsAny <ResetPasswordRequest>())).Returns(resetPasswordCommand);
            _communicationBusMock.Setup(x => x.SendCommandAsync(It.IsAny <ResetPasswordCommand>(), It.IsAny <CancellationToken>()))
            .Returns(Task.CompletedTask);

            var result = await _controller.ResetPasswordAsync(resetPasswordRequest);

            var noContentResult = result.As <NoContentResult>();

            noContentResult.Should().NotBeNull();
        }
Esempio n. 24
0
        private void ResetUserPassword()
        {
            if (Page.IsValid)
            {
                string password = txtPassword.Text;

                if (userID != -1)
                {
                    //Updates Password for the specified user
                    User user = new User();
                    user.ChangePassword(userID, password);

                    //Deletes ForgotPasswordRequest record from database table
                    ResetPasswordRequest request = new ResetPasswordRequest();
                    request.DeleteResetPasswordRequest(userID);

                    // Shows a confirmation message & Redirects the user to the Sign In page
                    divSuccess.Visible = true;
                }
            }
        }
Esempio n. 25
0
        public ActionResult ResetPassword(string token)
        {
            if (string.IsNullOrEmpty(token))
            {
                throw new HttpException((int)HttpStatusCode.NotFound, "not found");
            }

            ResetPasswordRequest request = _membershipService.GetActivePasswordResetRequestByToken(token);

            if (request == null)
            {
                throw new HttpException((int)HttpStatusCode.NotFound, "not found");
            }

            ResetPasswordModel model = new ResetPasswordModel();

            model.Init(_membershipService.MinPasswordLength);
            model.Token = request.Token;

            return(View(model));
        }
        private void ResetPassword()
        {
            string email = txtEmail.Text;
            User   user  = new User();

            //Retrieves a user's details by providing their email
            user = user.GetUserByEmail(email);
            if (user != null)
            {
                string               guid            = Guid.NewGuid().ToString();
                int                  userID          = user.ID;
                DateTime             requestdateTime = DateTime.Now;
                ResetPasswordRequest request         = new ResetPasswordRequest(guid, userID, requestdateTime);
                request.AddResetPasswordRequest(request);

                //Send an Email to the specified user using query string
                string toEmailAddress = user.Email;
                string username       = user.Username;
                //Response.Redirect("~/Pages/UserAccounts/ResetPassword.aspx?GUID=" + guid);
                string      emailBody   = "Hello" + username + ",<br/>Click the link below to reset your password<br/><br/> http://localhost:52449/UserAccounts/ResetPassword.aspx?GUID=" + guid;
                MailMessage mailMessage = new MailMessage("*****@*****.**", toEmailAddress);
                mailMessage.Body       = emailBody;
                mailMessage.IsBodyHtml = true;
                mailMessage.Subject    = "Reset Password";

                //Create an SMTP object
                SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", 587);
                smtpClient.Credentials = new NetworkCredential()
                {
                    UserName = "******",
                    Password = "******"
                };
                smtpClient.EnableSsl = true;
                smtpClient.Send(mailMessage);
            }
            else
            {
                divFail.Visible = true;
            }
        }
Esempio n. 27
0
        public IActionResult ForgotPassword(ForgotPasswordViewModel model)
        {
            var _user = new AuthenticateResponse
            {
                MembershipKey = 1006979,                   //1007435,
                EmailAddress  = "*****@*****.**", //"*****@*****.**",
                FirstName     = "Tolulope",
                LastName      = "Olusakin",
                FullName      = "Olusakin Tolulope S"//"Funmilayo Ruth Adeyemi",
            };
            ResetPasswordResponse response = new ResetPasswordResponse();

            try
            {
                var resetRequest = new ResetPasswordRequest
                {
                    Username     = model.Username,
                    EmailAddress = model.EmailAddress
                };
                response = _clientService.ResetPassword(resetRequest);

                if (response.ResponseCode == "00" || response.ResponseCode == "0")
                {
                    var msg = "Success: " + response.ResponseMessage;
                    ViewBag.message = msg;
                    return(View(model));
                }
                else
                {
                    ViewBag.message = response.ResponseMessage;
                }
            }
            catch (Exception ex)
            {
                ViewBag.message = ex.Message;
                Utilities.ProcessError(ex, _contentRootPath);
                _logger.LogError(null, ex, ex.Message);
            }
            return(View(model));
        }
Esempio n. 28
0
        public override Task <BooleanMessageReply> ResetPassword(ResetPasswordRequest request, ServerCallContext context)
        {
            try
            {
                if (Game.World.WorldData.TryGetAuthInfo(request.Username, out AuthInfo login))
                {
                    // Simple length check
                    if (request.NewPassword.Length > 8 || request.NewPassword.Length < 4)
                    {
                        return(Task.FromResult(new BooleanMessageReply()
                        {
                            Message = "Passwords must be between 4 and 8 characters",
                            Success = false
                        }));
                    }

                    login.PasswordHash = BCrypt.Net.BCrypt.HashPassword(request.NewPassword,
                                                                        BCrypt.Net.BCrypt.GenerateSalt(12));
                    login.LastPasswordChange     = DateTime.Now;
                    login.LastPasswordChangeFrom = context.Peer;
                    login.Save();
                }
                else
                {
                    return(Task.FromResult(new BooleanMessageReply()
                    {
                        Message = "Unknown user", Success = false
                    }));
                }
            }
            catch (Exception e)
            {
                GameLog.UserActivityError("grpc: ResetPassword: unknown exception {e}", e);
            }
            return(Task.FromResult(new BooleanMessageReply()
            {
                Message = "Unknown error", Success = false
            }));
        }
Esempio n. 29
0
        public ResetPasswordResponse SendResetPasswordMail(ResetPasswordRequest req)
        {
            User user = _context.Users.Where(p => p.Email == req.Email && p.Active)
                        .Select(s => s).FirstOrDefault();
            UserActivation usersActivation = new UserActivation();

            usersActivation.User           = user;
            usersActivation.StartTime      = DateTime.Now;
            usersActivation.ActivationCode = GenerateActivationCode();
            usersActivation.ActivationType = ActivationType.PasswordReset;
            _mailService.SetActivation(usersActivation.Adapt <Activation>());
            _mailService.SetEmailType(EmailType.PasswordReset);
            _mailService.SetMailBoxes = ConvertUserToMailBoxesArray(user);
            _mailService.SetEmailMessage();
            _mailService.SendEmailAsync();
            _context.UserActivations.Add(usersActivation);
            _context.SaveChangesAsync();
            ResetPasswordResponse res = new ResetPasswordResponse();

            res.isResetMailSent = true;
            return(res);
        }
        public ResponseDto ResetPassword(ResetPasswordRequest request)
        {
            request.mobile_number = Common.GetStandardMobileNumber(request.mobile_number);
            ResponseDto response            = new ResponseDto();
            Consumer    consumer            = null;
            string      newPasswordHash     = TokenGenerator.GetHashedPassword(request.new_password, 49);
            string      confirmPasswordHash = TokenGenerator.GetHashedPassword(request.confirm_password, 49);

            try
            {
                using (UserDao dao = new UserDao())
                {
                    consumer = dao.FindByMobileNumber(request.mobile_number);
                    if (consumer == null)
                    {
                        MakeNouserResponse(response);
                        return(response);
                    }
                    if (newPasswordHash == confirmPasswordHash)
                    {
                        consumer.Password = TokenGenerator.GetHashedPassword(request.new_password, 49);
                        dao.Update(consumer);
                        response.code         = 0;
                        response.has_resource = 1;
                        response.message      = MessagesSource.GetMessage("passwd.reset");
                        return(response);
                    }
                }
                response.code         = 1;
                response.has_resource = 0;
                response.message      = MessagesSource.GetMessage("exception");
                return(response);
            }
            catch (Exception ex)
            {
                response.MakeExceptionResponse(ex);
                return(response);
            }
        }
Esempio n. 31
0
        public async Task <IActionResult> ResetPassword([FromBody] ResetPasswordRequest request)
        {
            var shopUser = await _userManager.FindByIdAsync(request.UserId);

            if (shopUser != null)
            {
                var decodedToken        = EncodeHelper.Base64Decode(request.Token);
                var resetPasswordResult = await _userManager.ResetPasswordAsync(shopUser, decodedToken, request.Password);

                if (resetPasswordResult.Succeeded)
                {
                    return(StatusCode((int)HttpStatusCode.OK, "Password was reset"));
                }

                return(StatusCode((int)HttpStatusCode.BadRequest,
                                  new ErrorResponse(ErrorReasons.BadRequest,
                                                    resetPasswordResult.Errors.Select(e => e.Description).FirstOrDefault())));
            }

            return(StatusCode((int)HttpStatusCode.NotFound,
                              new ErrorResponse(ErrorReasons.NotFound, "User was not found.")));
        }
Esempio n. 32
0
        public async Task <IActionResult> ResetPassword(ResetPasswordRequest resetPassword)
        {
            try
            {
                if (!ValidateResetPasswordRequest(resetPassword))
                {
                    return(BadRequest(new { Message = "Please Enter Proper Data" }));
                }

                var user = HttpContext.User;
                if (user.HasClaim(u => u.Type == "TokenType"))
                {
                    if ((user.Claims.FirstOrDefault(u => u.Type == "TokenType").Value == "ForgotPassword") ||
                        (user.Claims.FirstOrDefault(u => u.Type == "TokenType").Value == "login"))
                    {
                        int userID = Convert.ToInt32(user.Claims.FirstOrDefault(u => u.Type == "UserID").Value);
                        success = await _userBusiness.ResetPassword(userID, resetPassword);

                        if (success)
                        {
                            success = true;
                            message = "Your Password Changed Successfully";
                            return(Ok(new { success, message }));
                        }
                        else
                        {
                            message = "Unable to Change the Password";
                            return(NotFound(new { success, message }));
                        }
                    }
                }
                message = "Invalid Token";
                return(BadRequest(new { success, message }));
            }
            catch (Exception ex)
            {
                return(BadRequest(new { ex.Message }));
            }
        }
Esempio n. 33
0
        public Result<ServiceResponse> ResetPassword(ResetPasswordRequest request)
        {
            return this.InTransaction("Default", uow =>
            {
                request.CheckNotNull();

                if (string.IsNullOrEmpty(request.Token))
                    throw new ArgumentNullException("token");

                var username = Authorization.Username;

                //if (!Dependency.Resolve<IAuthenticationService>().Validate(ref username, request.OldPassword))
                //    throw new ValidationError("CurrentPasswordMismatch", Texts.Validation.CurrentPasswordMismatch);

                if (request.ConfirmPassword != request.NewPassword)
                    throw new ValidationError("PasswordConfirmMismatch", Texts.Validation.PasswordConfirmMismatch);

                request.NewPassword = UserRepository.ValidatePassword(username, request.NewPassword, false);

                var salt = Membership.GeneratePassword(5, 1);
                var hash = SiteMembershipProvider.ComputeSHA512(request.NewPassword + salt);

                uow.Connection.UpdateById(new UserRow
                {
                    UserId = int.Parse(Authorization.UserId),
                    PasswordSalt = salt,
                    PasswordHash = hash
                });

                BatchGenerationUpdater.OnCommit(uow, UserRow.Fields.GenerationKey);

                return new ServiceResponse();
            });
        }
Esempio n. 34
0
        public static bool ResetPassword(ResetPasswordRequest model)
        {
            if (string.IsNullOrEmpty(model.NewPassword))
            {
                throw new Exception("You must provide a password");
            }

            Guid tokenGuid = new Guid(model.TokenId);

            Token token = UserTokensService.Get(tokenGuid); // Given the token, Get the UserName

            ApplicationUser applicationUser = GetUserbyUserName(token.UserName); // From the UserName, get UserId

            bool success = ChangePassWord(applicationUser.Id, model.NewPassword); // applicationUser has the email we needed to use ChangePassWord

            if (success)
            {
                UserTokensService.Delete(tokenGuid);
            }

            return success;
        }
        public ResetPasswordResponse ResetPassword(ResetPasswordRequest request)
        {
            var response = new ResetPasswordResponse();

            try
            {
                if (WebSecurity.ResetPassword(request.ResetPasswordToken, request.NewPassword))
                {
                    response.Status = StatusCode.OK;
                }
                else
                {
                    response.Status = StatusCode.Unauthorized;
                }
            }
            catch (Exception ex)
            {
                response.Status = StatusCode.InternalServerError;
                this.exceptionHandler.HandleException(ex);
            }

            return response;
        }
 public ResetPasswordResponse ResetPassword(ResetPasswordRequest request)
 {
     throw new NotImplementedException();
 }
Esempio n. 37
0
        public HttpResponseMessage NewPassword(ResetPasswordRequest model)
        {
            BaseResponse resp = null;

            if (!ModelState.IsValid)  //if my data is NOT valid
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); //it will return as error response
            }

            var success = UserService.ResetPassword(model);

            if (!success)
            {
                resp = new ErrorResponse("Unable to change password! Your password must have the following: At least one uppercase ('A'-'Z'), at least one digit ('0'-'9'), and at least one special character.");
                return Request.CreateResponse(HttpStatusCode.BadRequest, resp);
            }

            ItemResponse<bool> response = new ItemResponse<bool>();
            response.Item = success;
            return Request.CreateResponse(response);
        }
Esempio n. 38
0
        public ActionResult ResetPassword(ResetPasswordViewModel model)
        {
            if (this.ModelState.IsValid)
            {
                var request = new ResetPasswordRequest
                {
                    ResetPasswordToken = model.ResetPasswordToken,
                    NewPassword = model.NewPassword
                };

                var response = this.authenticationService.ResetPassword(request);

                if (response.Status == StatusCode.OK)
                {
                    this.TempData["SuccessMessage"] = "You have successfully reset your password. Please login with your new credentials.";
                    return this.RedirectToAction("login");
                }
                else
                {
                    this.TempData.Add("ResetPasswordFail", "XXX");
                    return this.RedirectToAction("request-password");
                }
            }

            return this.View();
        }
Esempio n. 39
0
        /// <summary>
        /// The generate change password link.
        /// </summary>
        /// <param name="request">
        /// The request.
        /// </param>
        /// <returns>
        /// The TdService.Services.Messaging.Membership.ChangePasswordLinkResponse.
        /// </returns>
        public ResetPasswordResponse ResetPassword(ResetPasswordRequest request)
        {
            try
            {
                var user = this.userRepository.GetUserByEmail(request.IdentityToken);
                if (user == null)
                {
                    return new ResetPasswordResponse
                               {
                                   MessageType = MessageType.Error,
                                   ErrorCode = ErrorCode.UserNotFound.ToString()
                               };
                }

                var pwdKey = Guid.NewGuid();
                user.PasswordResetKey = pwdKey;
                this.userRepository.UpdateUser(user);
                this.userRepository.SaveChanges();
                this.emailService.SendMail(
                    EmailResources.EmailActivationFrom,
                    request.IdentityToken,
                    EmailResources.ResetPasswordSubject,
                    string.Format(EmailResources.ResetPasswordBody, this.ApplicationUrl, pwdKey));
                return new ResetPasswordResponse { MessageType = MessageType.Success };
            }
            catch (Exception ex)
            {
                return new ResetPasswordResponse { MessageType = MessageType.Error, Message = ex.Message };
            }
        }