コード例 #1
0
        public IActionResult SendFirstLoginCredentials([FromBody] FirstLoginCredentialsViewModel model)
        {
            string baseUrl   = $"{Request.Scheme}://{Request.Host.Value}{Request.PathBase.Value}";
            string loginLink = Url.Content($"{baseUrl}/login");
            var    result    = emailSender.SendFirstLoginCredentials(model, loginLink);

            if (result.Successful)
            {
                return(StatusCode(200, new { response = ApiMessages.EmailInstructions() }));
            }
            return(StatusCode(496, new { response = ApiMessages.EmailNotSent() }));
        }
コード例 #2
0
        public async Task <IActionResult> ForgotPassword([FromBody] ForgotPasswordViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = await userManager.FindByEmailAsync(model.Email);

                if (user != null && await userManager.IsEmailConfirmedAsync(user))
                {
                    string token = await userManager.GeneratePasswordResetTokenAsync(user);

                    string tokenEncoded      = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(token));
                    string baseUrl           = $"{Request.Scheme}://{Request.Host.Value}{Request.PathBase.Value}";
                    string passwordResetLink = Url.Content($"{baseUrl}/account/resetPassword?email={model.Email}&token={tokenEncoded}");
                    emailSender.SendResetPasswordEmail(user.DisplayName, user.Email, passwordResetLink, model.Language);
                    return(StatusCode(200, new { response = ApiMessages.EmailInstructions() }));
                }
                return(StatusCode(200, new { response = ApiMessages.EmailInstructions() }));
            }
            return(StatusCode(400, new { response = ModelState.Values.SelectMany(x => x.Errors).Select(x => x.ErrorMessage) }));
        }