示例#1
0
        public async Task <IActionResult> ResetPassword([FromQuery] string email, [FromQuery] string token)
        {
            var user = await _userManager.FindByEmailAsync(email);

            if (user == null)
            {
                throw new BadRequestException();
            }
            var authorizeResult = await _authorizationService.AuthorizeAsync(User, user, new AccountEditRequirement());

            if (!authorizeResult.Succeeded)
            {
                throw new UnauthorizedException();
            }

            var newPassword = Guid.NewGuid().ToString("n").Substring(0, 8);
            var result      = await _userManager.ResetPasswordAsync(user, token.Replace(" ", "+"), newPassword);

            if (!result.Succeeded)
            {
                throw new BadRequestException();
            }

            string         body = "Password baru anda: " + newPassword;
            MailController mc   = new MailController(_iconfiguration, _mailLogger);

            mc.SendEmail("New Password", body, new MailAddress(user.Email, user.UserName));

            return(Ok(new RequestResult()
            {
                Message = "Success"
            }));
        }
示例#2
0
        public async Task <IActionResult> RecoverPassword([FromBody] LoginViewModel model)
        {
            var user = await _userManager.FindByEmailAsync(model.Email);

            var authorizeResult = await _authorizationService.AuthorizeAsync(User, user, new AccountEditRequirement());

            if (!authorizeResult.Succeeded)
            {
                throw new UnauthorizedException();
            }

            var token = await _userManager.GeneratePasswordResetTokenAsync(user);

            string resetLink = string.Format("{0}://{1}/account/password/reset?email={2}&token={3}",
                                             Request.Scheme, Request.Host, System.Net.WebUtility.UrlEncode(user.Email), System.Net.WebUtility.UrlEncode(token));
            string         body = string.Format("Klik tautan di bawah ini untuk mereset password anda. </br><a href=\"{0}\">Reset Password</a>", resetLink);
            MailController mc   = new MailController(_iconfiguration, _mailLogger);

            mc.SendEmail("Reset Password", body, new MailAddress(user.Email, user.UserName));

            return(Ok(new RequestResult()
            {
                Message = "Success"
            }));
        }