Add profile management features
- Introduced profile update and password change functionalities in main.py. - Added new ProfileUpdate and PasswordChange schemas in user.py. - Updated base.html to include a profile link in the navigation and modified user chip for better accessibility. - Enhanced CSS for user chip links to improve UI interaction.
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>{% block title %}{{ title if title else "Wiki Newsletter Admin" }}{% endblock %} · Thomas-Krenn.AG</title>
|
||||
<link rel="stylesheet" href="/static/css/main.css?v=4">
|
||||
<link rel="stylesheet" href="/static/css/main.css?v=5">
|
||||
</head>
|
||||
<body class="{% block body_class %}{% endblock %}">
|
||||
<header class="topbar">
|
||||
@@ -22,11 +22,12 @@
|
||||
{% if user.role == "admin" %}
|
||||
<a href="/admin/users" class="{% if active_nav == 'users' %}active{% endif %}">Benutzer</a>
|
||||
{% endif %}
|
||||
<a href="/profil" class="{% if active_nav == 'profile' %}active{% endif %}">Profil</a>
|
||||
</nav>
|
||||
<div class="user-chip">
|
||||
<a href="/profil" class="user-chip user-chip-link">
|
||||
<span>{{ user.full_name }}</span>
|
||||
<span class="badge badge-{{ user.role }}">{{ user.role }}</span>
|
||||
</div>
|
||||
</a>
|
||||
<form method="post" action="/logout">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token }}">
|
||||
<button type="submit" class="btn-logout">Abmelden</button>
|
||||
|
||||
74
app/templates/profile.html
Normal file
74
app/templates/profile.html
Normal file
@@ -0,0 +1,74 @@
|
||||
{% extends "base.html" %}
|
||||
{% block title %}Mein Profil{% endblock %}
|
||||
{% block content %}
|
||||
|
||||
<div class="page-header">
|
||||
<h2>Mein Profil</h2>
|
||||
<p class="page-lead"><a href="/dashboard">← Zurück zum Dashboard</a></p>
|
||||
</div>
|
||||
|
||||
{% if success_message %}
|
||||
<p class="hint" style="color:var(--tk-success);font-weight:600;">{{ success_message }}</p>
|
||||
{% endif %}
|
||||
|
||||
<div class="layout-2col">
|
||||
<div class="main-col">
|
||||
<section class="card card-accent-orange">
|
||||
<div class="card-header">
|
||||
<h3>Profil bearbeiten</h3>
|
||||
</div>
|
||||
{% if error_message %}
|
||||
<p class="error">{{ error_message }}</p>
|
||||
{% endif %}
|
||||
<form method="post" action="/profil" class="form-grid">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token }}">
|
||||
<div class="form-row">
|
||||
<label>Vollständiger Name
|
||||
<input type="text" name="full_name" required minlength="2" value="{{ user.full_name }}">
|
||||
</label>
|
||||
<label>E-Mail
|
||||
<input type="email" name="email" required value="{{ user.email }}">
|
||||
</label>
|
||||
</div>
|
||||
<button type="submit" class="btn-primary">Profil speichern</button>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
<section class="card">
|
||||
<div class="card-header">
|
||||
<h3>Passwort ändern</h3>
|
||||
</div>
|
||||
{% if pw_error_message %}
|
||||
<p class="error">{{ pw_error_message }}</p>
|
||||
{% endif %}
|
||||
<form method="post" action="/profil/passwort" class="form-grid">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token }}">
|
||||
<label>Aktuelles Passwort
|
||||
<input type="password" name="current_password" required autocomplete="current-password">
|
||||
</label>
|
||||
<div class="form-row">
|
||||
<label>Neues Passwort
|
||||
<input type="password" name="new_password" required minlength="10" autocomplete="new-password" placeholder="Mindestens 10 Zeichen">
|
||||
</label>
|
||||
<label>Neues Passwort bestätigen
|
||||
<input type="password" name="confirm_password" required minlength="10" autocomplete="new-password">
|
||||
</label>
|
||||
</div>
|
||||
<button type="submit" class="btn-primary">Passwort ändern</button>
|
||||
</form>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<aside class="sidebar-col">
|
||||
<div class="sidebar-card">
|
||||
<h4>Konto</h4>
|
||||
<ul>
|
||||
<li><strong>Rolle:</strong> {{ user.role }}</li>
|
||||
<li><strong>Status:</strong> {{ "Aktiv" if user.is_active else "Inaktiv" }}</li>
|
||||
</ul>
|
||||
<p class="hint">Die Rolle kann nur ein Administrator ändern.</p>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user