added bootstrap for nicer layout
parent
5facd44325
commit
7684268002
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -2,26 +2,30 @@
|
||||||
{% block header %}
|
{% block header %}
|
||||||
{% block title %}<h1>Admin Übersicht</h1>{% endblock %}
|
{% block title %}<h1>Admin Übersicht</h1>{% endblock %}
|
||||||
|
|
||||||
<script src="../static/jquery-3.6.0.js"></script>
|
<script src="../static/js/jquery-3.6.0.js"></script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<table border="1">
|
<table class="table">
|
||||||
<td>Username</td>
|
<thead>
|
||||||
<td>E-Mail</td>
|
<th scope="col">Username</th>
|
||||||
<td>Aktiv</td>
|
<th scope="col">E-Mail</th>
|
||||||
<td>Aktionen</td>
|
<th scope="col">Aktiv</th>
|
||||||
{% for data in admin_data %}
|
<th scope="col">Aktionen</th>
|
||||||
<tr>
|
</thead>
|
||||||
{% for field in ['username', 'email', 'active'] %}
|
<tbody>
|
||||||
<td>{{ data[field] if data[field] }}</td>
|
{% for data in admin_data %}
|
||||||
|
<tr>
|
||||||
|
{% for field in ['username', 'email', 'active'] %}
|
||||||
|
<th scope="row">{{ data[field] if data[field] }}</th>
|
||||||
|
{% endfor %}
|
||||||
|
<td>
|
||||||
|
<a href="{{ url_for('admin_toggle_active', username=data['username']) }}"><img src="static/stop.png" title="Aktivieren/Deaktivieren" alt="Toggle active"></a>
|
||||||
|
<a href="{{ url_for('delete_admins', username=data['username']) }}"><img src="static/delete.png" title="Löschen" alt="Delete"></a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<td>
|
</tbody>
|
||||||
<a href="{{ url_for('admin_toggle_active', username=data['username']) }}"><img src="static/stop.png" title="Aktivieren/Deaktivieren" alt="Toggle active"></a>
|
|
||||||
<a href="{{ url_for('delete_admins', username=data['username']) }}"><img src="static/delete.png" title="Löschen" alt="Delete"></a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</table>
|
</table>
|
||||||
<div>
|
<div>
|
||||||
<p>
|
<p>
|
||||||
|
|
|
@ -1,30 +1,92 @@
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
<title>Space Token Administration - {% block title %}{% endblock %}</title>
|
<html lang="de">
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
|
||||||
<nav>
|
<link rel="stylesheet" href="{{ url_for('static', filename='css/bootstrap.min.css') }}">
|
||||||
<ul>
|
|
||||||
<li><a href="{{ url_for('door_lock') }}">Home</a>
|
<title>Space Token Administration - {% block title %}{% endblock %}</title>
|
||||||
<li><a href="{{ url_for('register') }}">Token Registrierung</a>
|
</head>
|
||||||
<li><a href="{{ url_for('list_tokens') }}">Token Übersicht</a>
|
|
||||||
<li><a href="{{ url_for('open_door') }}">Tür öffnen</a>
|
<body>
|
||||||
<li><a href="{{ url_for('close_door') }}">Tür schließen</a>
|
<nav class="navbar navbar-expand-lg navbar-light bg-light">
|
||||||
{% if current_user.has_role('super_admin') %}
|
<div class="container-fluid">
|
||||||
<li><a href="{{ url_for('manage_admins') }}">Admins verwalten</a>
|
<a class="navbar-brand" href="{{ url_for('door_lock') }}">iR</a>
|
||||||
{% endif %}
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent"
|
||||||
{% if current_user.is_authenticated %}
|
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||||
<li><a href="{{ url_for('security.change_password') }}">Passwort ändern</a>
|
<span class="navbar-toggler-icon"></span>
|
||||||
<li><a href="{{ url_for('security.logout') }}">Benutzer <span>{{ current_user.username }}</span> ausloggen</a>
|
</button>
|
||||||
{% else %}
|
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||||
<li><a href="{{ url_for('security.login') }}">Einloggen</a>
|
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
|
||||||
{% endif %}
|
{% if current_user.is_authenticated %}
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
<section class="content">
|
<li class="nav-item dropdown">
|
||||||
<header>
|
<a class="nav-link dropdown-toggle" id="navbarDropdown" role="button" data-bs-toggle="dropdown"
|
||||||
{% block header %}{% endblock %}
|
aria-expanded="false">
|
||||||
</header>
|
Tür
|
||||||
{% for message in get_flashed_messages() %}
|
</a>
|
||||||
<div class="flash">{{ message }}</div>
|
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||||
{% endfor %}
|
<a class="dropdown-item" href="{{ url_for('open_door') }}">Tür öffnen</a>
|
||||||
{% block content %}{% endblock %}
|
<a class="dropdown-item" href="{{ url_for('close_door') }}">Tür schließen</a>
|
||||||
</section>
|
</div>
|
||||||
|
</li>
|
||||||
|
{% if current_user.has_role('admin') %}
|
||||||
|
<li class="nav-item dropdown">
|
||||||
|
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button"
|
||||||
|
data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
|
Tokens
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||||
|
<a class="dropdown-item" href="{{ url_for('register') }}">Token Registrierung</a>
|
||||||
|
<a class="dropdown-item" href="{{ url_for('list_tokens') }}">Token Übersicht</a>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if current_user.has_role('super_admin') %}
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="{{ url_for('manage_admins') }}">Admins verwalten</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<li class="nav-item dropdown">
|
||||||
|
<a class="nav-link dropdown-toggle" id="navbarDropdown" role="button" data-bs-toggle="dropdown"
|
||||||
|
aria-expanded="false">
|
||||||
|
Benutzer <span>{{ current_user.username }}</span>
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
||||||
|
<a class="dropdown-item" href="{{ url_for('security.change_password') }}">Passwort
|
||||||
|
ändern</a>
|
||||||
|
<a class="dropdown-item" href="{{ url_for('security.logout') }}">Ausloggen</a>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
{% else %}
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="{{ url_for('security.login') }}">Einloggen</a>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<section class="content">
|
||||||
|
<div class="container">
|
||||||
|
<header>
|
||||||
|
{% block header %}{% endblock %}
|
||||||
|
</header>
|
||||||
|
{% for message in get_flashed_messages() %}
|
||||||
|
<div class="alert alert-primary" role="alert">
|
||||||
|
{{ message }}
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
{% block content %}{% endblock %}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<script src="../static/js/bootstrap.bundle.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -1,7 +1,7 @@
|
||||||
{% extends 'base.html' %}
|
{% extends 'base.html' %}
|
||||||
{% block header %}
|
{% block header %}
|
||||||
{% block title %}<h1>Token löschen</h1>{% endblock %}
|
{% block title %}<h1>Token löschen</h1>{% endblock %}
|
||||||
<script src="../static/jquery-3.6.0.js"></script>
|
<script src="../static/js/jquery-3.6.0.js"></script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{% extends 'base.html' %}
|
{% extends 'base.html' %}
|
||||||
{% block header %}
|
{% block header %}
|
||||||
{% block title %}<h1>Admin Benutzer löschen</h1>{% endblock %}
|
{% block title %}<h1>Admin Benutzer löschen</h1>{% endblock %}
|
||||||
<script src="../static/jquery-3.6.0.js"></script>
|
<script src="../static/js/jquery-3.6.0.js"></script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{% extends 'base.html' %}
|
{% extends 'base.html' %}
|
||||||
{% block header %}
|
{% block header %}
|
||||||
{% block title %}<h1>Token editieren</h1>{% endblock %}
|
{% block title %}<h1>Token editieren</h1>{% endblock %}
|
||||||
<script src="../static/jquery-3.6.0.js"></script>
|
<script src="../static/js/jquery-3.6.0.js"></script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{% extends 'base.html' %}
|
{% extends 'base.html' %}
|
||||||
{% block header %}
|
{% block header %}
|
||||||
{% block title %}<h1>Token Registrierung</h1>{% endblock %}
|
{% block title %}<h1>Token Registrierung</h1>{% endblock %}
|
||||||
<script src="../static/jquery-3.6.0.js"></script>
|
<script src="../static/js/jquery-3.6.0.js"></script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
<!-- empty since messages are already displayed in the base.html template -->
|
|
@ -0,0 +1,31 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
{% block doc -%}
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html{% block html_attribs %}{% endblock html_attribs %}>
|
||||||
|
{%- block html %}
|
||||||
|
<head>
|
||||||
|
{%- block head %}
|
||||||
|
<title>{% block title %}{{ title|default }}{% endblock title %}</title>
|
||||||
|
|
||||||
|
{%- block metas %}
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
{%- endblock metas %}
|
||||||
|
|
||||||
|
{%- block styles %}
|
||||||
|
{%- endblock styles %}
|
||||||
|
{%- endblock head %}
|
||||||
|
</head>
|
||||||
|
<body{% block body_attribs %}{% endblock body_attribs %}>
|
||||||
|
{% block body -%}
|
||||||
|
{% block navbar %}
|
||||||
|
{%- endblock navbar %}
|
||||||
|
{% block content -%}
|
||||||
|
{%- endblock content %}
|
||||||
|
|
||||||
|
{% block scripts %}
|
||||||
|
{%- endblock scripts %}
|
||||||
|
{%- endblock body %}
|
||||||
|
</body>
|
||||||
|
{%- endblock html %}
|
||||||
|
</html>
|
||||||
|
{% endblock doc -%}
|
|
@ -2,17 +2,20 @@
|
||||||
{% block header %}
|
{% block header %}
|
||||||
{% block title %}<h1>Token Übersicht</h1>{% endblock %}
|
{% block title %}<h1>Token Übersicht</h1>{% endblock %}
|
||||||
|
|
||||||
<script src="../static/jquery-3.6.0.js"></script>
|
<script src="../static/js/jquery-3.6.0.js"></script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<table border="1">
|
<table class="table">
|
||||||
|
<thead>
|
||||||
<td>Token</td>
|
<td>Token</td>
|
||||||
<td>NutzerIn</td>
|
<td>NutzerIn</td>
|
||||||
<td>Organisation</td>
|
<td>Organisation</td>
|
||||||
<td>E-Mail</td>
|
<td>E-Mail</td>
|
||||||
<td>Gültig bis</td>
|
<td>Gültig bis</td>
|
||||||
<td>Aktionen</td>
|
<td>Aktionen</td>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
{% for t, data in assigned_tokens.items() %}
|
{% for t, data in assigned_tokens.items() %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ t }}</td>
|
<td>{{ t }}</td>
|
||||||
|
@ -38,6 +41,7 @@
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<form action="{{ url_for('backup_tokens') }}" method="get">
|
<form action="{{ url_for('backup_tokens') }}" method="get">
|
||||||
<input type="submit" value="Token Daten sichern">
|
<input type="submit" value="Token Daten sichern">
|
||||||
|
|
|
@ -201,6 +201,7 @@ def create_application(config):
|
||||||
class ExtendedLoginForm(LoginForm):
|
class ExtendedLoginForm(LoginForm):
|
||||||
email = StringField('Benutzername oder E-Mail', [Required()])
|
email = StringField('Benutzername oder E-Mail', [Required()])
|
||||||
password = PasswordField('Passwort', [Required()])
|
password = PasswordField('Passwort', [Required()])
|
||||||
|
remember = BooleanField('Login merken?')
|
||||||
|
|
||||||
def validate(self):
|
def validate(self):
|
||||||
# search for user in the current database
|
# search for user in the current database
|
||||||
|
|
Loading…
Reference in New Issue