mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2025-12-23 19:39:31 +00:00
Renamed users templates folder to recommended snake_case
This commit is contained in:
parent
6f28029fb8
commit
29e46d5d05
6 changed files with 4 additions and 4 deletions
174
templates/users/_2fa_settings.html.twig
Normal file
174
templates/users/_2fa_settings.html.twig
Normal 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>
|
||||
40
templates/users/backup_codes.html.twig
Normal file
40
templates/users/backup_codes.html.twig
Normal 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 %}
|
||||
82
templates/users/user_info.html.twig
Normal file
82
templates/users/user_info.html.twig
Normal 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 %}
|
||||
68
templates/users/user_settings.html.twig
Normal file
68
templates/users/user_settings.html.twig
Normal 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 %}
|
||||
Loading…
Add table
Add a link
Reference in a new issue