LANCommander/LANCommander.Server/Startup/ApplicationSettings.cs
2025-03-11 21:21:16 -05:00

42 lines
No EOL
1.3 KiB
C#

using LANCommander.Server.Services;
using LANCommander.Server.Services.Models;
using Serilog;
namespace LANCommander.Server.Startup;
public static class ApplicationSettings
{
public static WebApplicationBuilder AddSettings(this WebApplicationBuilder builder, out Settings settings)
{
// Add services to the container.
Log.Debug("Loading settings");
if (!File.Exists(SettingService.SettingsFile))
{
var workingDirectory = Path.GetDirectoryName(SettingService.SettingsFile);
if (!String.IsNullOrWhiteSpace(workingDirectory))
Directory.CreateDirectory(workingDirectory);
settings = new Settings();
SettingService.SaveSettings(settings);
}
else
settings = SettingService.GetSettings(true);
Log.Debug("Validating settings");
if (settings.Authentication.TokenSecret.Length < 16)
{
Log.Debug("JWT token secret is too short. Regenerating...");
settings.Authentication.TokenSecret = Guid.NewGuid().ToString();
SettingService.SaveSettings(settings);
}
Log.Debug("Done validating settings");
builder.Services.AddSingleton(settings);
return builder;
}
}