0
0
mirror of https://github.com/kevinpapst/kimai2.git synced 2024-12-22 12:18:29 +00:00
kevinpapst_kimai2/templates/user/api-token.html.twig
2024-05-01 14:24:24 +02:00

105 lines
4.9 KiB
Twig

{% extends 'user/form.html.twig' %}
{% import "macros/widgets.html.twig" as widgets %}
{% block form_body %}
<div class="card-body">
<div class="row mb-3">
<div class="col-12 col-md-6">
<p>
{{ 'api_password.intro'|trans }}
</p>
<p>
<strong>URL</strong>: {{ url('api.swagger_ui', {}, false)|replace({'/doc': ''}) }}
</p>
</div>
<div class="col-12 col-md-6 text-md-end">
<a class="btn action-create modal-ajax-form" href="{{ path('user_profile_access_token', {'username': user.userIdentifier}) }}">{{ icon('create', true) }} {{ 'create'|trans }}</a>
<a class="btn" target="_blank" href="{{ path('api.swagger_ui') }}">{{ icon('documentation', true) }} Swagger Docs</a>
<a class="btn" target="_blank" href="{{ 'rest-api.html'|docu_link }}">{{ icon('help', true) }} {{ 'help'|trans }}</a>
</div>
</div>
{% if created_token is not null %}
<div class="card mb-4">
<div class="ribbon bg-red">{{ 'status.new'|trans }}</div>
<div class="card-body">
<h3 class="card-title">{{ created_token.name }}</h3>
<p class="text-secondary"></p>
<p>{{ 'api_token_hidden'|trans }}</p>
<div class="codeblock">
<div class="codeblock-copy" style="position: absolute; right: 30px; padding-top: 5px">
<button class="btn btn-icon btn-dark" onclick="navigator.clipboard.writeText('{{ created_token.token }}');"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-clipboard icon" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="M9 5h-2a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-12a2 2 0 0 0 -2 -2h-2"></path><path d="M9 3m0 2a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v0a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2z"></path></svg></button>
</div>
<pre><code>{{ created_token.token }}</code></pre>
</div>
</div>
</div>
{% endif %}
{% if access_tokens|length > 0 %}
<table class="table table-vcenter">
<thead>
<tr>
<th>{{ 'name'|trans }}</th>
<th>{{ 'last_usage'|trans }}</th>
<th>{{ 'expires'|trans }}</th>
<th class="w-min actions"></th>
</tr>
</thead>
<tbody>
{% for token in access_tokens %}
<tr>
<td>{{ token.name }}</td>
<td>
{% if token.lastUsage is not null %}
{{ token.lastUsage|date_time }}
{% endif %}
</td>
<td>
{% if token.expiresAt is not null %}
{{ token.expiresAt|date_short }}
{% endif %}
</td>
<td>
{{ widgets.action_button('trash', {'url': path('delete_api_token', {id: token.id}), class: 'api-link', 'attr': {
'data-question': 'confirm.delete',
'data-event': 'kimai.accessToken',
'data-method': 'DELETE',
'data-question': 'confirm.delete',
'data-msg-error': 'action.delete.error',
'data-msg-success': 'action.delete.success'
}}) }}
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
{% embed '@theme/embeds/collapsible.html.twig' with {id: 'activity_invoice_settings'} %}
{% import "macros/widgets.html.twig" as widgets %}
{% block title %}{{ 'password'|trans }}{% endblock %}
{% block box_class %}mt-3{% endblock %}
{% block body %}
{{ widgets.alert('danger', 'api_password_deprecated'|trans) }}
{{ form_start(form) }}
{{ form_widget(form) }}
<input type="submit" value="{{ 'action.save'|trans }}" class="btn btn-primary" />
{{ form_end(form) }}
{% endblock %}
{% endembed %}
</div>
{% endblock %}
{% block javascripts %}
{{ parent() }}
<script type="text/javascript">
document.addEventListener('kimai.initialized', function() {
KimaiReloadPageWidget.create('kimai.accessToken');
});
</script>
{% endblock %}