edited230126
This commit is contained in:
31
app/cli.py
31
app/cli.py
@@ -6,10 +6,16 @@ from .models import User
|
||||
|
||||
|
||||
@click.command("init-db")
|
||||
@click.option("--admin-user", required=True, help="Username for the initial admin")
|
||||
@click.option(
|
||||
"--admin-email",
|
||||
required=False,
|
||||
default="beheer@alphen.cloud",
|
||||
show_default=True,
|
||||
help="Email for the initial admin",
|
||||
)
|
||||
@click.option("--admin-pass", required=True, help="Password for the initial admin")
|
||||
@with_appcontext
|
||||
def init_db_command(admin_user: str, admin_pass: str):
|
||||
def init_db_command(admin_email: str, admin_pass: str):
|
||||
"""Create tables and ensure an admin account exists."""
|
||||
db.create_all()
|
||||
|
||||
@@ -20,21 +26,34 @@ def init_db_command(admin_user: str, admin_pass: str):
|
||||
if "email" not in cols:
|
||||
db.session.execute(db.text("ALTER TABLE user ADD COLUMN email VARCHAR(255)"))
|
||||
db.session.commit()
|
||||
|
||||
display_cols = [r[1] for r in db.session.execute(db.text("PRAGMA table_info(display)")).fetchall()]
|
||||
if "description" not in display_cols:
|
||||
db.session.execute(db.text("ALTER TABLE display ADD COLUMN description VARCHAR(200)"))
|
||||
db.session.commit()
|
||||
except Exception:
|
||||
# Best-effort; if it fails we continue so fresh DBs still work.
|
||||
db.session.rollback()
|
||||
|
||||
existing = User.query.filter_by(username=admin_user).first()
|
||||
admin_email = (admin_email or "").strip().lower()
|
||||
if not admin_email:
|
||||
raise click.UsageError("--admin-email is required")
|
||||
|
||||
existing = User.query.filter_by(email=admin_email).first()
|
||||
if existing:
|
||||
if not existing.is_admin:
|
||||
existing.is_admin = True
|
||||
existing.email = admin_email
|
||||
existing.username = admin_email
|
||||
existing.set_password(admin_pass)
|
||||
db.session.commit()
|
||||
click.echo(f"Updated admin user '{admin_user}'.")
|
||||
click.echo(f"Updated admin user '{admin_email}'.")
|
||||
return
|
||||
|
||||
u = User(username=admin_user, is_admin=True)
|
||||
u = User(is_admin=True)
|
||||
u.email = admin_email
|
||||
u.username = admin_email
|
||||
u.set_password(admin_pass)
|
||||
db.session.add(u)
|
||||
db.session.commit()
|
||||
click.echo(f"Created admin user '{admin_user}'.")
|
||||
click.echo(f"Created admin user '{admin_email}'.")
|
||||
|
||||
Reference in New Issue
Block a user