Part-DB-server/templates/users/_oauth_connected_apps.html.twig

62 lines
3.6 KiB
Twig
Raw Normal View History

2026-07-27 16:09:39 +02:00
{# @var user \App\Entity\UserSystem\User #}
{# @var connected_apps array<array{client: \League\Bundle\OAuth2ServerBundle\Model\ClientInterface, expiry: \DateTimeInterface, friendlyName: ?string, scopeLevel: ?\App\Entity\UserSystem\ApiTokenLevel, lastUsedAt: ?\DateTimeImmutable}> #}
2026-07-27 16:09:39 +02:00
{% import "helper.twig" as helper %}
<div class="card mt-4">
<div class="card-header">
<i class="fa-solid fa-plug-circle-bolt fa-fw" aria-hidden="true"></i>
{% trans %}user.settings.oauth_connected_apps{% endtrans %}
</div>
<div class="card-body">
<span class="text-muted">{% trans %}user.settings.oauth_connected_apps.description{% endtrans %}</span>
{% if connected_apps is empty %}
<br><br>
<b>{% trans %}user.settings.oauth_connected_apps.none_yet{% endtrans %}</b>
<br><br>
{% else %}
<form action="{{ path('user_oauth_connected_apps_revoke') }}" method="post"
{{ stimulus_controller('elements/delete_btn') }} {{ stimulus_action('elements/delete_btn', "submit", "submit") }}
data-delete-title="{% trans %}user.settings.oauth_connected_apps.revoke.title{% endtrans %}"
data-delete-message="{% trans %}user.settings.oauth_connected_apps.revoke.message{% endtrans %}">
<input type="hidden" name="_method" value="DELETE">
<input type="hidden" name="_token" value="{{ csrf_token('delete' ~ user.id) }}">
<table class="table table-striped table-bordered table-hover table-sm mt-2">
<thead>
<tr>
<th>{% trans %}user.settings.oauth_connected_apps.app_name{% endtrans %}</th>
<th>{% trans %}user.settings.oauth_connected_apps.scope_level{% endtrans %}</th>
<th>{% trans %}user.settings.oauth_connected_apps.last_used{% endtrans %}</th>
2026-07-27 16:09:39 +02:00
<th>{% trans %}user.settings.oauth_connected_apps.access_until{% endtrans %}</th>
<th></th>
</tr>
</thead>
<tbody>
{% for connected_app in connected_apps %}
<tr>
<td>
{{ connected_app.friendlyName ?? connected_app.client.name }}
{% if connected_app.friendlyName is not empty %}
<br><span class="text-muted small">{{ connected_app.client.name }}</span>
{% endif %}
</td>
<td>{{ connected_app.scopeLevel ? connected_app.scopeLevel.translationKey|trans : '-' }}</td>
<td>{{ connected_app.lastUsedAt ? helper.format_date_nullable(connected_app.lastUsedAt) : '-' }}</td>
2026-07-27 16:09:39 +02:00
<td>{{ helper.format_date_nullable(connected_app.expiry) }}</td>
<td>
<button type="submit" class="btn btn-danger btn-sm" name="client_id"
value="{{ connected_app.client.identifier }}" {% if not is_granted('@api.manage_tokens') %}disabled="disabled"{% endif %}>
<i class="fas fa-trash-alt fa-fw"></i> {% trans %}user.settings.oauth_connected_apps.revoke{% endtrans %}
</button>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</form>
{% endif %}
</div>
</div>