Initial Release
This commit is contained in:
61
backend/app/main.py
Normal file
61
backend/app/main.py
Normal file
@@ -0,0 +1,61 @@
|
||||
import os
|
||||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from sqlalchemy.orm import Session
|
||||
from .db import Base, engine, SessionLocal
|
||||
from .models import User, Entry, Category, Role
|
||||
from .security import hash_password
|
||||
from .routes.auth import router as auth_router
|
||||
from .routes.admin import router as admin_router
|
||||
from .routes.games import router as games_router
|
||||
|
||||
app = FastAPI(title="Cluedo Sheet")
|
||||
|
||||
# Intern: Frontend läuft auf :8081
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=["http://localhost:8081", "http://127.0.0.1:8081"],
|
||||
allow_credentials=True,
|
||||
allow_methods=["*"],
|
||||
allow_headers=["*"],
|
||||
)
|
||||
|
||||
app.include_router(auth_router)
|
||||
app.include_router(admin_router)
|
||||
app.include_router(games_router)
|
||||
|
||||
def seed_entries(db: Session):
|
||||
# Du kannst hier deine HP-Edition Einträge reinschreiben.
|
||||
# (Für rein private Nutzung ok – öffentlich würde ich’s generisch machen.)
|
||||
if db.query(Entry).count() > 0:
|
||||
return
|
||||
suspects = ["Draco Malfoy","Crabbe & Goyle","Lucius Malfoy","Dolores Umbridge","Peter Pettigrew","Bellatrix Lestrange"]
|
||||
items = ["Schlaftrunk","Verschwindekabinett","Portschlüssel","Impedimenta","Petrificus Totalus","Alraune"]
|
||||
locations = ["Große Halle","Krankenflügel","Raum der Wünsche","Klassenzimmer für Zaubertränke","Pokalszimmer","Klassenzimmer für Wahrsagen","Eulerei","Bibliothek","Verteidigung gegen die dunklen Künste"]
|
||||
|
||||
for s in suspects:
|
||||
db.add(Entry(category=Category.suspect.value, label=s))
|
||||
for i in items:
|
||||
db.add(Entry(category=Category.item.value, label=i))
|
||||
for l in locations:
|
||||
db.add(Entry(category=Category.location.value, label=l))
|
||||
db.commit()
|
||||
|
||||
def ensure_admin(db: Session):
|
||||
admin_email = os.environ.get("ADMIN_EMAIL", "admin@local").lower().strip()
|
||||
admin_pw = os.environ.get("ADMIN_PASSWORD", "ChangeMeNow123!")
|
||||
u = db.query(User).filter(User.email == admin_email).first()
|
||||
if not u:
|
||||
db.add(User(email=admin_email, password_hash=hash_password(admin_pw), role=Role.admin.value))
|
||||
db.commit()
|
||||
|
||||
@app.on_event("startup")
|
||||
def on_startup():
|
||||
Base.metadata.create_all(bind=engine)
|
||||
db = SessionLocal()
|
||||
try:
|
||||
ensure_admin(db)
|
||||
seed_entries(db)
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
Reference in New Issue
Block a user