Make token scan read-only

This commit is contained in:
mpabi
2026-04-26 21:12:16 +02:00
parent f92a7c8257
commit 1a66e161aa
3 changed files with 171 additions and 71 deletions
+25 -11
View File
@@ -10,7 +10,8 @@ Sa dwa miejsca, w ktorych moga byc zapisane tokeny:
- lokalny plik `~/dev/workspace/rv/tokens/tokens.json`
Jesli remote URL zawiera `LOGIN:TOKEN@...`, to remote jest zrodlem prawdy.
Launcher moze wtedy zeskanowac repo i zapisac ten token do `tokens.json`.
Launcher moze wtedy pokazac stan przez `tokens scan` albo jawnie zapisac token
do `tokens.json` przez `tokens update --from remotes`.
Jesli remote nie ma tokena, `tokens.json` moze byc uzyty jako lokalny store
przy operacjach `tokens write` i `tokens update --from store`.
@@ -34,6 +35,9 @@ Tokeny sa trzymane per endpoint serwera, a dopiero pod nim per user i token:
"t1": "SECRET",
"t2": {
"value": "SECRET",
"remote": "r1",
"org": "edu-tools",
"repo": "rv-launcher",
"expires_at": "2026-05-01T12:00:00"
}
}
@@ -50,6 +54,8 @@ To pozwala odroznic:
- endpoint, czyli `scheme + host + port`
- uzytkownikow na danym serwerze
- wiele tokenow dla jednego usera
- nazwe remota, ktora jest identyfikatorem parowania z repo
- opcjonalne `org` i `repo` zapamietane z remote URL-a
- opcjonalna date wygasniecia `expires_at` dla tokena
## Skanowanie remota
@@ -58,10 +64,10 @@ Przy `tokens scan` launcher:
- czyta wszystkie remote URL-e w repo
- czyta `tokens.json`
- laczy remote i store w pary po endpoincie serwera
- laczy remote i store w pary po endpoincie serwera i nazwie remota
- wybiera tylko `http` i `https`
- jesli URL ma `LOGIN:TOKEN@...`, wyciaga login i token
- zapisuje je pod odpowiednim endpointem w `tokens.json`
- niczego nie zapisuje do `tokens.json`
Endpoint jest liczony z:
@@ -69,7 +75,7 @@ Endpoint jest liczony z:
- host
- port
Przy skanowaniu launcher zapisuje tez metadane serwera:
Przy `tokens update --from remotes` launcher zapisuje tez metadane serwera:
- `type`
- `scheme`
@@ -90,17 +96,15 @@ Dzialanie:
- skanuje remote URL-e w repo
- czyta wpisy z `tokens.json`
- laczy oba zrodla po endpoincie serwera
- zapisuje znalezione tokeny do `tokens.json`
- zapisuje je per endpoint serwera
- laczy oba zrodla po endpoincie serwera i nazwie remota
- wypisuje tabele `tokens`
Tabela `tokens` pokazuje jeden logiczny wiersz na token. Remote i `tokens.json`
sa laczone po endpoincie, userze i wartosci tokena.
Tabela `tokens` pokazuje jeden logiczny wiersz na remote tokena. Remote i
`tokens.json` sa laczone po endpoincie serwera oraz kolumnie `remote`.
Znacznik w `token_ref`:
- `*` - token jest w remote i `tokens.json`, uprawnienia zostaly wczytane
- `*` - token jest w remote i `tokens.json`, remote/user/token sa zgodne, uprawnienia zostaly wczytane
- `R` - token jest tylko w remote
- `S` - token jest tylko w `tokens.json`
- `!` - blad wczytania uprawnien dla sparowanego tokena
@@ -140,6 +144,10 @@ przyklad `e59cc...13be`.
- `?` - token nie jest sparowany jako `*`, wiec nie sprawdzamy uprawnien
- `!` - blad sprawdzania API
`tokens scan` jest read-only. Jezeli token jest tylko w remote, tabela pokaze
`R` i maski `?????`/`????`. Dopiero jawne `tokens update --from remotes`
zapisuje token oraz metadane `remote`, `org` i `repo` do `tokens.json`.
Przyklad:
```bash
@@ -160,6 +168,7 @@ Wynik zawiera:
- port
- users
- tokens
- remote/org/repo przy tokenie, jezeli sa zapisane
Oraz liste userow i nazw tokenow dla kazdego endpointu.
@@ -226,6 +235,10 @@ Dozwolone kierunki:
- `tokens update --from remotes`
- `tokens update --from store`
`tokens update --from remotes` kopiuje tokeny z remote URL-i repo do
`tokens.json`. `tokens update --from store` kopiuje wybrany token z
`tokens.json` do remote URL-a repo.
Przyklad:
```bash
@@ -240,7 +253,7 @@ Domyslnie launcher nie zgaduje przy konflikcie.
Jesli:
- token jest w repo, ale nie ma go w `tokens.json`
uzyj `tokens scan`
uzyj `tokens update --from remotes`
- token jest w `tokens.json`, ale nie ma go w repo
uzyj `tokens write`
- token jest i tu, i tu, ale wartosci sa rozne
@@ -256,6 +269,7 @@ Przy `tokens write` i `tokens update --from store` mozna uzyc:
Najbezpieczniejszy model pracy:
- `tokens scan` do zczytywania danych z remote'ow
- `tokens update --from remotes` do jawnego zapisania tokenow z remote'ow w `tokens.json`
- `tokens read` do podgladu store
- `tokens stats` do zbiorczego przegladu per endpoint
- `tokens write` do jawnego wpisania auth do remota