Fix account and backup admin settings flows

This commit is contained in:
2026-03-28 15:30:07 +01:00
parent 5f14490ead
commit 4103f84f85
12 changed files with 446 additions and 37 deletions
@@ -18,14 +18,16 @@ public sealed class AdminSystemController : ControllerBase
private readonly JobTrackerContext _db;
private readonly ISummarizerService _summarizer;
private readonly IWebHostEnvironment _env;
private readonly IEmailSettingsResolver _emailSettings;
public AdminSystemController(IConfiguration cfg, AppPaths paths, JobTrackerContext db, ISummarizerService summarizer, IWebHostEnvironment env)
public AdminSystemController(IConfiguration cfg, AppPaths paths, JobTrackerContext db, ISummarizerService summarizer, IWebHostEnvironment env, IEmailSettingsResolver emailSettings)
{
_cfg = cfg;
_paths = paths;
_db = db;
_summarizer = summarizer;
_env = env;
_emailSettings = emailSettings;
}
public sealed record StorageStatusDto(string DataRoot, string DbPath, bool DbExists, long? DbSizeBytes, int CompanyCount, int JobCount, int DeletedCount);
@@ -70,6 +72,20 @@ public sealed class AdminSystemController : ControllerBase
return NoContent();
}
[HttpGet("email-settings")]
public async Task<ActionResult<EmailSettingsAdminDto>> GetEmailSettings(CancellationToken cancellationToken)
{
return Ok(await _emailSettings.GetAdminDtoAsync(cancellationToken));
}
[HttpPut("email-settings")]
public async Task<ActionResult<EmailSettingsAdminDto>> UpdateEmailSettings([FromBody] UpdateEmailSettingsRequest request, CancellationToken cancellationToken)
{
if (request.Port <= 0) return BadRequest("SMTP port must be greater than 0.");
if (request.TimeoutMs <= 0) return BadRequest("SMTP timeout must be greater than 0.");
return Ok(await _emailSettings.UpdateAsync(request, cancellationToken));
}
[HttpGet]
public async Task<ActionResult<SystemStatusDto>> Get(CancellationToken cancellationToken)
{
@@ -191,6 +207,7 @@ public sealed class AdminSystemController : ControllerBase
var gmailConfigured = !string.IsNullOrWhiteSpace((_cfg["Google:GmailClientSecret"] ?? string.Empty).Trim())
&& !string.IsNullOrWhiteSpace((_cfg["Google:GmailRedirectUri"] ?? string.Empty).Trim());
var emailSettings = await _emailSettings.GetSnapshotAsync(cancellationToken);
return Ok(new SystemStatusDto(
Environment: _env.EnvironmentName,
@@ -208,12 +225,12 @@ public sealed class AdminSystemController : ControllerBase
DeletedCount: deletedCount
),
Email: new EmailStatusDto(
Enabled: _cfg.GetValue("Email:Enabled", false),
Host: (_cfg["Email:SmtpHost"] ?? string.Empty).Trim(),
Port: _cfg.GetValue("Email:SmtpPort", 587),
EnableSsl: _cfg.GetValue("Email:SmtpEnableSsl", true),
From: (_cfg["Email:From"] ?? string.Empty).Trim(),
FromName: (_cfg["Email:FromName"] ?? string.Empty).Trim()
Enabled: emailSettings.Enabled,
Host: emailSettings.Host,
Port: emailSettings.Port,
EnableSsl: emailSettings.EnableSsl,
From: emailSettings.From,
FromName: emailSettings.FromName
),
Database: new DatabaseStatusDto(
Provider: provider,