feat: align role assignment logic with myep-team
This commit is contained in:
@@ -53,7 +53,14 @@
|
||||
{{ user.personId | default('-') }}
|
||||
</td>
|
||||
<td>
|
||||
{{ user.roles | map_roles | join(', ') | default('-') }}
|
||||
{{ user.roles | effective_roles | join(', ') | default('-') }}
|
||||
{% if user.roles | nominated_roles is not empty %}
|
||||
<div class="flex flex-wrap gap-1 pt-1">
|
||||
{% for label in user.roles | nominated_roles %}
|
||||
<twig:badge variant="warning">{{ label }}</twig:badge>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ user.hotelCodes | join(', ') | default('-') }}
|
||||
@@ -63,8 +70,8 @@
|
||||
</td>
|
||||
<td class="text-right">
|
||||
<twig:dropdown>
|
||||
<twig:dropdown:hxbutton url="{{ path('app_admin_user_edit', { 'id': user.id, 'r': return_url() }) }}">
|
||||
Berechtigungen bearbeiten
|
||||
<twig:dropdown:hxbutton url="{{ path('app_admin_user_permissions', { 'id': user.id, 'r': return_url() }) }}">
|
||||
Berechtigungen
|
||||
</twig:dropdown:hxbutton>
|
||||
</twig:dropdown>
|
||||
</td>
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
{% extends 'htmx_confirmation_modal.html.twig' %}
|
||||
|
||||
{% block title %}Rolle freischalten{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div>
|
||||
Möchtest du <em>{{ user.email }}</em> die Rolle <em>{{ role_label }}</em> freischalten?
|
||||
Die Rolle bleibt bestehen, solange BusPro sie meldet, und kann hier nicht wieder entzogen werden.
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block button_confirm %}Freischalten{% endblock %}
|
||||
@@ -1,27 +0,0 @@
|
||||
{% extends 'htmx_modal_admin.html.twig' %}
|
||||
{% form_theme form 'forms_admin.html.twig' %}
|
||||
|
||||
{% block title %}
|
||||
Berechtigungen
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="pb-4 text-sm text-gray-500">
|
||||
{{ user.email }}
|
||||
</div>
|
||||
<div class="pb-4 text-sm text-gray-500">
|
||||
aus BusPro: {{ syncedRoles | map_roles | join(', ') | default('–') }}
|
||||
</div>
|
||||
{{ form_start(form) }}
|
||||
<div class="grid lg:grid-cols-2 gap-y-4 lg:gap-x-8">
|
||||
{{ form_row(form.roles) }}
|
||||
{{ form_row(form.hotelCodes) }}
|
||||
</div>
|
||||
<div class="flex justify-end pt-8">
|
||||
<button type="submit" class="button button--primary button--small">
|
||||
speichern
|
||||
</button>
|
||||
</div>
|
||||
{{ form_rest(form) }}
|
||||
{{ form_end(form) }}
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,56 @@
|
||||
{% extends 'htmx_modal_admin.html.twig' %}
|
||||
|
||||
{% block title %}
|
||||
Berechtigungen
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="pb-4 text-sm text-gray-500">
|
||||
{{ user.email }}
|
||||
</div>
|
||||
|
||||
<div class="font-bold pb-2">Aus BusPro</div>
|
||||
<div class="pb-6 text-sm text-gray-500">
|
||||
<dl class="grid grid-cols-[8rem_1fr] gap-y-1">
|
||||
<dt>Rollen</dt>
|
||||
<dd>{{ user.roles | effective_roles | join(', ') | default('–') }}</dd>
|
||||
<dt>Häuser</dt>
|
||||
<dd>{{ user.hotelCodes | join(', ') | default('–') }}</dd>
|
||||
<dt>Letzter Login</dt>
|
||||
<dd>{{ user.lastLoginAt ? user.lastLoginAt | date('d.m.Y, H:i') : '–' }}</dd>
|
||||
</dl>
|
||||
<p class="pt-2">
|
||||
Rollen und Häuser werden bei jeder Anmeldung aus BusPro übernommen und lassen sich hier nicht ändern.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="font-bold pb-2">Freischaltung</div>
|
||||
{% if approvableRoles is empty and selfRefusedRoles is empty %}
|
||||
<div class="text-sm text-gray-500">
|
||||
Keine offenen Freischaltungen.
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="text-sm text-gray-500 pb-4">
|
||||
BusPro meldet diese Rollen für den Account. Sie sind erst nach der Freischaltung wirksam.
|
||||
</div>
|
||||
{% if approvableRoles is not empty %}
|
||||
<div class="flex flex-wrap gap-2">
|
||||
{% for role, label in approvableRoles %}
|
||||
<button type="button"
|
||||
class="button button--primary button--small"
|
||||
hx-get="{{ path('app_admin_user_approve_role', { id: user.id, role: role, r: returnUrl }) }}"
|
||||
hx-target="body"
|
||||
hx-swap="beforeend">
|
||||
{{ label }} freischalten
|
||||
</button>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if selfRefusedRoles is not empty %}
|
||||
<div class="text-sm text-gray-500 pt-4">
|
||||
{{ selfRefusedRoles | join(', ') }}: diese Rolle kannst du dir nicht selbst freischalten.
|
||||
Bitte wende dich an eine:n andere:n Administrator:in.
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user