Renamed users templates folder to recommended snake_case

This commit is contained in:
Jan Böhmer 2023-02-04 22:49:28 +01:00
parent 6f28029fb8
commit 29e46d5d05
6 changed files with 4 additions and 4 deletions

View file

@ -0,0 +1,174 @@
{# @var user \App\Entity\UserSystem\User #}
<div class="card mt-4">
<div class="card-header">
<i class="fa fa-shield-alt fa-fw" aria-hidden="true"></i>
{% trans %}user.settings.2fa_settings{% endtrans %}
</div>
<div class="card-body">
<ul class="nav nav-tabs" id="tfa-tabs" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="google-tab" data-bs-toggle="tab" href="#tfa-google" role="tab"
aria-controls="home" aria-selected="true">{% trans %}tfa.settings.google.tab{% endtrans %}</a>
</li>
<li class="nav-item">
<a class="nav-link" id="backup-tab" data-bs-toggle="tab" href="#tfa-backup" role="tab"
aria-controls="profile" aria-selected="false">{% trans %}tfa.settings.bakup.tab{% endtrans %}</a>
</li>
<li class="nav-item">
<a class="nav-link" id="u2f-tab" data-bs-toggle="tab" href="#tfa-u2f" role="tab"
aria-controls="profile" aria-selected="false">{% trans %}tfa.settings.u2f.tab{% endtrans %}</a>
</li>
<li class="nav-item">
<a class="nav-link" id="trustedDevices-tab" data-bs-toggle="tab" href="#tfa-trustedDevices" role="tab"
aria-controls="profile" aria-selected="false">{% trans %}tfa.settings.trustedDevices.tab{% endtrans %}</a>
</li>
</ul>
<div class="tab-content mt-3 mb-3" id="tfa-tabs-content">
<div class="tab-pane fade show active" id="tfa-google" role="tabpanel" aria-labelledby="google-tab">
{% set google_form_attr = {} %}
{% if tfa_google.enabled %}
{% set google_form_attr = { 'data-delete-form': true, 'data-controller': 'elements--delete-btn', 'data-action': 'submit->elements--delete-btn#submit',
'data-delete-title': 'tfa_google.disable.confirm_title' | trans, 'data-delete-message': 'tfa_google.disable.confirm_message'|trans} %}
{% endif %}
{{ form_start(google_form, { 'attr': google_form_attr}) }}
{% if not tfa_google.enabled %}
<div class="offset-sm-3">
<h6>{% trans %}tfa_google.disabled_message{% endtrans %}</h6>
</div>
<div class="offset-sm-3 row">
<div class="col-sm-3">
<img width="100%" class="img-fluid bg-white p-2" alt="{{ tfa_google.qrContent }}" src="{{ barcode_svg(tfa_google.qrContent) | data_uri("image/svg+xml") }}">
</div>
<div class="col-sm-9 my-auto">
<ol class="">
<li>{% trans %}tfa_google.step.download{% endtrans %}</li>
<li>{% trans %}tfa_google.step.scan{% endtrans %}</li>
<li>{% trans %}tfa_google.step.input_code{% endtrans %}</li>
<li>{% trans %}tfa_google.step.download_backup{% endtrans %}</li>
</ol>
</div>
</div>
<div class="offset-sm-3">
<button class="btn btn-link" type="button" data-bs-toggle="collapse" data-bs-target="#manualSetupCollapse" aria-expanded="false" aria-controls="manualSetupCollapse">
{% trans %}tfa_google.manual_setup{% endtrans %}
</button>
<div class="collapse" id="manualSetupCollapse">
<div class="card card-body mb-2">
<p><b>{% trans %}tfa_google.manual_setup.type{% endtrans %}</b>: TOTP</p>
<p><b>{% trans %}tfa_google.manual_setup.username{% endtrans %}</b>: {{ tfa_google.username }}</p>
<p><b>{% trans %}tfa_google.manual_setup.secret{% endtrans %}</b>: {{ tfa_google.secret }}</p>
<p><b>{% trans %}tfa_google.manual_setup.digit_count{% endtrans %}</b>: 6</p>
</div>
</div>
</div>
{{ form_row(google_form.google_confirmation) }}
{% else %}
<div class="offset-sm-3">
<h6>{% trans %}tfa_google.enabled_message{% endtrans %}</h6>
</div>
{% endif %}
{{ form_row(google_form.submit) }}
{{ form_end(google_form) }}
</div>
<div class="tab-pane fade" id="tfa-backup" role="tabpanel" aria-labelledby="backup-tab">
{% if user.backupCodes is empty %}
<div class="offset-sm-3">
<h6>{% trans %}tfa_backup.disabled{% endtrans %}</h6>
<span>{% trans %}tfa_backup.explanation{% endtrans %}</span>
</div>
{% else %}
{% set backup_form_attr = { 'data-delete-form': true, 'data-controller': 'elements--delete-btn', 'data-action': 'submit->elements--delete-btn#submit',
'data-delete-title': 'tfa_backup.reset_codes.confirm_title' | trans, 'data-delete-message': 'tfa_backup.reset_codes.confirm_message' | trans} %}
{{ form_start(backup_form, { 'attr': backup_form_attr}) }}
<div class="offset-sm-3">
<h6>{% trans %}tfa_backup.enabled{% endtrans %}</h6>
<span>{% trans %}tfa_backup.explanation{% endtrans %}</span>
</div>
<div class="offset-sm-3 mt-2">
<p class="mb-0"><b>{% trans %}tfa_backup.remaining_tokens{% endtrans %}:</b> {{ user.backupCodes | length }}</p>
<p><b>{% trans %}tfa_backup.generation_date{% endtrans %}:</b> {{ user.backupCodesGenerationDate | format_datetime }}</p>
</div>
<div class="offset-sm-3">
<a href="{{ path('show_backup_codes') }}" target="_blank" data-turbo="false" class="btn btn-primary">{% trans %}tfa_backup.show_codes{% endtrans %}</a>
</div>
<div class="offset-sm-3 mt-2">
{{ form_widget(backup_form.reset_codes) }}
</div>
{{ form_end(backup_form) }}
{% endif %}
</div>
<div class="tab-pane fade" id="tfa-u2f" role="tabpanel" aria-labelledby="u2f-tab">
<p>{% trans %}tfa_u2f.explanation{% endtrans %}</p>
{% if user.legacyU2FKeys is not empty or user.webauthnKeys is not empty %}
<b>{% trans %}tfa_u2f.table_caption{% endtrans %}:</b>
<form action="{{ path('u2f_delete') }}" method="post"
{{ stimulus_controller('elements/delete_btn') }} {{ stimulus_action('elements/delete_btn', "submit", "submit") }}
data-delete-title="{% trans %}tfa_u2f.delete_u2f.confirm_title{% endtrans %}"
data-delete-message="{% trans %}tfa_u2f.delete_u2f.confirm_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-sm mt-2">
<thead>
<tr>
<th>#</th>
<th>{% trans %}tfa_u2f.keys.name{% endtrans %}</th>
<th>{% trans %}tfa_u2f.keys.added_date{% endtrans %}</th>
<th></th>
</tr>
</thead>
<tbody>
{% for key in user.legacyU2FKeys %}
<tr>
<td>{{ loop.index }} <b>(U2F)</b></td>
<td>{{ key.name }}</td>
<td>{{ key.addedDate | format_datetime }}</td>
<td><button type="submit" class="btn btn-danger btn-sm" name="key_id" value="{{ key.id }}"><i class="fas fa-trash-alt fa-fw"></i> {% trans %}tfa_u2f.key_delete{% endtrans %}</button></td>
</tr>
{% endfor %}
{% for key in user.webauthnKeys %}
<tr>
<td>{{ loop.index }} <b>(WebAuthn)</b></td>
<td>{{ key.name }}</td>
<td>{{ key.addedDate | format_datetime }}</td>
<td><button type="submit" class="btn btn-danger btn-sm" name="webauthn_key_id" value="{{ key.id }}"><i class="fas fa-trash-alt fa-fw"></i> {% trans %}tfa_u2f.key_delete{% endtrans %}</button></td>
</tr>
{% endfor %}
</tbody>
</table>
</form>
{% else %}
<p><b>{% trans %}tfa_u2f.no_keys_registered{% endtrans %}</b></p>
{% endif %}
<a href="{{ path('webauthn_register') }}" class="btn btn-success"><i class="fas fa-plus-square fa-fw"></i> {% trans %}tfa_u2f.add_new_key{% endtrans %}</a>
</div>
<div class="tab-pane fade" id="tfa-trustedDevices" role="tabpanel" aria-labelledby="trustedDevices-tab-tab">
<p>{% trans %}tfa_trustedDevices.explanation{% endtrans %}</p>
<form action="{{ path('tfa_trustedDevices_invalidate') }}" method="post"
{{ stimulus_controller('elements/delete_btn') }} {{ stimulus_action('elements/delete_btn', "submit", "submit") }}
data-delete-title="{% trans %}tfa_trustedDevices.invalidate.confirm_title{% endtrans %}"
data-delete-message="{% trans %}tfa_trustedDevices.invalidate.confirm_message{% endtrans %}">
<input type="hidden" name="_method" value="DELETE">
<input type="hidden" name="_token" value="{{ csrf_token('devices_reset' ~ user.id) }}">
<button class="btn btn-danger" type="submit">{% trans %}tfa_trustedDevices.invalidate.btn{% endtrans %}</button>
</form>
</div>
</div>
</div>
</div>

View file

@ -0,0 +1,40 @@
{% extends "base.html.twig" %}
{% block title %}{{ partdb_title }} {% trans %}tfa_backup.codes.title{% endtrans %}{% endblock %}
{% block body %}
<div class="container">
<div class="card">
<div class="card-header">
{{ partdb_title }} {% trans %}tfa_backup.codes.title{% endtrans %}
</div>
<div class="card-body">
<h5 class="card-title">{% trans %}tfa_backup.codes.explanation{% endtrans %}</h5>
<p class="card-text">{% trans %}tfa_backup.codes.help{% endtrans %}</p>
<p class="mb-0"><b>{% trans %}tfa_backup.remaining_tokens{% endtrans %}:</b> {{ user.backupCodes | length }}</p>
<p class="mb-0"><b>{% trans %}tfa_backup.username{% endtrans %}:</b> {{ user.name }}</p>
<p><b>{% trans %}tfa_backup.generation_date{% endtrans %}:</b> {{ user.backupCodesGenerationDate | format_datetime }}</p>
<div class="alert border-dark">
<div class="card-body">
<ul class="row list-unstyled" id="backup_codes_list">
{% for code in user.backupCodes %}
<h4 class="col-6"><li><i class="far fa-square fa-fw"></i><span class="font-monospace text-dark ms-1">{{ code }}</span></li></h4>
{% endfor %}
</ul>
</div>
</div>
<p><small>{% trans with {'%date%': "now" | format_datetime} %}tfa_backup.codes.page_generated_on{% endtrans %}</small></p>
<a href="javascript:window.print()" class="btn btn-outline-dark d-print-none">
<i class="fas fa-print fa-fw"></i> {% trans %}tfa_backup.codes.print{% endtrans %}
</a>
<button class="btn btn-outline-dark d-print-none" data-clipboard-text="{{ user.backupCodes | join('\n') }}">
<i class="fas fa-copy"></i> {% trans %}tfa_backup.codes.copy_clipboard{% endtrans %}
</button>
</div>
</div>
</div>
{% endblock %}

View file

@ -0,0 +1,82 @@
{% extends "main_card.html.twig" %}
{% block title %}{% trans %}user.info.label{% endtrans %}{% endblock %}
{% block card_title %}<i class="fas fa-info-circle fa-fw" aria-hidden="true"></i>
{% trans %}user.info.label{% endtrans %}{% endblock %}
{% block card_content %}
<div class="card-body row">
<div class="col-md-2">
<div class="mx-auto">
<img class="img-fluid img-thumbnail rounded" alt="User avatar" src="{{ avatar_helper.avatarURL(user) }}">
</div>
</div>
<div class="col-md-5">
<div class="form form-horizontal">
<div class="form-group row">
<label class="col-form-label col-md-4">{% trans %}user.firstName.label{% endtrans %}</label>
<div class="col-md-8">
<p class="form-control-plaintext">{{ user.firstName }}</p>
</div>
</div>
<div class="form-group row">
<label class="col-form-label col-md-4">{% trans %}user.lastName.label{% endtrans %}</label>
<div class="col-md-8">
<p class="form-control-plaintext">{{ user.lastName }}</p>
</div>
</div>
<div class="form-group row">
<label class="col-form-label col-md-4">{% trans %}user.email.label{% endtrans %}</label>
<div class="col-md-8">
{# <p class="form-control-plaintext">{{ user.email }}</p>#}
<a class="form-control-plaintext" href="mailto:{{ user.email }}">{{ user.email }}</a>
</div>
</div>
<div class="form-group row">
<label class="col-form-label col-md-4">{% trans %}user.department.label{% endtrans %}</label>
<div class="col-md-8">
<p class="form-control-plaintext">{{ user.department }}</p>
</div>
</div>
</div>
</div>
<div class="col-md-5">
<div class="form form-horizontal">
<div class="form-group row">
<label class="col-form-label col-md-4">{% trans %}user.username.label{% endtrans %}</label>
<div class="col-md-8">
<p class="form-control-plaintext">{{ user.name }}</p>
</div>
</div>
<div class="form-group row">
<label class="col-form-label col-md-4">{% trans %}group.label{% endtrans %}</label>
<div class="col-md-8">
<p class="form-control-plaintext">{{ user.group.fullPath }}</p>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
{% block additional_content %}
{% if is_granted('read', user) or is_granted('show_permissions', user) %}
<div class="card mt-3">
<div class="card-header"><i class="fas fa-gavel fa-fw"></i>
{% trans %}user.permissions{% endtrans %}</div>
<div class="card-body">
{{ form_start(form) }}
{{ form_row(form.permissions) }}
{{ form_end(form) }}
</div>
</div>
{% endif %}
<div class="mt-2">
{% if datatable is defined and datatable is not null %}
{% import "components/history_log_macros.html.twig" as log %}
{{ log.element_history_component(datatable) }}
{% endif %}
</div>
{% endblock %}

View file

@ -0,0 +1,68 @@
{% extends "main_card.html.twig" %}
{% block title %}{% trans %}user.settings.label{% endtrans %}{% endblock %}
{% block card_title %}<i class="fas fa-info-circle fa-fw" aria-hidden="true"></i>
{% trans %}user.settings.label{% endtrans %}{% endblock %}
{% block card_content %}
{{ form_start(settings_form) }}
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="data-tab" data-bs-toggle="tab" href="#data" role="tab"
aria-controls="home" aria-selected="true">{% trans %}user_settings.data.label{% endtrans %}</a>
</li>
<li class="nav-item">
<a class="nav-link" id="profile-tab" data-bs-toggle="tab" href="#configuration" role="tab"
aria-controls="profile" aria-selected="false">{% trans %}user_settings.configuration.label{% endtrans %}</a>
</li>
</ul>
<div class="tab-content mt-3 mb-3" id="myTabContent">
<div class="tab-pane fade show active" id="data" role="tabpanel" aria-labelledby="home-tab">
{{ form_row(settings_form.name) }}
{{ form_row(settings_form.first_name) }}
{{ form_row(settings_form.last_name) }}
{{ form_row(settings_form.department) }}
{{ form_row(settings_form.email) }}
{{ form_row(settings_form.avatar_file) }}
<div class="mb-3 row {% if user.masterPictureAttachment is null %}d-none{% endif %}">
<div class="offset-sm-3 col-sm-9">
{% if user.masterPictureAttachment %}
<img src="{{ attachment_thumbnail(user.masterPictureAttachment, 'thumbnail_md') }}" alt="avatar" class="rounded" style="height: 75px;">
{% endif %}
{{ form_widget(settings_form.remove_avatar) }}
</div>
</div>
</div>
<div class="tab-pane fade" id="configuration" role="tabpanel" aria-labelledby="profile-tab">
{{ form_row(settings_form.language) }}
{{ form_row(settings_form.timezone) }}
{{ form_row(settings_form.theme) }}
{{ form_row(settings_form.currency) }}
</div>
</div>
{{ form_row(settings_form.save) }}
{{ form_row(settings_form.reset) }}
{{ form_end(settings_form) }}
{% endblock %}
{% block content %}
{{ parent() }}
{% include "users/_2fa_settings.html.twig" %}
<div class="card mt-4">
<div class="card-header">
<i class="fa fa-key fa-fw" aria-hidden="true"></i>
{% trans %}user.settings.change_pw{% endtrans %}
</div>
<div class="card-body">
{{ form_start(pw_form) }}
{{ form_widget(pw_form) }}
{{ form_end(pw_form) }}
</div>
</div>
{% endblock %}