From e7241819153ab164b7eb5a10bcac3a0216fd7a75 Mon Sep 17 00:00:00 2001 From: Till Tomczak Date: Fri, 2 May 2025 18:19:58 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat:=20improve=20user=20management?= =?UTF-8?q?=20and=20update=20styles=20for=20better=20UX?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- models.py | 4 ++++ static/css/base-styles.css | 27 ++++++++++++++------------- utils/user_manager.py | 2 +- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/models.py b/models.py index 597b234..e275d1b 100644 --- a/models.py +++ b/models.py @@ -81,6 +81,10 @@ class User(db.Model, UserMixin): def is_admin(self): return self.role == 'admin' + @is_admin.setter + def is_admin(self, value): + self.role = 'admin' if value else 'user' + class Category(db.Model): """Wissenschaftliche Kategorien für die Gliederung der öffentlichen Mindmap""" id = db.Column(db.Integer, primary_key=True) diff --git a/static/css/base-styles.css b/static/css/base-styles.css index 4bb2600..4a8b140 100644 --- a/static/css/base-styles.css +++ b/static/css/base-styles.css @@ -457,22 +457,23 @@ body:not(.dark) a:hover { /* Light Mode Buttons */ body:not(.dark) .btn, body:not(.dark) button:not(.toggle) { - background-color: var(--light-primary); + background: linear-gradient(135deg, #6d28d9, #5b21b6); color: white; border: none; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + box-shadow: 0 2px 4px rgba(91, 33, 182, 0.25); border-radius: 8px; padding: 0.625rem 1.25rem; transition: all 0.2s ease; font-weight: 600; letter-spacing: 0.02em; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); } body:not(.dark) .btn:hover, body:not(.dark) button:not(.toggle):hover { - background-color: var(--light-primary-hover); + background: linear-gradient(135deg, #7c3aed, #6d28d9); transform: translateY(-1px); - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); + box-shadow: 0 4px 12px rgba(109, 40, 217, 0.3); } /* Dark/Light Mode Switch Button */ @@ -583,36 +584,36 @@ body:not(.dark) .card:hover { /* Light Mode Buttons mit verbesserter Lesbarkeit */ body:not(.dark) .btn-primary { - background: linear-gradient(135deg, #7c3aed, #6d28d9); + background: linear-gradient(135deg, #6d28d9, #5b21b6); color: white; border: none; transition: all 0.2s ease; - text-shadow: 0 1px 1px rgba(0, 0, 0, 0.3); + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4); font-weight: 600; letter-spacing: 0.02em; - box-shadow: 0 2px 4px rgba(109, 40, 217, 0.2); + box-shadow: 0 2px 4px rgba(91, 33, 182, 0.3); border-radius: 8px; } body:not(.dark) .btn-primary:hover { - background: linear-gradient(135deg, #8b5cf6, #7c3aed); - box-shadow: 0 4px 12px rgba(124, 58, 237, 0.3), 0 2px 4px rgba(0, 0, 0, 0.1); + background: linear-gradient(135deg, #7c3aed, #6d28d9); + box-shadow: 0 4px 12px rgba(109, 40, 217, 0.4), 0 2px 4px rgba(0, 0, 0, 0.1); transform: translateY(-1px); } body:not(.dark) .btn-secondary { - background: white; + background: linear-gradient(135deg, #ffffff, #f9fafb); color: #1f2937; border: 2px solid #e5e7eb; font-weight: 600; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08); border-radius: 8px; } body:not(.dark) .btn-secondary:hover { - background: #f9fafb; + background: linear-gradient(135deg, #f9fafb, #f3f4f6); border-color: #d1d5db; - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.12); transform: translateY(-1px); } diff --git a/utils/user_manager.py b/utils/user_manager.py index 081fff0..77234f3 100644 --- a/utils/user_manager.py +++ b/utils/user_manager.py @@ -55,7 +55,7 @@ def create_user(username, email, password, is_admin=False): user = User( username=username, email=email, - is_admin=is_admin, + role='admin' if is_admin else 'user', created_at=datetime.utcnow() ) user.set_password(password)