gmao/app_new/templates/admin/user_access.html

50 lines
3 KiB
HTML
Raw Normal View History

{% 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 %}