Beispiel #1
0
        public async Task <string> ResetPw(ResetPwReq model)
        {
            string response = await Task.Run(() =>
            {
                var user = _users.Find <UserMod>(user => user.Email == model.Email &&
                                                 user.ResetKey == model.Key && user.ResetKey != null).FirstOrDefault();

                // return false if user not found or wrong password
                if (user == null)
                {
                    return("invalid_key");
                }

                var hash = BCrypt.Net.BCrypt.HashPassword(model.Password);

                var filter = Builders <UserMod> .Filter.Eq("email", model.Email);
                var update = Builders <UserMod> .Update.Set("password", hash)
                             .Set("resetKey", BsonNull.Value);
                UpdateResult db_res = _users.UpdateOne(filter, update);

                if (db_res.ModifiedCount > 0)
                {
                    return("success");
                }
                else
                {
                    return("error");
                }
            });

            return(response);
        }
        public async Task <IActionResult> PwResetJson([FromBody] ResetPwReq model)
        {
            string response = await _userService.ResetPw(model);

            if (response == "invalid_key")
            {
                return(BadRequest(new { message = "Account not found!", status = "failed" }));
            }
            else if (response == "error")
            {
                return(BadRequest(new { message = "Server Error! Please try again later.", status = "error" }));
            }
            else
            {
                return(Ok(new { msg = "Your password has been reset.", status = "success" }));
            }
        }