Authentification
La majorité des endpoints sont publics. Seuls les endpoints sensibles
(par ex. GET /api/v1/gitea-info/:username) sont
protégés par le middleware checkToken (src/utils/token.ts).
Mécanisme
Le client envoie un token Bearer dans le header Authorization :
Authorization: Bearer <token-gitea>Le middleware :
- Forwarde le token à
https://zone01normandie.org/git/api/v1/user(API Gitea de Zone01 Normandie). - Si Gitea répond
200, lituserData.is_admin. - Autorise la requête uniquement si l’utilisateur est admin Gitea.
Le token attendu est donc un Personal Access Token Gitea valide, appartenant à un compte admin. Pas un JWT 01 Edu.
Réponses d’erreur
| Status | Body | Cause |
|---|---|---|
| 400 | { "error": "Token manquant ou vide" } | Header Authorization absent ou vide |
| 403 | { "error": "Token invalide" } | Gitea refuse le token (401/403 upstream) |
| 403 | { "error": "Access denied. Admins only." } | Token valide mais utilisateur non-admin |
| 500 | { "error": "Erreur interne lors de la vérification du token" } | Gitea injoignable / réseau |
Exemple
curl -H "Authorization: Bearer $GITEA_TOKEN" \
https://api-zone01-rouen.deno.dev/api/v1/gitea-info/aliceComment obtenir un token
- Se connecter à https://zone01normandie.org/git
- Avatar → Settings → Applications
- Generate New Token avec un scope minimal (
read:usersuffit pour l’usage admin actuel). - Le compte doit avoir le flag
is_admin = truecôté Gitea.