fix: supprime le fallback admin token dans _require_gitea()
_require_gitea() ne doit plus utiliser le token admin global comme fallback quand l'utilisateur n'a pas lié son compte Gitea. Chaque utilisateur doit connecter son propre compte Gitea pour voir les projets. Les endpoints /api/gitea/projects et /api/gitea/orgs retournent maintenant 401 si l'utilisateur n'a pas lié Gitea, et la page /workspaces affiche 'Connect your Gitea account' au lieu de lister les repos du admin.
This commit is contained in:
+5
-10
@@ -6,19 +6,14 @@ router = APIRouter(tags=["gitea"], prefix="/api/gitea")
|
|||||||
|
|
||||||
|
|
||||||
def _require_gitea(request: Request):
|
def _require_gitea(request: Request):
|
||||||
"""Return a per-user GiteaClient, fallback to admin token for read ops.
|
"""Return a per-user GiteaClient or raise 401.
|
||||||
|
|
||||||
Priority: user OAuth token → admin token (read-only fallback).
|
Only returns a client if the user has personally connected their Gitea
|
||||||
Use _require_user_gitea for write operations.
|
account (OAuth token). No fallback to admin token — each user must link
|
||||||
|
their own Gitea account to see Gitea projects.
|
||||||
"""
|
"""
|
||||||
from app.services.gitea_client import get_user_gitea_client, GiteaClient
|
from app.services.gitea_client import get_user_gitea_client
|
||||||
client = get_user_gitea_client(request)
|
client = get_user_gitea_client(request)
|
||||||
if not client:
|
|
||||||
# Fallback to server admin token so any logged-in user can browse repos
|
|
||||||
try:
|
|
||||||
client = GiteaClient() # uses GITEA_TOKEN from settings
|
|
||||||
except Exception:
|
|
||||||
pass
|
|
||||||
if not client:
|
if not client:
|
||||||
raise HTTPException(status_code=401, detail="Gitea account not linked. Go to Settings → Integrations to connect.")
|
raise HTTPException(status_code=401, detail="Gitea account not linked. Go to Settings → Integrations to connect.")
|
||||||
return client
|
return client
|
||||||
|
|||||||
Reference in New Issue
Block a user