Rôles, tableau de bord et tests unitaires

This commit is contained in:
Yasser Boulayoune 2026-04-07 16:26:00 +02:00
parent f508a2fcb5
commit 1799035236
51 changed files with 4350 additions and 0 deletions

View file

@ -0,0 +1,61 @@
{% extends 'base.html.twig' %}
{% block title %}Login - ServerControl{% endblock %}
{% block body %}
<div class="row justify-content-center mt-5">
<div class="col-md-4">
<div class="card p-4">
<h2 class="text-center mb-4"><i class="bi bi-server me-2"></i>ServerControl</h2>
{% if error %}
<div class="alert alert-danger">{{ error.messageKey|trans(error.messageData, 'security') }}</div>
{% endif %}
<form method="post">
<input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}">
<div class="mb-3">
<label class="form-label">Email</label>
<input class="form-control" type="email" name="_username" value="{{ last_username }}" autocomplete="email" required>
</div>
<div class="mb-3">
<label class="form-label">Password</label>
<input class="form-control" type="password" name="_password" autocomplete="current-password" required>
</div>
<div class="mb-3 form-check">
<input class="form-check-input" type="checkbox" name="_remember_me" id="remember_me">
<label class="form-check-label" for="remember_me">Remember me</label>
</div>
<button class="btn btn-primary w-100">Login</button>
</form>
<div class="text-center mt-3 d-flex flex-column gap-1">
<a href="{{ path('app_forgot_password') }}" style="font-size:.85rem; color:var(--muted);">Mot de passe oublié ?</a>
<a href="{{ path('app_register') }}">Crée un compte</a>
</div>
</div>
<div class="mt-3 p-3 rounded" style="background:#1e2a3a; font-size:.85rem;">
<div class="text-white-50 mb-2"><i class="bi bi-info-circle me-1"></i>Comptes de test</div>
<div class="d-flex flex-column gap-2">
<button class="btn btn-sm btn-outline-light text-start" onclick="fillLogin('admin@servercontrol.local','Admin1234!')">
<span class="badge bg-danger me-1">ADMIN</span>
admin@servercontrol.local
</button>
<button class="btn btn-sm btn-outline-light text-start" onclick="fillLogin('operator@servercontrol.local','Operator1234!')">
<span class="badge bg-primary me-1">OPERATOR</span>
operator@servercontrol.local
</button>
</div>
</div>
</div>
</div>
{% endblock %}
{% block javascripts %}
<script>
function fillLogin(email, password) {
document.querySelector('input[name="_username"]').value = email;
document.querySelector('input[name="_password"]').value = password;
}
</script>
{% endblock %}