public static async Task CreateNewResetPasswordAsync( string email, string requesterAddress, IRepositoryManager repositoryManager, SmtpSettings smtpSettings, EmailSettings emailSettings) { var(exists, user) = await CheckUserExistsWithEmailAsync(email, repositoryManager.UserRepository) .ConfigureAwait(false); if (exists) { try { var emailService = new EmailService(); var resetIdentifier = ModelHelpers.GenerateUniqueIdentifier(IdentifierConsts.UserIdentifierLength); var hashedResetIdentifier = HashingHelper.HashIdentifier(resetIdentifier); var encryptedUserId = EncryptionService.EncryptString(user.Id.ToString()); var encryptedIdentifier = EncryptionService.EncryptString(resetIdentifier); var encodedEncryptedIdentifier = System.Web.HttpUtility.UrlEncode(encryptedIdentifier); var passwordReset = new PasswordReset { Identifier = hashedResetIdentifier, UserId = encryptedUserId, ExpiryDate = DateTime.Now.AddHours(1), RequesterAddress = requesterAddress }; var verificationViewModel = new LinkEmailViewModel { FullName = $"{user.FirstName} {user.LastName}", UrlDomain = emailSettings.PrimaryRedirectDomain, Link = encodedEncryptedIdentifier }; await repositoryManager.PasswordResetRepository.AddAsync(passwordReset); var verificationMessage = emailService.CreateHtmlMessage( smtpSettings, $"{user.FirstName} {user.LastName}", user.Email, "Reset Your Password", EmailCreationHelper.CreatePasswordResetEmailString(verificationViewModel)); await emailService.SendEmailAsync(smtpSettings, verificationMessage); } catch (Exception) { throw; } } }
private static string CreateLinkEmailString(string htmlFile, LinkEmailViewModel linkEmailViewModel) { var htmlString = FetchEmailTemplateString(htmlFile); var formattedHtmlString = FormatHtmlString( htmlString, linkEmailViewModel.FullName, linkEmailViewModel.UrlDomain, linkEmailViewModel.Link); var templateBaseHtmlString = FetchEmailTemplateString("TemplateBase"); var completeHtmlString = FormatHtmlString( templateBaseHtmlString, formattedHtmlString); return(completeHtmlString); }
public static async Task CreateNewVerficationAsync( string email, string requesterAddress, IRepositoryManager repositoryManager, SmtpSettings smtpSettings, EmailSettings emailSettings, bool isFirstContact = false ) { var(exists, user) = await CheckUserExistsWithEmailAsync(email, repositoryManager.UserRepository) .ConfigureAwait(false); if (exists) { if (user.IsVerified) { throw new UserAlreadyVerifiedException("User has already been verified", "User has already been verified"); } try { if (!isFirstContact) { await DeactivateExistingUserVerificationsAsync(user.Id, repositoryManager.UserVerificationRepository) .ConfigureAwait(false); } var emailService = new EmailService(); var verificationIdentifier = ModelHelpers.GenerateUniqueIdentifier(IdentifierConsts.UserIdentifierLength); var hashedVerificationIdentifier = HashingHelper.HashIdentifier(verificationIdentifier); var verification = new UserVerification { Identifier = hashedVerificationIdentifier, UserId = user.Id, ExpiryDate = DateTime.Now.AddDays(7), RequesterAddress = requesterAddress }; var verificationViewModel = new LinkEmailViewModel { FullName = $"{user.FirstName} {user.LastName}", UrlDomain = emailSettings.PrimaryRedirectDomain, Link = verificationIdentifier }; await repositoryManager.UserVerificationRepository.AddAsync(verification); var verificationMessage = emailService.CreateHtmlMessage( smtpSettings, $"{user.FirstName} {user.LastName}", user.Email, isFirstContact ? "Welcome to Shufl" : "Verify Your Account", isFirstContact ? EmailCreationHelper.CreateWelcomeVerificationEmailString(verificationViewModel) : EmailCreationHelper.CreateVerificationEmailString(verificationViewModel)); await emailService.SendEmailAsync(smtpSettings, verificationMessage); } catch (Exception) { throw; } } }
public static string CreatePasswordResetEmailString(LinkEmailViewModel passwordResetViewModel) { return(CreateLinkEmailString("UserPasswordReset", passwordResetViewModel)); }
public static string CreateVerificationEmailString(LinkEmailViewModel verificationViewModel) { return(CreateLinkEmailString("UserVerification", verificationViewModel)); }
public static string CreateWelcomeVerificationEmailString(LinkEmailViewModel welcomeVerificationViewModel) { return(CreateLinkEmailString("UserWelcomeVerification", welcomeVerificationViewModel)); }