QueryBuilder/app/templates/admin/dashboard.html
DGSoft 86f9117d55 🔒 Disable self-registration and compact admin interface
Security improvements:
- Removed registration link from login page
- Disabled /auth/register route - redirects with error message
- Removed demo credentials from login page
- Added info message: 'New users are created by administrators'

UI improvements:
- Compacted all admin interface buttons (btn-sm)
- Reduced heading sizes (H2 → H4) for less visual dominance
- Shortened badge texts ('Administrator' → 'Admin', 'Benutzer' → 'User')
- Optimized spacing and reduced margins/paddings
- Cleaner, more professional admin interface

Access control:
- Only administrators can create new users via admin panel
- Self-registration completely disabled for security
- Maintains full admin functionality with improved UX
2025-10-14 21:42:32 +02:00

165 lines
8.3 KiB
HTML

{% extends "base.html" %}
{% block title %}Admin Dashboard{% endblock %}
{% block content %}
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="d-flex justify-content-between align-items-center mb-4">
<h4><i class="fas fa-users-cog"></i> Admin Dashboard</h4>
<a href="{{ url_for('main.dashboard') }}" class="btn btn-outline-secondary btn-sm">
<i class="fas fa-arrow-left"></i> Zurück
</a>
</div>
<!-- Statistiken -->
<div class="row mb-4">
<div class="col-md-3">
<div class="card bg-primary text-white">
<div class="card-body">
<div class="d-flex justify-content-between align-items-center">
<div>
<h4>{{ users|length }}</h4>
<small>Benutzer gesamt</small>
</div>
<i class="fas fa-users fa-2x opacity-75"></i>
</div>
</div>
</div>
</div>
<div class="col-md-3">
<div class="card bg-success text-white">
<div class="card-body">
<div class="d-flex justify-content-between align-items-center">
<div>
<h4>{{ users|selectattr('is_admin')|list|length }}</h4>
<small>Administratoren</small>
</div>
<i class="fas fa-user-shield fa-2x opacity-75"></i>
</div>
</div>
</div>
</div>
<div class="col-md-3">
<div class="card bg-info text-white">
<div class="card-body">
<div class="d-flex justify-content-between align-items-center">
<div>
<h4>{{ users|rejectattr('is_admin')|list|length }}</h4>
<small>Standard-Benutzer</small>
</div>
<i class="fas fa-user fa-2x opacity-75"></i>
</div>
</div>
</div>
</div>
<div class="col-md-3">
<div class="card bg-warning text-white">
<div class="card-body">
<div class="d-flex justify-content-between align-items-center">
<div>
<h4>{{ (users|selectattr('created_at')|map(attribute='created_at')|list|length) }}</h4>
<small>Aktive Benutzer</small>
</div>
<i class="fas fa-chart-line fa-2x opacity-75"></i>
</div>
</div>
</div>
</div>
</div>
<!-- Schnellzugriff -->
<div class="row mb-4">
<div class="col-12">
<div class="card">
<div class="card-header">
<h6><i class="fas fa-tachometer-alt"></i> Schnellzugriff</h6>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-6 mb-2">
<a href="{{ url_for('admin.users') }}" class="btn btn-outline-primary btn-sm w-100">
<i class="fas fa-users me-1"></i> Benutzerverwaltung
</a>
</div>
<div class="col-md-6 mb-2">
<a href="{{ url_for('admin.create_user') }}" class="btn btn-outline-success btn-sm w-100">
<i class="fas fa-user-plus me-1"></i> Neuen Benutzer erstellen
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Letzte Benutzer -->
<div class="row">
<div class="col-12">
<div class="card">
<div class="card-header">
<h6><i class="fas fa-clock"></i> Letzte Benutzer</h6>
</div>
<div class="card-body">
{% if users %}
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>Benutzername</th>
<th>E-Mail</th>
<th>Rolle</th>
<th>Erstellt am</th>
<th>Aktionen</th>
</tr>
</thead>
<tbody>
{% for user in users[:5] %}
<tr>
<td>
<strong>{{ user.username }}</strong>
{% if user.id == current_user.id %}
<span class="badge bg-primary ms-1">Sie</span>
{% endif %}
</td>
<td>{{ user.email }}</td>
<td>
{% if user.is_admin %}
<span class="badge bg-danger"><i class="fas fa-user-shield"></i> Administrator</span>
{% else %}
<span class="badge bg-secondary"><i class="fas fa-user"></i> Benutzer</span>
{% endif %}
</td>
<td>{{ user.created_at.strftime('%d.%m.%Y %H:%M') }}</td>
<td>
<a href="{{ url_for('admin.edit_user', user_id=user.id) }}"
class="btn btn-sm btn-outline-primary" title="Bearbeiten">
<i class="fas fa-edit"></i>
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
<div class="text-center mt-3">
<a href="{{ url_for('admin.users') }}" class="btn btn-primary btn-sm">
Alle Benutzer <i class="fas fa-arrow-right"></i>
</a>
</div>
{% else %}
<div class="text-center text-muted py-3">
<i class="fas fa-users fa-2x mb-2"></i>
<h6>Keine Benutzer gefunden</h6>
<p class="small">Erstellen Sie den ersten Benutzer über den Button oben.</p>
</div>
{% endif %}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock %}