gmao/app_new/templates/admin/user_access.html
root 20362fb31e
Some checks are pending
CI - Tests et Syntax / lint-and-test (push) Waiting to run
Renforcer le RBAC et séparer les administrateurs
2026-08-21 18:10:29 +00:00

49 lines
3 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{% extends "base.html" %}
{% block title %}Accès — {{ user.username }}{% endblock %}
{% block content %}
<div class="container-fluid">
<h1>Accès de {{ user.full_name or user.username }}</h1>
<form method="post">
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
<div class="card mb-3">
<div class="card-header"><strong>Rôles</strong></div>
<div class="card-body row g-2">
<p class="text-muted">Les permissions effectives sont lunion des rôles actifs. Un utilisateur peut cumuler plusieurs rôles.</p>
{% for role in roles_list %}
<div class="col-md-3"><label class="border rounded p-2 d-block h-100">
<input type="checkbox" name="role_ids" value="{{ role.id }}" {% if role.id in selected_roles %}checked{% endif %}>
<strong>{{ role.name }}</strong><br><small class="text-muted">{{ role.description or 'Rôle disponible dans la GMAO.' }}</small>
</label></div>
{% else %}<p>Aucun rôle RBAC disponible.</p>{% endfor %}
</div>
</div>
<div class="card mb-3">
<div class="card-header"><strong>Exceptions individuelles</strong><small class="d-block text-muted">Hériter utilise les permissions des rôles. Autoriser ajoute un accès ; Refuser reste prioritaire sur les rôles.</small></div>
<div class="card-body">
{% for module, permissions in permissions_list|groupby('module') %}
<details class="mb-3" {% if loop.first %}open{% endif %}>
<summary class="fw-bold">{{ module|replace('_', ' ')|title }}</summary>
<div class="row g-2 mt-1">
{% for permission in permissions %}
<div class="col-xl-4 col-md-6">
<label class="small fw-semibold" for="permission-{{ permission.id }}">{{ permission.name }}</label>
<select id="permission-{{ permission.id }}" class="form-select form-select-sm" name="permission_{{ permission.id }}">
<option value="">Hériter</option>
<option value="allow" {% if overrides.get(permission.id)=='allow' %}selected{% endif %}>Autoriser</option>
<option value="deny" {% if overrides.get(permission.id)=='deny' %}selected{% endif %}>Refuser</option>
</select>
<small class="text-muted d-block">{{ permission.description }}</small>
<small class="text-secondary">Accès actuel : <strong>{{ 'AUTORISÉ' if effective.get(permission.code) else 'REFUSÉ' }}</strong>{% if provenance.get(permission.code) %} · {{ provenance.get(permission.code) }}{% endif %}</small>
<small class="text-secondary d-block">Code : {{ permission.code }}</small>
</div>
{% endfor %}
</div>
</details>
{% else %}<p>Aucune permission RBAC disponible.</p>{% endfor %}
</div>
</div>
<button class="btn btn-primary">Enregistrer les accès</button>
<a class="btn btn-outline-secondary ms-2" href="{{ url_for('admin.users') }}">Annuler</a>
</form>
</div>
{% endblock %}