public async Task <PasswordResetEnum> ResetPassword(string email, string countryCode)
        {
            PasswordReset resetUserPassword = new PasswordReset
            {
                Email       = email,
                CountryCode = countryCode,
                DeviceId    = GlobalAccess.DeviceId
            };
            var result = await authenticationService.ResetPassword(resetUserPassword);

            if (!result.IsSuccess)
            {
                switch (result.Content)
                {
                case Constants.DEVICE_NOT_MATCHED:
                    return(PasswordResetEnum.DeviceIdNotMatched);

                case Constants.EMAIL_NOT_EXIST:
                    return(PasswordResetEnum.EmailNotExist);
                }
            }
            else
            {
                PasswordResetResponse res = result.DeserializeObject <PasswordResetResponse>();
                if (res.Status)
                {
                    return(PasswordResetEnum.ResetSuccess);
                }
            }
            return(PasswordResetEnum.ResetFailure);
        }
        public async Task <PasswordResetResponse> PasswordReset(PasswordResetRequest request)
        {
            var response = new PasswordResetResponse();

            var user = await _userRepository.Select(x => x.PasswordResetToken == request.Token && x.Email == request.Email);

            if (user.IsExist() &&
                user.IsActive &&
                user.PasswordResetRequestedAt.HasValue &&
                user.PasswordResetRequestedAt.Value.AddDays(1) > DateTime.UtcNow)
            {
                user.PasswordHash             = _cryptoHelper.Hash(request.Password, user.ObfuscationSalt);
                user.LoginTryCount            = 0;
                user.PasswordResetRequestedAt = null;
                user.PasswordResetToken       = null;

                var result = await _userRepository.Update(user.Id, user);

                if (result)
                {
                    //todo:send email

                    response.Status = ResponseStatus.Success;
                    return(response);
                }
            }

            response.SetFailed();
            return(response);
        }
示例#3
0
        public PasswordResetResponse PasswordReset(
            PasswordResetRequest request)
        {
            Logger.Debug("Password Reset Request Received: {0}",
                         JsonConvert.SerializeObject(request, Formatting.Indented));

            PasswordResetResponse response;

            //use in built data annotations to ensure model has binded correctly
            if (!ModelState.IsValid)
            {
                var errors = ModelState.Keys.SelectMany(key =>
                                                        ModelState[key].Errors.Select(x => x.ErrorMessage));
                response = new PasswordResetResponse
                {
                    Success = false,
                    Message = "Form has validation errors",
                    Errors  = errors.ToArray()
                };
            }
            else
            {
                //send request to the user service and return
                //the response (success or fail)
                response = UserService.ResetPassword(request);
            }
            Logger.Debug("Sent Password Reset Response: {0}",
                         JsonConvert.SerializeObject(response, Formatting.Indented));
            return(response);
        }
示例#4
0
        //Called when a password reset link is clicked.
        public object Get(PasswordResetRequest request)
        {
            //Display Change Password Screen
            var resetrequest = Cache.Get <PasswordResetRequest>(request.Id);

            var response = new PasswordResetResponse();

            response.Valid = !(resetrequest == null);
            response.Id    = request.Id;

            return(response);
        }
示例#5
0
        public PasswordResetResponse Put(PasswordResetRequest request)
        {
            // VALIDATE

            //Changes the password
            var resetrequest = Cache.Get <PasswordResetRequest>(request.Id);

            var response = new PasswordResetResponse();

            if (resetrequest == null)
            {
                response.Valid = false;
                return(response);
            }
            if (request.Email != resetrequest.Email)
            {
                response.Valid = false;
                return(response);
            }
            else if (resetrequest == null)
            {
                response.Valid = false;
                return(response);
            }
            else
            {
                response.Valid = true;
            }

            var existingUser = AuthRepo.GetUserAuthByUserName(resetrequest.Email);

            if (existingUser == null)
            {
                return(new PasswordResetResponse()
                {
                    Valid = false
                });
            }

            AuthRepo.UpdateUserAuth(existingUser, existingUser, request.NewPassword);

            response.PasswordChanged = true;
            Cache.Remove(resetrequest.Id);
            return(response);
        }
示例#6
0
        public void ResetPasswordShouldBeLoginnable()
        {
            string userName = MethodBase.GetCurrentMethod().Name;
            string email    = "*****@*****.**";

            UserTestTools.SignUp(userName, email);
            User user = User.GetByEmail(email);

            Expect.AreEqual(0, user.PasswordResetsByUserId.Count);

            UserManager userMgr = UserTestTools.CreateTestUserManager("Stickerize");

            userMgr.HttpContext         = A.Fake <IHttpContext>();
            userMgr.HttpContext.Request = new TestRequest();

            string password = ServiceProxySystem.GenerateId();
            ForgotPasswordResponse forgot = userMgr.ForgotPassword(email);
            PasswordResetResponse  reset  = userMgr.ResetPassword(password.Sha1(), (string)forgot.Data);
            LoginResponse          login  = userMgr.Login(user.UserName, password.Sha1());

            Expect.IsTrue(login.Success, "Login failed");
        }