📄 MatDenDagen/Components/Pages/Admin/Login.razor
@page "/admin/login"
@using MatDenDagen.Services
@using Microsoft.AspNetCore.Components
@using Microsoft.AspNetCore.Components.Authorization
@inject AdminAuthService AdminAuthService
@inject NavigationManager NavigationManager

<h1>Admin Login</h1>

@if (errorMessage is not null)
{
  <div class="error">
    <p>@errorMessage</p>
  </div>
}

<EditForm FormName="SignIn" Model="@model" OnSubmit="@HandleSignin" Enhance>
  <p>
    <label for="password">
      <span>Lösenord:</span>
      <input type="password" name="model.Password" required />
    </label>
  </p>
  <p>
    <button type="submit">Logga in</button>
  </p>
</EditForm>

@code {
  [SupplyParameterFromForm]
  private Model? model { get; set; }

  private string? errorMessage = null;

  protected override void OnInitialized()
  {
    model ??= new();
  }

  private async Task HandleSignin()
  {
    if (string.IsNullOrWhiteSpace(model?.Password))
    {
      errorMessage = "Lösenord krävs";
      return;
    }

    if (!AdminAuthService.ValidatePassword(model.Password))
    {
      errorMessage = "Fel lösenord";
      return;
    }

    await AdminAuthService.SignIn();
    NavigationManager.NavigateTo("/admin/questions", true);
  }

  private sealed class Model
  {
    public string? Password { get; set; }
  }
}

<style>
  .error {
    color: red;
    margin-bottom: 1rem;
  }

  form {
    max-width: 400px;
    margin: 0 auto;
  }

  div {
    margin-bottom: 1rem;
  }

  label {
    display: block;
    margin-bottom: 0.5rem;
  }

  input {
    width: 100%;
    padding: 0.5rem;
    box-sizing: border-box;
  }

  button {
    padding: 0.5rem 1rem;
    background-color: #007bff;
    color: white;
    border: none;
    cursor: pointer;
  }
</style>