Gestion des utilisateurs

This commit is contained in:
William Bouzourène 2025-01-02 21:18:56 +01:00
parent 7d71923d4f
commit efd8912648
Signed by: bouzoure
SSH key fingerprint: SHA256:19MbXpLua4rUtk8tunMesD8KUKb91LXLHg8E/qTooww
14 changed files with 576 additions and 26 deletions

75
views/user.html Normal file
View file

@ -0,0 +1,75 @@
{% extends "layouts/main.html" %}
{% block main %}
<div class="container mt-4">
<div class="mb-4">
<nav>
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="/">Accueil</a></li>
<li class="breadcrumb-item"><a href="/admin">Administration</a></li>
<li class="breadcrumb-item"><a href="/admin/users">Utilisateurs</a></li>
<li class="breadcrumb-item active">{{ User.Name }}</li>
</ol>
</nav>
<hr>
</div>
<div class="mb-3">
<b>Nom complet</b><br>
{{ User.Name }}
</div>
<div class="mb-3">
<b>Email</b><br>
{{ User.Email }}
</div>
<div class="mb-3">
<b>Administrateur</b><br>
{% if User.IsAdmin %}
Oui
{% else %}
Non
{% endif %}
</div>
<div class="mb-3">
<b>Ecran de bienvenue à la prochaine connexion</b><br>
{% if User.SkipWelcome %}
Non
{% else %}
Oui
{% endif %}
</div>
<div class="mb-3">
<b>Double facteur (TOTP)</b><br>
{% if User.TotpSecret.Valid %}
Enrollé
{% else %}
Enrollement lors de la prochaine connexion
{% endif %}
</div>
<div class="mt-3">
<a class="btn btn-md btn-primary" href="/admin/users/{{ User.ID }}/edit">
<i class="feather" data-feather="edit-2"></i>
Modifier
</a>
{% if User.ID != Globals.UserID %}
<form
action="/admin/users/{{ User.ID }}/delete"
method="post"
class="d-inline p-0"
>
<button class="btn btn-md btn-danger areyousure" type="submit">
<i class="feather" data-feather="trash-2"></i>
Supprimer
</button>
</form>
{% endif %}
</div>
</div>
{% endblock %}

121
views/user_form.html Normal file
View file

@ -0,0 +1,121 @@
{% extends "layouts/main.html" %}
{% block main %}
<div class="container mt-4">
<div class="mb-4">
<nav>
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="/">Accueil</a></li>
<li class="breadcrumb-item"><a href="/admin">Administration</a></li>
<li class="breadcrumb-item"><a href="/admin/users">Utilisateurs</a></li>
{% if User.ID %}
<li class="breadcrumb-item"><a href="/admin/users/{{ User.ID }}">{{ User.Name }}</a></li>
<li class="breadcrumb-item active">Modifier</li>
{% else %}
<li class="breadcrumb-item active">Ajouter</li>
{% endif %}
</ol>
</nav>
<hr>
</div>
{% if Errors %}
<div class="alert alert-danger">
<ul class="m-0">
{% for Error in Errors %}
<li>{{ Error }}</li>
{% endfor %}
</ul>
</div>
{% endif %}
<form id="user" method="post">
<div class="mb-3">
<label for="name" class="form-label">
Nom complet
</label>
<input
id="name"
class="form-control"
type="text"
name="name"
required
value="{{ User.Name }}"
>
</div>
<div class="mb-3">
<label for="email" class="form-label">
Email
</label>
<input
id="email"
class="form-control"
type="email"
name="email"
required
value="{{ User.Email }}"
>
</div>
<div class="mb-3">
<input
type="checkbox"
class="form-check-input me-2"
id="is_admin"
name="is_admin"
{% if User.IsAdmin %}checked{% endif %}
>
<label for="is_admin" class="form-label">
Administrateur
</label>
</div>
<div class="mb-3">
<label for="password" class="form-label">
Mot de passe
</label>
<input
id="password"
class="form-control"
type="password"
name="password"
{% if !User.ID %}required{% endif %}
>
{% if User.ID %}
<div class="form-text">
Laisser vide pour ne pas changer
</div>
{% endif %}
</div>
{% if User.ID %}
<div class="mb-3">
<input
type="checkbox"
class="form-check-input me-2"
id="reset_totp"
name="reset_totp"
>
<label for="reset_totp" class="form-label">
Réinitialiser le double facteur (TOTP)
</label>
<div class="form-text">
Si la case est cochée, l'utilisateur devra effectuer
un enrollement TOTP à la prochaine connexion.
</div>
</div>
{% endif %}
<div class="mt-3">
<button class="btn btn-primary" type="submit">
<i class="me-1" data-feather="save"></i>
Enregistrer
</button>
</div>
</form>
</div>
{% endblock %}

64
views/users.html Normal file
View file

@ -0,0 +1,64 @@
{% extends "layouts/main.html" %}
{% block main %}
<div class="container mt-4">
<div class="mb-4">
<nav>
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="/">Accueil</a></li>
<li class="breadcrumb-item"><a href="/admin">Administration</a></li>
<li class="breadcrumb-item active">Utilisateurs</li>
</ol>
</nav>
<hr>
</div>
{% if Users %}
<div class="table-responsive">
<table class="table">
<thead>
<tr>
<th>Nom complet</th>
<th>Email</th>
<th>Administrateur</th>
</tr>
</thead>
<tbody>
{% for User in Users %}
<tr>
<td>
<span class="user-photo me-2">{{ User.Name|first }}</span>
<a href="/admin/users/{{ User.ID }}">
{{ User.Name }}
</a>
</td>
<td>
{{ User.Email }}
</td>
<td>
{% if User.IsAdmin %}
Oui
{% else %}
Non
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% else %}
<div class="my-4">
Pas d'utilisateurs pour le moment
</div>
{% endif %}
<div class="mt-3">
<a class="btn btn-md btn-primary" href="/admin/users/add">
<i class="feather" data-feather="plus"></i>
Ajouter
</a>
</div>
</div>
{% endblock %}