Files
radius/radiuscontroller/Components/Pages/Admin/Login.razor
T

97 lines
3.4 KiB
Plaintext

@page "/admin/login"
@rendermode InteractiveServer
@inject AdminAuthService AuthService
@inject NavigationManager NavManager
<div class="portal-wrapper">
<div class="portal-header">
<div class="brand-icon" style="margin: 0 auto 1rem auto; width: 60px; height: 60px; font-size: 1.8rem; background: linear-gradient(135deg, var(--accent-purple), var(--primary));">
<i class="bi bi-shield-lock-fill"></i>
</div>
<h1 class="portal-title">Administrator Login</h1>
<p class="portal-subtitle">Access RADIUS server policies, session limits, and data accounting</p>
</div>
<div class="glass-card">
<EditForm Model="this" OnValidSubmit="HandleLogin">
<div class="form-group">
<label class="form-label" for="adminUsername">Username</label>
<input id="adminUsername"
type="text"
class="form-control-glass"
placeholder="admin"
@bind="username"
required />
</div>
<div class="form-group">
<label class="form-label" for="adminPassword">Password</label>
<input id="adminPassword"
type="password"
class="form-control-glass"
placeholder="••••••••"
@bind="password"
required />
</div>
@if (!string.IsNullOrEmpty(errorMessage))
{
<div style="color: var(--accent-rose); font-size: 0.875rem; margin-bottom: 1rem;">
<i class="bi bi-exclamation-triangle-fill"></i> @errorMessage
</div>
}
<button type="submit" class="btn-gradient-primary" disabled="@isSubmitting">
@if (isSubmitting)
{
<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>
<span>Authenticating...</span>
}
else
{
<i class="bi bi-box-arrow-in-right"></i>
<span>Sign In to Admin Panel</span>
}
</button>
</EditForm>
<div style="margin-top: 1.5rem; text-align: center; padding-top: 1rem; border-top: 1px solid var(--bg-card-border); font-size: 0.8rem; color: var(--text-dim);">
Default credentials: <code style="color: var(--accent-teal);">admin</code> / <code style="color: var(--accent-teal);">admin123</code>
</div>
</div>
</div>
@code {
private string username = string.Empty;
private string password = string.Empty;
private bool isSubmitting = false;
private string errorMessage = string.Empty;
protected override async Task OnInitializedAsync()
{
await AuthService.InitializeAsync();
if (AuthService.IsAuthenticated)
{
NavManager.NavigateTo("/admin");
}
}
private async Task HandleLogin()
{
isSubmitting = true;
errorMessage = string.Empty;
bool success = await AuthService.LoginAsync(username, password);
if (success)
{
NavManager.NavigateTo("/admin");
}
else
{
errorMessage = "Invalid admin username or password.";
}
isSubmitting = false;
}
}