mirror of
https://github.com/Portabase/portabase.git
synced 2026-07-14 11:16:13 +02:00
Working on RBAC.
This commit is contained in:
+22
-8
@@ -1,24 +1,38 @@
|
||||
import os
|
||||
from contextlib import asynccontextmanager
|
||||
|
||||
from fastapi import FastAPI
|
||||
from sqlalchemy.orm import Session
|
||||
from starlette.middleware.trustedhost import TrustedHostMiddleware
|
||||
from starlette.staticfiles import StaticFiles
|
||||
from fastapi.responses import FileResponse
|
||||
from database import BaseModel, engine
|
||||
|
||||
from apps.users.roles import Role
|
||||
from apps.users.schemas import UserCreate, User, AdminUserCreate
|
||||
from database import BaseModel, engine, SessionLocal
|
||||
from middleware.db_connection import DatabaseSessionMiddleware
|
||||
|
||||
from routes.main import api_router
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
|
||||
from settings import config
|
||||
|
||||
|
||||
def init_default_users(db: Session):
|
||||
from apps.users import crud
|
||||
print("Initializing default users...")
|
||||
if not crud.get_user_by_email(db, "admin@portabase.com"):
|
||||
print("Creating admin user...")
|
||||
user = AdminUserCreate(email="admin@portabase.com", password="password", role=Role.ADMIN)
|
||||
crud.create_admin_user(db, user)
|
||||
|
||||
|
||||
@asynccontextmanager
|
||||
async def lifespan(app: FastAPI):
|
||||
print("Initialising database...")
|
||||
BaseModel.metadata.create_all(bind=engine)
|
||||
print("Database initialised!")
|
||||
# Initialize default users
|
||||
db = SessionLocal()
|
||||
try:
|
||||
init_default_users(db)
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
yield
|
||||
print("App shutdown!")
|
||||
|
||||
@@ -27,8 +41,8 @@ middlewares = []
|
||||
|
||||
app = FastAPI(lifespan=lifespan, middleware=middlewares)
|
||||
|
||||
|
||||
app.add_middleware(DatabaseSessionMiddleware)
|
||||
app.add_middleware(TrustedHostMiddleware, allowed_hosts=config.ALLOWED_HOSTS)
|
||||
|
||||
app.include_router(api_router)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user