Add private and public email to vault response in API (#541)

This commit is contained in:
Leendert de Borst
2025-02-02 13:51:41 +01:00
parent 69c9a4bdd0
commit 66b59ce94b
5 changed files with 38 additions and 4 deletions

View File

@@ -16,4 +16,9 @@ public class Config
/// Gets or sets a value indicating whether public registration is enabled.
/// </summary>
public bool PublicRegistrationEnabled { get; set; }
/// <summary>
/// Gets or sets the list of private email domains that are available.
/// </summary>
public List<string> PrivateEmailDomains { get; set; } = [];
}

View File

@@ -35,8 +35,9 @@ using Microsoft.Extensions.Caching.Memory;
/// <param name="timeProvider">ITimeProvider instance.</param>
/// <param name="authLoggingService">AuthLoggingService instance.</param>
/// <param name="cache">IMemoryCache instance.</param>
/// <param name="config">Config instance.</param>
[ApiVersion("1")]
public class VaultController(ILogger<VaultController> logger, IAliasServerDbContextFactory dbContextFactory, UserManager<AliasVaultUser> userManager, ITimeProvider timeProvider, AuthLoggingService authLoggingService, IMemoryCache cache) : AuthenticatedRequestController(userManager)
public class VaultController(ILogger<VaultController> logger, IAliasServerDbContextFactory dbContextFactory, UserManager<AliasVaultUser> userManager, ITimeProvider timeProvider, AuthLoggingService authLoggingService, IMemoryCache cache, Config config) : AuthenticatedRequestController(userManager)
{
/// <summary>
/// Error message for providing an invalid current password (during password change).
@@ -95,7 +96,9 @@ public class VaultController(ILogger<VaultController> logger, IAliasServerDbCont
CurrentRevisionNumber = 0,
EncryptionPublicKey = string.Empty,
CredentialsCount = 0,
EmailAddressList = new List<string>(),
EmailAddressList = [],
PrivateEmailDomainList = [],
PublicEmailDomainList = [],
CreatedAt = DateTime.MinValue,
UpdatedAt = DateTime.MinValue,
},
@@ -117,6 +120,13 @@ public class VaultController(ILogger<VaultController> logger, IAliasServerDbCont
});
}
// Get dynamic list of private email domains from config.
var privateEmailDomainList = config.PrivateEmailDomains;
// Hardcoded list of public (SpamOK) email domains that are available to the client.
var publicEmailDomainList = new List<string>(["spamok.com", "solarflarecorp.com", "spamok.nl", "3060.nl",
"landmail.nl", "asdasd.nl", "spamok.de", "spamok.com.ua", "spamok.es", "spamok.fr"]);
return Ok(new Shared.Models.WebApi.Vault.VaultGetResponse
{
Status = VaultStatus.Ok,
@@ -129,6 +139,8 @@ public class VaultController(ILogger<VaultController> logger, IAliasServerDbCont
EncryptionPublicKey = string.Empty,
CredentialsCount = 0,
EmailAddressList = [],
PrivateEmailDomainList = privateEmailDomainList,
PublicEmailDomainList = publicEmailDomainList,
CreatedAt = vault.CreatedAt,
UpdatedAt = vault.UpdatedAt,
},
@@ -168,6 +180,8 @@ public class VaultController(ILogger<VaultController> logger, IAliasServerDbCont
EncryptionPublicKey = string.Empty,
CredentialsCount = 0,
EmailAddressList = [],
PrivateEmailDomainList = [],
PublicEmailDomainList = [],
CreatedAt = x.CreatedAt,
UpdatedAt = x.UpdatedAt,
}).ToList(),

View File

@@ -31,6 +31,9 @@ var config = new Config();
var publicRegistrationEnabled = Environment.GetEnvironmentVariable("PUBLIC_REGISTRATION_ENABLED") ?? "false";
config.PublicRegistrationEnabled = bool.Parse(publicRegistrationEnabled);
var privateEmailDomains = Environment.GetEnvironmentVariable("PRIVATE_EMAIL_DOMAINS")?.Split(",").Select(d => d.Trim());
config.PrivateEmailDomains = privateEmailDomains?.ToList() ?? new List<string>();
builder.Services.AddSingleton(config);
builder.Services.ConfigureLogging(builder.Configuration, Assembly.GetExecutingAssembly().GetName().Name!, "../../logs");

View File

@@ -8,7 +8,8 @@
"ASPNETCORE_ENVIRONMENT": "Development",
"JWT_KEY": "12345678901234567890123456789012",
"DATA_PROTECTION_CERT_PASS": "Development",
"PUBLIC_REGISTRATION_ENABLED": "true"
"PUBLIC_REGISTRATION_ENABLED": "true",
"PRIVATE_EMAIL_DOMAINS": "example.tld,example2.tld"
},
"dotnetRunMessages": true,
"applicationUrl": "http://0.0.0.0:5092"
@@ -21,7 +22,8 @@
"ASPNETCORE_ENVIRONMENT": "Development",
"JWT_KEY": "12345678901234567890123456789012",
"DATA_PROTECTION_CERT_PASS": "Development",
"PUBLIC_REGISTRATION_ENABLED": "true"
"PUBLIC_REGISTRATION_ENABLED": "true",
"PRIVATE_EMAIL_DOMAINS": "example.tld,example2.tld"
},
"dotnetRunMessages": true,
"applicationUrl": "https://0.0.0.0:7223"

View File

@@ -50,6 +50,16 @@ public class Vault
/// </summary>
public required List<string> EmailAddressList { get; set; }
/// <summary>
/// Gets or sets the list of private email domains that are available.
/// </summary>
public required List<string> PrivateEmailDomainList { get; set; }
/// <summary>
/// Gets or sets the list of public email domains that are available.
/// </summary>
public required List<string> PublicEmailDomainList { get; set; }
/// <summary>
/// Gets or sets the date and time of creation.
/// </summary>