Saving AdminSettings to a Json File.

This commit is contained in:
2025-12-07 12:17:18 +01:00
parent 0b541373c2
commit decb170e7b
6 changed files with 65 additions and 109 deletions

View File

@@ -1,50 +0,0 @@
using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.Options;
using System;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using SZUAbsolventenverein.Module.AdminModules.Models;
using SZUAbsolventenverein.Module.AdminModules.Repository;
namespace SZUAbsolventenverein.Module.AdminModules.Server.Startup
{
public class ConfigureDataProtectionTokenProviderOptions : IConfigureOptions<DataProtectionTokenProviderOptions>
{
private readonly IServiceProvider _serviceProvider;
public ConfigureDataProtectionTokenProviderOptions(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
Console.WriteLine("Instatiating DPTPO Configurator");
}
public void Configure(DataProtectionTokenProviderOptions options)
{
Console.WriteLine("Configuring DPTPO");
// default fallback
options.TokenLifespan = TimeSpan.FromHours(2);
try
{
using var scope = _serviceProvider.CreateScope();
var _dbContextFactory = scope.ServiceProvider.GetRequiredService<IDbContextFactory<AdminModulesContext>>();
var _ctx = _dbContextFactory.CreateDbContext();
AdminSetting adminSetting = _ctx.AdminSettings.First();
Console.WriteLine("Setting DPTPO: " + adminSetting);
if (adminSetting != null)
{
Console.WriteLine("Setting DPTPO: " + adminSetting.TokenLifetime);
options.TokenLifespan = TimeSpan.FromDays(adminSetting.TokenLifetime);
}
}
catch (Exception ex)
{
Console.WriteLine("DB Not ready, using default DPTPO: " + ex);
// DB not ready / read failed — keep default
// Unable to get Create DB Context because Oqtane's Database Setup is incomplete.
}
}
}
}

View File

@@ -1,14 +1,11 @@
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Oqtane.Infrastructure;
using System;
using SZUAbsolventenverein.Module.AdminModules.Models;
using SZUAbsolventenverein.Module.AdminModules.Repository;
using SZUAbsolventenverein.Module.AdminModules.Server.Startup;
using SZUAbsolventenverein.Module.AdminModules.Services;
using SZUAbsolventenverein.Module.AdminSettings.Services;
@@ -30,10 +27,27 @@ namespace SZUAbsolventenverein.Module.AdminModules.Startup
{
services.AddTransient<IAdminModulesService, ServerAdminModulesService>();
services.AddTransient<IAdminSettingsService, ServerAdminSettingsService>();
services.AddTransient<IAdminSettingsRepository, AdminSettingsRepository>();
services.AddDbContextFactory<AdminModulesContext>(opt => { }, ServiceLifetime.Transient);
services.AddTransient<IConfigureOptions<DataProtectionTokenProviderOptions>,
ConfigureDataProtectionTokenProviderOptions>();
services.Configure<DataProtectionTokenProviderOptions>(options =>
{
options.TokenLifespan = TimeSpan.FromDays(2);
});
try
{
AdminSetting settings = AdminSettingsExtensions.LoadSettings();
services.Configure<DataProtectionTokenProviderOptions>(options =>
{
options.TokenLifespan = TimeSpan.FromDays(settings.TokenLifetime);
});
Console.WriteLine("Saving token lifetime: " + settings.TokenLifetime + " days");
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
}
}