mirror of
https://github.com/bitwarden/server.git
synced 2025-07-01 16:12:49 -05:00
verify email apis and emails
This commit is contained in:
@ -30,6 +30,23 @@ namespace Bit.Core.Services
|
||||
_engine = new RazorLightEngine(core, lookup);
|
||||
}
|
||||
|
||||
public async Task SendVerifyEmailEmailAsync(string email, Guid userId, string token)
|
||||
{
|
||||
var message = CreateDefaultMessage("Verify Your Email", email);
|
||||
var model = new VerifyEmailModel
|
||||
{
|
||||
Token = token,
|
||||
UserId = userId,
|
||||
WebVaultUrl = _globalSettings.BaseVaultUri,
|
||||
SiteName = _globalSettings.SiteName
|
||||
};
|
||||
message.HtmlContent = _engine.Parse("VerifyEmail", model);
|
||||
message.TextContent = _engine.Parse("VerifyEmail.text", model);
|
||||
message.MetaData.Add("SendGridBypassListManagement", true);
|
||||
|
||||
await _mailDeliveryService.SendEmailAsync(message);
|
||||
}
|
||||
|
||||
public async Task SendChangeEmailAlreadyExistsEmailAsync(string fromEmail, string toEmail)
|
||||
{
|
||||
var message = CreateDefaultMessage("Your Email Change", toEmail);
|
||||
|
@ -10,6 +10,7 @@ namespace Bit.Core.Services
|
||||
public class SendGridTemplateMailService : IMailService
|
||||
{
|
||||
private const string WelcomeTemplateId = "045f8ad5-5547-4fa2-8d3d-6d46e401164d";
|
||||
private const string VerifyEmailTemplateId = "TODO";
|
||||
private const string ChangeEmailAlreadyExistsTemplateId = "b69d2038-6ad9-4cf6-8f7f-7880921cba43";
|
||||
private const string ChangeEmailTemplateId = "ec2c1471-8292-4f17-b6b6-8223d514f86e";
|
||||
private const string TwoFactorEmailTemplateId = "264cfe69-5258-4c89-8d90-76b4659de589";
|
||||
@ -45,6 +46,21 @@ namespace Bit.Core.Services
|
||||
await _mailDeliveryService.SendEmailAsync(message);
|
||||
}
|
||||
|
||||
public async Task SendVerifyEmailEmailAsync(string email, Guid userId, string token)
|
||||
{
|
||||
var message = CreateDefaultMessage(
|
||||
"Verify Your Email",
|
||||
email,
|
||||
VerifyEmailTemplateId);
|
||||
|
||||
AddSubstitution(message, "{{token}}", Uri.EscapeDataString(token));
|
||||
AddSubstitution(message, "{{userId}}", userId.ToString());
|
||||
AddCategories(message, new List<string> { AdministrativeCategoryName, "Verify Email" });
|
||||
message.MetaData.Add("SendGridBypassListManagement", true);
|
||||
|
||||
await _mailDeliveryService.SendEmailAsync(message);
|
||||
}
|
||||
|
||||
public async Task SendChangeEmailAlreadyExistsEmailAsync(string fromEmail, string toEmail)
|
||||
{
|
||||
var message = CreateDefaultMessage(
|
||||
|
@ -15,6 +15,7 @@ using Bit.Core.Models.Business;
|
||||
using U2fLib = U2F.Core.Crypto.U2F;
|
||||
using U2F.Core.Models;
|
||||
using U2F.Core.Utils;
|
||||
using Bit.Core.Exceptions;
|
||||
|
||||
namespace Bit.Core.Services
|
||||
{
|
||||
@ -289,6 +290,17 @@ namespace Bit.Core.Services
|
||||
return true;
|
||||
}
|
||||
|
||||
public async Task SendEmailVerificationAsync(User user)
|
||||
{
|
||||
if(user.EmailVerified)
|
||||
{
|
||||
throw new BadRequestException("Email already verifed.");
|
||||
}
|
||||
|
||||
var token = await base.GenerateEmailConfirmationTokenAsync(user);
|
||||
await _mailService.SendVerifyEmailEmailAsync(user.Email, user.Id, token);
|
||||
}
|
||||
|
||||
public async Task InitiateEmailChangeAsync(User user, string newEmail)
|
||||
{
|
||||
var existingUser = await _userRepository.GetByEmailAsync(newEmail);
|
||||
|
Reference in New Issue
Block a user