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):
|
||||
"""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).
|
||||
Use _require_user_gitea for write operations.
|
||||
Only returns a client if the user has personally connected their Gitea
|
||||
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)
|
||||
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:
|
||||
raise HTTPException(status_code=401, detail="Gitea account not linked. Go to Settings → Integrations to connect.")
|
||||
return client
|
||||
|
||||
Reference in New Issue
Block a user