Files
sso/backend/main.py
2026-01-25 14:55:54 +01:00

57 lines
1.6 KiB
Python

from fastapi import FastAPI, Depends
from fastapi.staticfiles import StaticFiles
from fastapi.middleware.cors import CORSMiddleware
from .database import engine, Base, SessionLocal
from .routers import auth, users, apps, sso
from . import models, auth_utils
from sqlalchemy.orm import Session
# Create tables
Base.metadata.create_all(bind=engine)
app = FastAPI(title="ASF SSO Service")
# CORS
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Routers
app.include_router(auth.router)
app.include_router(users.router)
app.include_router(apps.router)
app.include_router(sso.router)
import os
# Mount static files (Frontend)
static_dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), "frontend")
app.mount("/", StaticFiles(directory=static_dir, html=True), name="static")
# Create initial admin user if not exists
def create_initial_admin():
db = SessionLocal()
try:
admin = db.query(models.User).filter(models.User.username == "admin").first()
if not admin:
print("Creating initial admin user...")
hashed_pwd = auth_utils.get_password_hash("admin") # Default password, should be changed
admin_user = models.User(
username="admin",
email="admin@nabd-co.com",
hashed_password=hashed_pwd,
is_admin=True,
is_active=True
)
db.add(admin_user)
db.commit()
print("Admin user created.")
finally:
db.close()
create_initial_admin()