feat: add admin user management

This commit is contained in:
2026-04-13 10:10:07 +02:00
parent 9a87ef9562
commit 3c99c3683e
7 changed files with 265 additions and 27 deletions

33
app/services/bootstrap.py Normal file
View File

@@ -0,0 +1,33 @@
from __future__ import annotations
import os
from sqlalchemy import inspect, text
from ..extensions import db
from ..models import User
def ensure_schema_and_admins() -> None:
inspector = inspect(db.engine)
column_names = {column["name"] for column in inspector.get_columns("user")}
if "is_admin" not in column_names:
db.session.execute(text("ALTER TABLE user ADD COLUMN is_admin BOOLEAN NOT NULL DEFAULT 0"))
db.session.commit()
admin_exists = User.query.filter_by(is_admin=True).first()
if admin_exists:
return
preferred_admin_email = os.getenv("DEFAULT_ADMIN_EMAIL", "mail@hnz.io").lower().strip()
preferred_user = User.query.filter(User.email.ilike(preferred_admin_email)).first()
if preferred_user:
preferred_user.is_admin = True
db.session.commit()
return
first_user = User.query.order_by(User.id.asc()).first()
if first_user:
first_user.is_admin = True
db.session.commit()