public async Task <SendChangeEmailEmailResponse> Handle(SendChangeEmailEmailRequest request, CancellationToken cancellationToken) { if (await authValidationService.EmailExists(request.NewEmail)) { throw new DuplicateException("Account with this email already exists"); } var result = await userTokenGenerator.GenerateChangeEmailToken(); var(encryptedToken, encryptedEmail, encryptedNewEmail) = (cryptoService.Encrypt(result.Token), cryptoService.Encrypt(result.Email), cryptoService.Encrypt(request.NewEmail)); string callbackUrl = $"{Configuration.GetValue<string>(AppSettingsKeys.ServerAddress)}api/account/changeEmail?email={encryptedEmail}&token={encryptedToken}&newEmail={encryptedNewEmail}"; var emailTemplate = (await emailTemplateGenerator.FindEmailTemplate(EmailTemplateDictionary.RegisterTemplate)) .ReplaceParameters(new EmailTemplateParameter("{{username}}", result.Username), new EmailTemplateParameter("{{callbackUrl}}", callbackUrl)); await emailSender.Send(EmailMessages.ActivationAccountEmail(result.Email, emailTemplate)); return(new SendChangeEmailEmailResponse()); }
public async Task <SendAddSerialEmailResponse> Handle(SendAddSerialEmailRequest request, CancellationToken cancellationToken) { var user = await userService.GetUserWithSerials(httpContextReader.CurrentUserId); if (!(await userService.GetUserWithSerials(httpContextReader.CurrentUserId)).HasEmptySerialSlot()) { throw new PremiumOperationException("Account has no more serial slots"); } if (await serialService.SerialExists(request.Serial, httpContextReader.CurrentUserId)) { throw new DuplicateException("Serial already exists"); } var result = await userTokenGenerator.GenerateAddSerialToken(); var(encryptedSerial, encryptedEmail, encryptedToken) = (cryptoService.Encrypt(request.Serial), cryptoService.Encrypt(result.Email), cryptoService.Encrypt(result.Token)); string callbackUrl = $"{Configuration.GetValue<string>(AppSettingsKeys.ServerAddress)}api/account/serial/add?email={encryptedEmail}&token={encryptedToken}&serial={encryptedSerial}"; var emailTemplate = (await emailTemplateGenerator.FindEmailTemplate(EmailTemplateDictionary.RegisterTemplate)) .ReplaceParameters(new EmailTemplateParameter("{{username}}", result.Username), new EmailTemplateParameter("{{callbackUrl}}", callbackUrl)); await emailSender.Send(EmailMessages.ActivationAccountEmail(result.Email, emailTemplate)); return(new SendAddSerialEmailResponse()); }
public async Task <SendResetPasswordResponse> Handle(SendResetPasswordRequest request, CancellationToken cancellationToken) { if (!await captchaService.VerifyCaptcha(request.CaptchaResponse)) { throw new CaptchaException(); } var result = await userTokenGenerator.GenerateResetPasswordToken(request.Login); if (result == null) { return(new SendResetPasswordResponse()); } var(encryptedToken, encryptedEmail) = (cryptoService.Encrypt(result.Token), cryptoService.Encrypt(result.Email)); string callbackUrl = $"{Configuration.GetValue<string>(AppSettingsKeys.ServerAddress)}api/auth/resetPassword/verify?email={encryptedEmail}&token={encryptedToken}"; var emailTemplate = (await emailTemplateGenerator.FindEmailTemplate(EmailTemplateDictionary.RegisterTemplate)) .ReplaceParameters(new EmailTemplateParameter("{{username}}", result.Username), new EmailTemplateParameter("{{callbackUrl}}", callbackUrl)); await emailSender.Send(EmailMessages.ActivationAccountEmail(result.Email, emailTemplate)); return(new SendResetPasswordResponse()); }
public async Task <SendChangePasswordEmailResponse> Handle(SendChangePasswordEmailRequest request, CancellationToken cancellationToken) { var result = await userTokenGenerator.GenerateChangePasswordToken(request.OldPassword); var(encryptedToken, encryptedEmail, encryptedPassword) = (cryptoService.Encrypt(result.Token), cryptoService.Encrypt(result.Email), cryptoService.Encrypt(request.NewPassword)); string callbackUrl = $"{Configuration.GetValue<string>(AppSettingsKeys.ServerAddress)}api/account/changePassword?email={encryptedEmail}&token={encryptedToken}&newPassword={encryptedPassword}"; var emailTemplate = (await emailTemplateGenerator.FindEmailTemplate(EmailTemplateDictionary.RegisterTemplate)) .ReplaceParameters(new EmailTemplateParameter("{{username}}", result.Username), new EmailTemplateParameter("{{callbackUrl}}", callbackUrl)); await emailSender.Send(EmailMessages.ActivationAccountEmail(result.Email, emailTemplate)); return(new SendChangePasswordEmailResponse()); }