예제 #1
0
        public void ShouldPassIfValidRequest()
        {
            var request = PasswordResetEmailRequest.Example();

            var result = _validator.Validate(request);

            Assert.True(result.IsValid);
        }
예제 #2
0
        public void ShouldFailIfLinkIsInvalid()
        {
            var request = PasswordResetEmailRequest.Example();

            request.Link = "test.com";

            var result = _validator.Validate(request);

            Assert.False(result.IsValid);
        }
예제 #3
0
        public void ShouldFailIfEmailIsNull()
        {
            var request = PasswordResetEmailRequest.Example();

            request.Email = null;

            var result = _validator.Validate(request);

            Assert.False(result.IsValid);
        }
예제 #4
0
        public void ShouldFailOnInvalidFirstName()
        {
            var request = PasswordResetEmailRequest.Example();

            request.FirstName = "";

            var result = _validator.Validate(request);

            Assert.False(result.IsValid);
        }
        public async Task SendPasswordResetEmailAsync(PasswordResetEmailRequest request)
        {
            var claims = new[]
            {
                new Claim(ClaimTypes.Email, request.Email)
            };
            var ConfirmToken = jwtAuthManager.GeneratePasswordResetToken(claims, DateTime.Now);

            string Url = $"{configuration["appUrl"]}/api/account/passwordreset?UserEmail={request.Email}&token={ConfirmToken}";

            await emailSender.SendEmailAsync(request.Email, "Reset Password - Maxshoes", "<h1>Hello from Max shoes</h1>" + $"<p> to reset your password: <a href='{Url}'>Click here!</a></p>");
        }
예제 #6
0
        public async Task <ActionResult> SendPasswordResetEmail([FromBody] PasswordResetEmailRequest request)
        {
            await _authenticationService.SendPasswordResetEmailAsync(request);

            return(Ok());
        }
예제 #7
0
        public async Task <IActionResult> PasswordResetEmail([FromBody] PasswordResetEmailRequest request)
        {
            if (request == null)
            {
                return(BadRequest(
                           new AuthFailedResponse
                {
                    Errors = new List <string>()
                    {
                        "Empty Request."
                    }
                }
                           ));
            }
            DragonflyUser user;

            if (HttpContext.User.Identity.IsAuthenticated)
            {
                var userId = HttpContext.GetUserId();
                user = await _userService.GetUserByIdAsync(userId).ConfigureAwait(false);

                if (user != null && ((!string.IsNullOrEmpty(request.Email) && user.Email != request.Email) || (!string.IsNullOrEmpty(request.UserName) && user.UserName != request.UserName)))
                {
                    return(BadRequest(
                               new AuthFailedResponse
                    {
                        Errors = new List <string>()
                        {
                            "Mismatched user data."
                        }
                    }
                               ));
                }
            }
            else if (!string.IsNullOrEmpty(request.UserName))
            {
                user = await _userService.GetUserByUserNameAsync(request.UserName).ConfigureAwait(false);
            }
            else if (!string.IsNullOrEmpty(request.Email))
            {
                user = await _userService.GetUserByEmailAsync(request.Email).ConfigureAwait(false);
            }
            else
            {
                return(BadRequest(
                           new AuthFailedResponse
                {
                    Errors = new List <string>()
                    {
                        "No user data included."
                    }
                }
                           ));
            }
            if (user == null)
            {
                return(BadRequest(
                           new AuthFailedResponse
                {
                    Errors = new List <string>()
                    {
                        "Could not find user."
                    }
                }
                           ));
            }
            var sentResult = await _identityService.ResetPasswordEmailAsync(user).ConfigureAwait(false);

            if (!sentResult.Success)
            {
                return(BadRequest(
                           new AuthFailedResponse
                {
                    Errors = sentResult.Errors
                }));
            }
            return(Ok(
                       new AuthenticationResult
            {
                Success = true
            }));
        }
        public async Task <IActionResult> PasswordResetEmail([FromBody] PasswordResetEmailRequest request)
        {
            if (request == null)
            {
                return(BadRequest(new BaseResponse <string>
                {
                    Errors = new List <string>()
                    {
                        "Empty Request."
                    },
                    Success = false,
                }));
            }
            AppUser user;

            if (HttpContext.User.Identity.IsAuthenticated)
            {
                var userId = _userManager.GetUserId(HttpContext.User);
                user = await _userManager.FindByIdAsync(userId);

                if (user != null && ((!string.IsNullOrEmpty(request.Email) && user.Email != request.Email) || (!string.IsNullOrEmpty(request.UserName) && user.UserName != request.UserName)))
                {
                    return(BadRequest(new BaseResponse <string>
                    {
                        Errors = new List <string>()
                        {
                            "Mismatched user data."
                        },
                        Success = false,
                    }));
                }
            }
            else if (!string.IsNullOrEmpty(request.UserName))
            {
                user = await _userManager.FindByNameAsync(request.UserName);
            }
            else if (!string.IsNullOrEmpty(request.Email))
            {
                user = await _userManager.FindByEmailAsync(request.Email);
            }
            else
            {
                return(BadRequest(new BaseResponse <string>
                {
                    Errors = new List <string>()
                    {
                        "No user data included."
                    },
                    Success = false,
                }));
            }
            if (user == null)
            {
                return(BadRequest(new BaseResponse <string>
                {
                    Errors = new List <string>()
                    {
                        "Could not find user."
                    },
                    Success = false,
                }));
            }
            var sentResult = await _accountService.ResetPasswordEmailAsync(user);

            if (!sentResult.Success)
            {
                return(BadRequest(new BaseResponse <string>
                {
                    Errors = sentResult.Errors,
                    Success = false,
                }));
            }
            return(Ok(new BaseResponse <string>
            {
                Success = true,
            }));
        }