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'}"