Změny:
users migrace má nové sloupce gitea_user_id, gitea_sync_status, gitea_sync_error, gitea_synced_at.
Přidal jsem gitea_provisioning.py, který přes Gitea API vytváří, aktivuje, deaktivuje a synchronizuje účty.
Role viewer Gitea účet nemá; developer a admin účet mají.
Změny role a enable/disable v administraci spouští sync do Gitea.
Admin UI v routes/users.py zobrazuje stav Gitea synchronizace a má ruční Sync Gitea.
Google login po přihlášení dorovnává Gitea stav podle portálového uživatele.
Gitea OAuth login je v portálu vypnutý; endpointy zůstaly, ale vrací hlášku, že se má použít Google.
Lokální login se zobrazuje/povolí jen při explicitním AUTH_MODE=local.
Gitea API token se čte z GITEA_ADMIN_TOKEN, případně fallback GITEA_API_TOKEN nebo GITEA_TOKEN. Podřízené Gitea username je deterministicky portal-{user_id}, portálová tabulka zůstává zdroj pravdy.
Ověření: python -m py_compile prošel pro všechny upravené Python soubory.
This commit is contained in:
+10
-1
@@ -23,7 +23,11 @@ def ensure_user_columns(con) -> None:
|
||||
last_login_at TEXT,
|
||||
auth_provider TEXT,
|
||||
provider_subject TEXT,
|
||||
avatar_url TEXT
|
||||
avatar_url TEXT,
|
||||
gitea_user_id INTEGER,
|
||||
gitea_sync_status TEXT NOT NULL DEFAULT 'not_required',
|
||||
gitea_sync_error TEXT,
|
||||
gitea_synced_at TEXT
|
||||
)
|
||||
"""
|
||||
)
|
||||
@@ -45,6 +49,10 @@ def ensure_user_columns(con) -> None:
|
||||
"auth_provider": "TEXT",
|
||||
"provider_subject": "TEXT",
|
||||
"avatar_url": "TEXT",
|
||||
"gitea_user_id": "INTEGER",
|
||||
"gitea_sync_status": "TEXT NOT NULL DEFAULT 'not_required'",
|
||||
"gitea_sync_error": "TEXT",
|
||||
"gitea_synced_at": "TEXT",
|
||||
}
|
||||
for column, definition in defaults.items():
|
||||
if column not in columns:
|
||||
@@ -54,6 +62,7 @@ def ensure_user_columns(con) -> None:
|
||||
if "is_active" in columns and "is_enabled" in columns:
|
||||
con.execute("UPDATE users SET is_enabled = COALESCE(is_active, 1) WHERE is_enabled IS NULL")
|
||||
con.execute("UPDATE users SET role = 'viewer' WHERE role IS NULL OR role = ''")
|
||||
con.execute("UPDATE users SET gitea_sync_status = 'not_required' WHERE gitea_sync_status IS NULL OR gitea_sync_status = ''")
|
||||
con.execute("UPDATE users SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL OR created_at = ''")
|
||||
con.execute("UPDATE users SET updated_at = COALESCE(created_at, CURRENT_TIMESTAMP) WHERE updated_at IS NULL OR updated_at = ''")
|
||||
con.execute("CREATE INDEX IF NOT EXISTS idx_users_email ON users(email)")
|
||||
|
||||
Reference in New Issue
Block a user