create user
Build and Push Docker Image to Gitea Container Registry / build-and-push (push) Successful in 1m24s
Build and Push Docker Image to Gitea Container Registry / build-and-push (pull_request) Successful in 1m19s

This commit is contained in:
Tygozwolle
2026-07-24 11:56:40 +02:00
parent 91a2aeb3fa
commit 09de033d70
5 changed files with 209 additions and 60 deletions
@@ -1,6 +1,7 @@
using Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage;
using Microsoft.EntityFrameworkCore;
using radiuscontroller.Data;
using radiuscontroller.Models;
namespace radiuscontroller.Services;
@@ -39,6 +40,39 @@ public class AdminAuthService
}
}
public async Task<bool> HasAnyAdminAsync()
{
return await _db.AdminUsers.AnyAsync();
}
public async Task<bool> RegisterInitialAdminAsync(string username, string password)
{
if (string.IsNullOrWhiteSpace(username) || string.IsNullOrWhiteSpace(password))
return false;
// Ensure first-time setup is only allowed if no admin users exist
if (await _db.AdminUsers.AnyAsync())
return false;
string cleanUsername = username.Trim().ToLowerInvariant();
string hash = BCrypt.Net.BCrypt.HashPassword(password.Trim());
var admin = new AdminUser
{
Username = cleanUsername,
PasswordHash = hash,
CreatedAt = DateTime.UtcNow
};
_db.AdminUsers.Add(admin);
await _db.SaveChangesAsync();
CurrentAdminUsername = admin.Username;
await _sessionStorage.SetAsync(SessionKey, admin.Username);
NotifyStateChanged();
return true;
}
public async Task<bool> LoginAsync(string username, string password)
{
if (string.IsNullOrWhiteSpace(username) || string.IsNullOrWhiteSpace(password))