From d24244aae600c57180030c3f0f5e0b1135f44bac Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Sun, 11 Oct 2026 08:31:27 +0100 Subject: [PATCH] Honor the administration setup --- .../AdministrationController.cs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/Yavsc.Org/Controllers/Administration/AdministrationController.cs b/src/Yavsc.Org/Controllers/Administration/AdministrationController.cs index 3abf82965..88ea81ce8 100644 --- a/src/Yavsc.Org/Controllers/Administration/AdministrationController.cs +++ b/src/Yavsc.Org/Controllers/Administration/AdministrationController.cs @@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Options; using Yavsc.Abstract.Identity; using Yavsc.Models; using Yavsc.Server.Helpers; @@ -19,14 +20,20 @@ namespace Yavsc.Controllers private readonly RoleManager _roleManager; private readonly ApplicationDbContext _dbContext; + private readonly SiteSettings _siteSettings; + private readonly ILogger _logger; public AdministrationController(UserManager userManager, RoleManager roleManager, - ApplicationDbContext context) + ApplicationDbContext context, + IOptions siteSettings, + ILoggerFactory loggerFactory) { _userManager = userManager; _roleManager = roleManager; this._dbContext = context; + this._siteSettings = siteSettings.Value; + this._logger = loggerFactory.CreateLogger(); } @@ -92,6 +99,16 @@ namespace Yavsc.Controllers } var user = await _userManager.FindByIdAsync(User.GetUserId()); + + var email = user.Email; + var isOk = email == _siteSettings.Owner?.EMail || _siteSettings.Admin?.EMail == email; + if (!isOk) + { + if (_siteSettings.Owner==null && _siteSettings.Admin==null) + _logger.LogError("No owner or admin is set in the site settings."); + return Forbid(); + } + // check all user groups exist if (!await EnsureRoleList()) {