create user
This commit is contained in:
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user