public async Task <IActionResult> Resend(string email) { if (string.IsNullOrWhiteSpace(email)) { return(BadRequest("ResendEmailRequired")); } var user = await _userManager.FindByEmailAsync(email.Trim()); if (user == null) { return(NotFound()); } if (user.EmailConfirmed) { return(BadRequest("ResendEmailConfirmed")); } var emailConfirmationToken = await _userManager.GenerateEmailConfirmationTokenAsync(user); var callbackUrl = new Uri(Url.Link("ConfirmEmail", new { id = _protector.Protect(user.Id), token = emailConfirmationToken })); var emailTemplateVM = new EmailTemplateVM(user.Email, callbackUrl.AbsoluteUri); var emailFormat = emailTemplateVM.GetConfirmEmailFormat(); await _messageService.SendEmailAsync("*****@*****.**", user.Email, emailFormat.Item1, null, emailFormat.Item2); return(new OkResult()); }
public async Task <IActionResult> ForgotPassword([FromBody] ForgotPasswordVM model) { if (string.IsNullOrWhiteSpace(model.Email)) { return(BadRequest()); } var user = await _userManager.FindByEmailAsync(model.Email.Trim()); if (user == null) { return(NotFound()); } if (!user.EmailConfirmed) { return(BadRequest("EmailNotConfirmed")); } await _userManager.UpdateSecurityStampAsync(user); // Generate new security stamp var temporaryPwd = Guid.NewGuid().ToString("n").Substring(0, 6); // Generate a temporary password var passwordRequirement = "P" + temporaryPwd + "n1"; // 숫자, 대소문자 requirement var token = await _userManager.GeneratePasswordResetTokenAsync(user); var result = await _userManager.ResetPasswordAsync(user, token, passwordRequirement); // Temporary password is now the user's current password var emailTemplateVM = new EmailTemplateVM(user.Email, _appSettings.Environment.Equals("Live") ? "https://talchoseon.com/" : "http://*****:*****@talchoseon.com", user.Email, emailFormat.Item1, null, emailFormat.Item2); return(new OkResult()); }
public async Task <IActionResult> Register([FromBody] RegistrationVM model) { if (!ModelState.IsValid) { string errorMsg = null; foreach (var m in ModelState.Values) { foreach (var msg in m.Errors) { errorMsg = msg.ErrorMessage; } } return(BadRequest(errorMsg)); } var allUsers = _repository.GetAll(); foreach (var au in allUsers) { if (au.NickName.ToLower().Trim().Equals(model.NickName.ToLower().Trim())) { return(BadRequest("DuplicateNickName")); } } ApplicationUser newUser = new ApplicationUser { UserName = model.Email, Email = model.Email, NickName = model.NickName, DateCreated = DateTime.UtcNow }; var result = await _userManager.CreateAsync(newUser, model.Password); if (result.Succeeded) { var user = await _userManager.FindByEmailAsync(model.Email); var userRole = new IdentityRole("User"); if (!await _userManager.IsInRoleAsync(user, userRole.Name)) { await _userManager.AddToRoleAsync(user, userRole.Name); } var emailConfirmationToken = await _userManager.GenerateEmailConfirmationTokenAsync(user); var callbackUrl = new Uri(Url.Link("ConfirmEmail", new { id = _protector.Protect(user.Id), token = emailConfirmationToken })); var emailTemplateVM = new EmailTemplateVM(user.Email, callbackUrl.AbsoluteUri); var emailFormat = emailTemplateVM.GetConfirmEmailFormat(); await _messageService.SendEmailAsync("*****@*****.**", user.Email, emailFormat.Item1, null, emailFormat.Item2); var userVM = Mapper.Map <ApplicationUser, ApplicationUserVM>(user); return(CreatedAtRoute("GetUser", new { controller = "Account", id = user.Id }, userVM)); } return(new BadRequestObjectResult(result.Errors)); }