From 0bcf9b95a2aaceb4344e7958234f259a34ad7ea1 Mon Sep 17 00:00:00 2001 From: r-zakarya <82443831+r-zakarya@users.noreply.github.com> Date: Mon, 17 Aug 2026 12:42:33 +0100 Subject: [PATCH] docs(android): a Gitea token cannot be limited to one repo The plan said to create a personal token "limited to this repo". Gitea has no such thing - checked against 1.26.1: its scopes are per category and account-wide, so read:repository grants read on every repo the account can read. That is not GitHub's fine-grained model, and the difference changes what you actually do. So the section now says what is available instead, cheapest first: read:repository alone while the phone only reads, a separate token on the PC when publishing lands, and a dedicated Gitea account as collaborator if real isolation is ever needed. Also recorded: the contents endpoint answers 404 unauthenticated on a private repo, which is the same snapshot-absent-or-no-access ambiguity the PHP endpoint has, and the client already treats it as "nothing to download". Co-Authored-By: Claude Opus 5 --- android-client/PLAN.md | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/android-client/PLAN.md b/android-client/PLAN.md index dd24c2d..fef0ed5 100644 --- a/android-client/PLAN.md +++ b/android-client/PLAN.md @@ -400,8 +400,21 @@ il répond **409**. C'est le `If-Match` qu'on avait dû implémenter à la main. ### Le jeton -Un jeton d'accès personnel **limité à ce dépôt**, droits `repo` en écriture. Il -remplace le jeton Bearer actuel et se range au même endroit — `settings.bin`, +**Gitea ne sait pas limiter un jeton à un dépôt** — vérifié sur 1.26.1. Ses +portées sont par *catégorie* et valent pour tout le compte : `read:repository` +donne la lecture de **tous** les dépôts que le compte peut lire. Rien à voir avec +les jetons fins de GitHub. (Ce paragraphe disait le contraire ; c'était faux.) + +Ce qu'on peut faire, par ordre de coût : + +- **`read:repository` seul**, tant que le téléphone ne fait que lire. C'est le + choix actuel : un jeton qui ne peut rien écrire coûte peu s'il fuite. +- L'écriture ne se justifiera qu'au §4, et pour publier depuis le poste c'est + **un autre jeton, sur une autre machine**. +- Vraie isolation, si elle devient nécessaire : un **compte Gitea dédié**, + collaborateur du seul dépôt de sync. + +Il remplace le jeton Bearer actuel et se range au même endroit — `settings.bin`, scellé par la clé AES du Keystore, lisible sans authentification. Le raisonnement ne change pas : il n'ouvre que du chiffré.