Files
firefly-iii/resources/views/admin/users/index.twig
James Cole 173f593a7e Fixes #7175
2023-03-09 06:33:23 +01:00

184 lines
10 KiB
Twig

{% extends './layout/default' %}
{% block breadcrumbs %}
{{ Breadcrumbs.render }}
{% endblock %}
{% block content %}
{% if allowInvites %}
<div class="row">
<div class="col-lg-6">
<form action="{{ route('admin.users.invite') }}" method="post">
<input type="hidden" name="_token" value="{{ csrf_token() }}"/>
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">{{ 'invite_new_user_title'|_ }}</h3>
</div>
<div class="box-body">
<p>
{{ 'invite_new_user_text'|_ }}
</p>
{{ ExpandedForm.text('invited_user',null, {'type': 'email', 'label' : 'invited_user_mail'|_}) }}
</div>
<div class="box-footer">
<button type="submit" class="btn pull-right btn-success">
{{ ('invite_user')|_ }}
</button>
</div>
</div>
</form>
</div>
</div>
{% endif %}
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">{{ 'all_users'|_ }}</h3>
</div>
<div class="box-body no-padding">
<table class="table table-responsive table-condensed sortable" aria-label="Table">
<thead>
<tr>
<th data-defaultsign="_19" class="hidden-xs" colspan="2">&nbsp;</th>
<th data-defaultsign="az">{{ trans('list.email') }}</th>
<th data-defaultsign="month" class="hidden-xs">{{ trans('list.registered_at') }}</th>
<th data-defaultsign="month" class="hidden-xs">{{ trans('list.updated_at') }}</th>
<th class="hidden-xs">{{ trans('list.is_admin') }}</th>
<th class="hidden-xs">{{ trans('list.has_two_factor') }}</th>
<th>{{ trans('list.is_blocked') }}</th>
<th data-defaultsign="az" class="hidden-xs">{{ trans('list.blocked_code') }}</th>
</tr>
</thead>
<tbody>
{% for user in users %}
<tr>
<td class="hidden-xs" data-value="{{ user.id }}">
<div class="btn-group btn-group-xs">
<a class="btn btn-default" href="{{ route('admin.users.edit',user.id) }}"><span
class="fa fa-pencil"></span></a>
<a class="btn btn-danger" href="{{ route('admin.users.delete',user.id) }}"><span
class="fa fa-trash"></span></a>
</div>
</td>
<td class="hidden-xs" data-value="{{ user.id }}">#{{ user.id }}</td>
<td data-value="{{ user.email }}">
<a href="{{ route('admin.users.show',user.id) }}">{{ user.email }}</a></td>
<td class="hidden-xs" data-value="{{ user.created_at.format('Y-m-d H-i-s') }}">
{{ user.created_at.isoFormat(monthAndDayFormat) }}
{{ user.created_at.format('H:i') }}
</td>
<td class="hidden-xs" data-value="{{ user.updated_at.format('Y-m-d H-i-s') }}">
{{ user.updated_at.isoFormat(monthAndDayFormat) }}
{{ user.updated_at.format('H:i') }}
</td>
<td class="hidden-xs" data-value="{% if user.isAdmin %}1{% else %}0{% endif %}">
{% if user.isAdmin %}
<small class="text-success"><span class="fa fa-fw fa-check"></span></small>
{% else %}
<small class="text-danger"><span class="fa fa-fw fa-times"></span></small>
{% endif %}
</td>
<td class="hidden-xs" data-value="{% if user.has2FA %}1{% else %}0{% endif %}">
{% if user.has2FA %}
<small class="text-success"><span class="fa fa-fw fa-check"></span></small>
{% else %}
<small class="text-danger"><span class="fa fa-fw fa-times"></span></small>
{% endif %}
</td>
<td data-value="{% if user.blocked %}1{% else %}0{% endif %}">
{% if user.blocked == 1 %}
<small class="text-danger"><span class="fa fa-fw fa-check"
title="{{ 'yes'|_ }}"></span></small>
{% else %}
<small class="text-success"><span class="fa fa-fw fa-times"
title="{{ 'no'|_ }}"></span></small>
{% endif %}
</td>
<td class="hidden-xs">
<small>
{% if user.blocked == 1 %}
{% if user.blocked_code == "" %}
<em>~</em>
{% else %}
{{ user.blocked_code }}
{% endif %}
{% endif %}
</small>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
{% if invitedUsers.count > 0 %}
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<div class="box">
<div class="box-header with-border">
<h3 class="box-title">{{ 'all_invited_users'|_ }}</h3>
</div>
<div class="box-body no-padding">
<table class="table table-responsive table-condensed sortable">
<thead>
<tr>
<th data-defaultsign="_19" class="hidden-xs" colspan="1">&nbsp;</th>
<th data-defaultsign="az">{{ trans('list.email') }}</th>
<th data-defaultsign="month" class="hidden-xs">{{ trans('list.invited_at') }}</th>
<th data-defaultsign="month" class="hidden-xs">{{ trans('list.expires') }}</th>
<th class="hidden-xs">{{ trans('list.invited_by') }}</th>
<th>{{ trans('list.invite_link') }}</th>
</tr>
</thead>
<tbody>
{% for invitee in invitedUsers %}
<tr>
<td class="hidden-xs" data-value="{{ user.id }}">
<div class="btn-group btn-group-xs">
<a class="btn btn-danger delete-invite" href="{{ route('admin.users.delete-invite', invitee.id) }}"><span
class="fa fa-trash"></span></a>
</div>
</td>
<td>
{{ invitee.email }}
</td>
<td class="hidden-xs">
{{ invitee.created_at.isoFormat(monthAndDayFormat) }}
{{ invitee.created_at.format('H:i') }}
</td>
<td>
{{ invitee.expires.isoFormat(monthAndDayFormat) }}
{{ invitee.expires.format('H:i') }}
</td>
<td>
{{ invitee.user.email }}
</td>
<td>
{% if invitee.redeemed %}
<em><s>{{ 'code_already_used'|_ }}</s></em>
{% else %}
<input type="text" class="form-control" readonly value="{{ route('invite', [invitee.invite_code]) }}">
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
{% endif %}
{% endblock %}
{% block styles %}
<link rel="stylesheet" href="v1/css/bootstrap-sortable.css?v={{ FF_VERSION }}" type="text/css" media="all"
nonce="{{ JS_NONCE }}">
{% endblock %}
{% block scripts %}
<script type="text/javascript" src="v1/js/lib/bootstrap-sortable.js?v={{ FF_VERSION }}" nonce="{{ JS_NONCE }}"></script>
<script type="text/javascript" src="v1/js/ff/admin/users.js?v={{ FF_VERSION }}" nonce="{{ JS_NONCE }}"></script>
{% endblock %}