From edc5d4e4b303faeef1abc1205b4dd6585dc6cb6c Mon Sep 17 00:00:00 2001 From: Fabio Date: Wed, 7 Oct 2026 22:55:25 +0200 Subject: [PATCH] configura: token Gitea con write:organization, e rinnovo di quelli vecchi Dal 07/10/2026 i progetti nascono nell'organizzazione oto, e crearli vuole write:organization (prima read:organization). Un token salvato senza quello scope viene riconosciuto (Gitea risponde 403 a una creazione volutamente incompleta, 422 se lo scope c'e', e non crea niente), messo da parte e sostituito. Co-Authored-By: Claude Opus 5.5 --- configura.sh | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/configura.sh b/configura.sh index 10b269f..a3682c5 100755 --- a/configura.sh +++ b/configura.sh @@ -22,6 +22,21 @@ titolo "1. Gitea" # obbliga piu' a cambiarla. Chi e' stato creato prima invece deve ancora # cambiarla nel browser, e Gitea gli risponde 403: lo si dice sotto. UTENTE="$(utente_gitea)" +# I token creati prima del 07/10/2026 hanno read:organization e non +# write:organization, che serve a creare i progetti nell'organizzazione oto. +# Lo si chiede a Gitea con una creazione volutamente incompleta (senza nome): +# a un token senza lo scope risponde 403 citandolo, a uno giusto 422, e in +# nessuno dei due casi crea niente. Il token vecchio si mette da parte e se ne +# crea uno nuovo qui sotto; quello vecchio si cancella dal proprio profilo. +if [ -n "$UTENTE" ] && curl -s --max-time 10 -X POST -H "Authorization: token $(token_gitea)" \ + -H 'Content-Type: application/json' -d '{}' "$GITEA_URL/api/v1/orgs/oto/repos" \ + | grep -q 'write:organization' ; then + mv "$TOKEN_GITEA_FILE" "$TOKEN_GITEA_FILE.vecchio" + attento "il token Gitea salvato non puo' creare progetti nell'organizzazione: ne creo uno nuovo" + echo " (quello vecchio, in $TOKEN_GITEA_FILE.vecchio, cancellalo dal tuo profilo Gitea:" + echo " Impostazioni -> Applicazioni)" + UTENTE="" +fi if [ -n "$UTENTE" ] ; then ok "token Gitea gia' salvato (utente $UTENTE)" else @@ -36,7 +51,7 @@ else RISPOSTA="$(printf 'user = "%s"\n' "$PASSWORD_CURL" \ | curl -s --max-time 15 -K - -w '\n%{http_code}' -X POST \ -H 'Content-Type: application/json' \ - -d "{\"name\":\"$NOME_TOKEN\",\"scopes\":[\"write:repository\",\"write:user\",\"read:organization\"]}" \ + -d "{\"name\":\"$NOME_TOKEN\",\"scopes\":[\"write:repository\",\"write:user\",\"write:organization\"]}" \ "$GITEA_URL/api/v1/users/$UTENTE_DATO/tokens")" unset PASSWORD PASSWORD_CURL CODICE="${RISPOSTA##*$'\n'}"