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 <noreply@anthropic.com>
This commit is contained in:
r-zakarya
2026-08-17 12:42:33 +01:00
parent 68df2dd7e7
commit 0bcf9b95a2
+15 -2
View File
@@ -400,8 +400,21 @@ il répond **409**. C'est le `If-Match` qu'on avait dû implémenter à la main.
### Le jeton ### Le jeton
Un jeton d'accès personnel **limité à ce dépôt**, droits `repo` en écriture. Il **Gitea ne sait pas limiter un jeton à un dépôt** — vérifié sur 1.26.1. Ses
remplace le jeton Bearer actuel et se range au même endroit — `settings.bin`, 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 scellé par la clé AES du Keystore, lisible sans authentification. Le
raisonnement ne change pas : il n'ouvre que du chiffré. raisonnement ne change pas : il n'ouvre que du chiffré.