61 lines
2.3 KiB
Python
Executable File
61 lines
2.3 KiB
Python
Executable File
import asyncio
|
|
import os
|
|
from sqlalchemy.ext.asyncio import create_async_engine
|
|
from sqlalchemy import text
|
|
from dotenv import load_dotenv
|
|
|
|
load_dotenv()
|
|
|
|
raw_url = os.getenv("DATABASE_URL")
|
|
if not raw_url:
|
|
raw_url = "postgresql://admin:PASSWORD_111@postgres-db:5432/service_finder"
|
|
DATABASE_URL = raw_url.replace("postgresql://", "postgresql+asyncpg://").replace("/service_finder_db", "/service_finder")
|
|
|
|
async def upgrade_permissions():
|
|
print(f"🔌 Kapcsolódás...")
|
|
engine = create_async_engine(DATABASE_URL)
|
|
|
|
async with engine.begin() as conn:
|
|
print("👑 USERS tábla bővítése (Rendszer és Szervezeti szintek)...")
|
|
|
|
# 1. SYS_ROLE: Rendszergazda / Moderátor / User
|
|
await conn.execute(text("""
|
|
ALTER TABLE data.users
|
|
ADD COLUMN IF NOT EXISTS sys_role VARCHAR(20) DEFAULT 'USER';
|
|
"""))
|
|
|
|
# 2. HIERARCHIA: Ki a főnököd? (Parent User ID)
|
|
# Ha NULL, akkor ő a Cégtulajdonos (SuperUser). Ha van ID, akkor Alkalmazott.
|
|
await conn.execute(text("""
|
|
ALTER TABLE data.users
|
|
ADD COLUMN IF NOT EXISTS parent_id INTEGER REFERENCES data.users(id);
|
|
"""))
|
|
|
|
# 3. ORG_ROLE: Cégen belüli szerep (Owner, Fleet Manager, Employee)
|
|
await conn.execute(text("""
|
|
ALTER TABLE data.users
|
|
ADD COLUMN IF NOT EXISTS org_role VARCHAR(20) DEFAULT 'OWNER';
|
|
"""))
|
|
|
|
print("🚦 VEHICLE_HISTORY tábla bővítése (Sofőr jogosultságok)...")
|
|
|
|
# 4. ACCESS_LEVEL: Mit láthat a sofőr? (COST_MANAGER vs LOG_ONLY)
|
|
await conn.execute(text("""
|
|
ALTER TABLE data.vehicle_history
|
|
ADD COLUMN IF NOT EXISTS access_level VARCHAR(20) DEFAULT 'FULL';
|
|
-- Lehetséges értékek: 'FULL', 'COST_MANAGER', 'LOG_ONLY'
|
|
"""))
|
|
|
|
# --- DEMO ADATOK FRISSÍTÉSE ---
|
|
print("👤 Demo User (ID:1) kinevezése Rendszergazdának és Cégtulajdonosnak...")
|
|
await conn.execute(text("""
|
|
UPDATE data.users
|
|
SET sys_role = 'SYS_ADMIN', org_role = 'OWNER', parent_id = NULL
|
|
WHERE id = 1;
|
|
"""))
|
|
|
|
print("✅ KÉSZ! A jogosultsági mátrix beépítve az adatbázisba.")
|
|
await engine.dispose()
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(upgrade_permissions()) |