private async Task sendResetPasswordEmail(UserAccount currentUser) { // generate new token string var tokenString = await userManager.GeneratePasswordResetTokenAsync(currentUser); // generate url from action -- controller -- route values var confirmationUrl = Url.Action( nameof(ResetPasswordEmail), "Account", new { token = tokenString, email = currentUser.Email }, Request.Scheme ); /* create the mail content */ var emailMessage = new MailkitMessage { Subject = "aov-shop.tk - Đặt lại Mật khẩu", Content = confirmationUrl, Sender = new MailboxAddress(mailkitMetadata.Sender), Receiver = new MailboxAddress(currentUser.Email) }; using (SmtpClient smtpClient = new SmtpClient()) { smtpClient.Connect(mailkitMetadata.SmtpServer, mailkitMetadata.Port); smtpClient.Authenticate(mailkitMetadata.UserName, mailkitMetadata.Password); smtpClient.Send(emailMessage.GetResetPasswordMimeMessage()); smtpClient.Disconnect(true); } }
public async Task <IActionResult> SignUp(SignUpViewModel viewModel) { if (ModelState.IsValid) { var client = await userManager.FindByEmailAsync(viewModel.Email); if (client != null) { TempData["message"] = "E-mail đã tồn tại"; } else { // init new Client model --> create --- here the client is null client = new UserAccount { Email = viewModel.Email, SurName = viewModel.User.SurName, FirstName = viewModel.User.FirstName }; var createResult = await userManager.CreateAsync(client, viewModel.Password); if (createResult.Succeeded) { var roleExisted = true; /* check and add new role if needed */ if (await roleManager.RoleExistsAsync(Constants.ClientRole) == false) { var createRoleResult = await roleManager.CreateAsync(new IdentityRole(Constants.ClientRole)); roleExisted = createRoleResult.Succeeded == true; } if (roleExisted) { var addRoleResult = await userManager.AddToRoleAsync(client, Constants.ClientRole); if (addRoleResult.Succeeded) { /* generate confirmationUrl that will be contained in the email */ var tokenString = await userManager.GenerateEmailConfirmationTokenAsync(client); var confirmationUrl = Url.Action( nameof(ConfirmEmail), "Account", new { token = tokenString, email = client.Email }, Request.Scheme ); /* send the mail */ var emailMessage = new MailkitMessage { Subject = "aov-shop.tk - Xác minh Tài khoản", Content = confirmationUrl, Sender = new MailboxAddress(mailkitMetadata.Sender), Receiver = new MailboxAddress(client.Email) }; using (SmtpClient smtpClient = new SmtpClient()) { smtpClient.Connect(mailkitMetadata.SmtpServer, mailkitMetadata.Port); smtpClient.Authenticate(mailkitMetadata.UserName, mailkitMetadata.Password); smtpClient.Send(emailMessage.GetConfirmEmailMimeMessage()); smtpClient.Disconnect(true); } TempData["message"] = "Vui lòng kiểm tra E-mail để kích hoạt !"; return(RedirectToAction(nameof(Login))); } // addRole } // roleExisted TempData["message"] = "Có lỗi trong quá trình Đăng ký !"; return(View()); } else { if (createResult.Errors.Any(err => err.Code == "PasswordTooShort")) { TempData["message"] = "Mật khẩu phải có ít nhất 6 kí tự"; } else { TempData["message"] = "Có lỗi trong quá trình Đăng ký"; } } } } else { TempData["message"] = "Thông tin Đăng ký không hợp lệ"; } return(View(viewModel)); }