
Un'API basata su JWT per la gestione degli utenti e l'emissione di token JWT
# Auth - Autenticazione e Gestione Utenti di Supabase
[](https://coveralls.io/github/supabase/auth?branch=master)
Auth è un server di gestione utenti e autenticazione scritto in Go che alimenta le funzionalità di [Supabase](https://supabase.com), come:
- Emissione di JWT
- Row Level Security con PostgREST
- Gestione utenti
- Accesso con email, password, magic link, numero di telefono
- Accesso con provider esterni (Google, Apple, Facebook, Discord, ...)
È originariamente basato sull'eccellente [codebase GoTrue di Netlify](https://github.com/netlify/gotrue), tuttavia entrambi si sono discostati in modo significativo per caratteristiche e funzionalità.
Se desideri contribuire al progetto, fa riferimento alla [guida al contributo](https://github.com/supabase/auth/blob/master/CONTRIBUTING.md).
## Table of Contents
- [Quick Start](#quick-start)
- [Running in Production](#running-in-production)
- [Configuration](#configuration)
- [Endpoints](#endpoints)
## Avvio Rapido
Crea un file `.env` per memorizzare le tue variabili d'ambiente personalizzate. Vedi [`example.env`](https://github.com/supabase/auth/blob/master/example.env)
1. Avvia il database Postgres locale in un container Postgres: `docker-compose -f docker-compose-dev.yml up postgres`
2. Compila il binario auth: `make build` . Dovresti vedere un output simile a questo:```bash
go build -ldflags "-X github.com/supabase/auth/cmd.Version=`git rev-parse HEAD`"
GOOS=linux GOARCH=arm64 go build -ldflags "-X github.com/supabase/auth/cmd.Version=`git rev-parse HEAD`" -o gotrue-arm64
```
3. Esegui il binario auth: `./auth`
### Se hai Docker installato
Crea un file `.env.docker` per memorizzare le tue variabili d'ambiente personalizzate. Vedi [`example.docker.env`](https://github.com/supabase/auth/blob/master/example.docker.env)
1. `make build`
2. `make dev`
3. `docker ps` dovrebbe mostrare due container Docker (`auth-auth-1` e `auth-postgres-1`)
4. Tutto qui! Visita l'[endpoint di health check](http://localhost:9999/health) per confermare che auth sia in esecuzione.
## Esecuzione in produzione
Eseguire un server di autenticazione in produzione non è un'impresa facile. Ti
consigliamo di utilizzare [Supabase Auth](https://supabase.com/auth), che riceve regolari
aggiornamenti di sicurezza.
In caso contrario, assicurati di predisporre un processo per aggiornare tempestivamente all'
ultima versione. Puoi farlo seguendo questo repository, in particolare le
sezioni [Releases](https://github.com/supabase/auth/releases) e [Security
Advisories](https://github.com/supabase/auth/security/advisories).
### Retrocompatibilità
Auth utilizza lo schema [Semantic Versioning](https://semver.org). Ecco alcuni
ulteriori chiarimenti sulle garanzie di retrocompatibilità:
**Compatibilità API Go**
Auth non è pensato per essere usato come libreria Go. Non ci sono garanzie sulla
retrocompatibilità API quando usato in questo modo, a prescindere da quale
numero di versione cambi.
**Patch**
Le modifiche alla versione patch garantiscono la retrocompatibilità con:
- Oggetti del database (tabelle, colonne, indici, funzioni).
- API REST
- Struttura JWT
- Configurazione
Esempi garantiti:
- Una colonna non cambierà il suo tipo.
- Una tabella non cambierà la sua chiave primaria.
- Un indice non verrà rimosso.
- Un vincolo di unicità non verrà rimosso.
- Un'API REST non verrà rimossa.
- I parametri delle API REST funzioneranno in modo equivalente a prima (o meglio, se un bug
è stato corretto).
- La configurazione non cambierà.
Esempi non garantiti:
- Una tabella potrebbe aggiungere nuove colonne.
- Le colonne in una tabella potrebbero essere riordinate.
- I vincoli non univoci potrebbero essere rimossi (controlli a livello di database, null, valori
predefiniti).
- JWT potrebbe aggiungere nuove proprietà.
**Minor**
Le modifiche alla versione minor garantiscono la retrocompatibilità con:
- API REST
- Struttura JWT
- Configurazione
Eccezioni a queste garanzie saranno ammesse solo quando verranno trovati seri problemi
di sicurezza che non possono essere risolti in nessun altro modo.
Esempi garantiti:
- Le API esistenti potrebbero essere deprecate ma continueranno a funzionare per le prossime poche
versioni minor.
- Le modifiche alla configurazione potrebbero diventare deprecate ma continueranno a funzionare per
le prossime poche versioni minor.
- I JWT già emessi saranno accettati, ma i nuovi JWT potrebbero avere una
struttura diversa (ma di solito simile).
Esempi non garantiti:
- Rimozione dei campi JWT dopo un avviso di deprecazione.
- Rimozione di alcune API dopo un avviso di deprecazione.
- Rimozione dell'accesso con provider esterni dopo un avviso di deprecazione.
- Eliminazione, troncamento, modifiche significative dello schema di tabelle, indici, viste,
funzioni.
Puntiamo a fornire un avviso di deprecazione nei log di esecuzione per almeno due
versioni major o due settimane se vengono pubblicate più release. La compatibilità sarà
garantita finché l'avviso è attivo.
**Major**
Le modifiche alla versione major non garantiscono alcuna retrocompatibilità con
le versioni precedenti.
### Funzionalità ereditate
Alcune funzionalità ereditate dal codebase di Netlify non sono supportate da
Supabase e potrebbero essere rimosse senza preavviso in futuro. Questa è una
lista completa di tali funzionalità:
1. Multi-tenancy tramite la tabella `instances`, cioè il parametro di configurazione
`GOTRUE_MULTI_INSTANCE_MODE`.
2. Utente di sistema (utente UUID zero).
3. Super admin tramite la colonna `is_super_admin`.
4. Informazioni di gruppo nei JWT tramite `GOTRUE_JWT_ADMIN_GROUP_NAME` e altri
campi di configurazione.
5. Firma JWT. Supabase Auth supporta chiavi asimmetriche (RS256 di default;
ECC/Ed25519 opzionali). HS256 è ancora supportato per compatibilità, ma
migrare verso chiavi asimmetriche è consigliato per una validazione e una
rotazione più semplici. Le future deprecazioni saranno annunciate nel changelog. Vedi la
[guida JWT Signing Keys](https://supabase.com/docs/guides/auth/signing-keys) e
[la guida JWTs](https://supabase.com/docs/guides/auth/jwts) per i dettagli.
Nota che questa non è una lista esaustiva e potrebbe cambiare.
### Buone pratiche per il self-hosting
Queste sono alcune buone pratiche da seguire quando si fa self-hosting per garantire la
retrocompatibilità con Auth:
1. Non modificare lo schema gestito da Auth. Puoi vedere tutte le
migrazioni nella directory `migrations`.
2. Non fare affidamento sullo schema e sulla struttura dei dati nel database. Usa sempre
le API di Auth e i JWT per dedurre informazioni sugli utenti.
3. Esegui sempre Auth dietro un proxy in grado di gestire TLS, come un load balancer, CDN,
nginx o altro software simile.
## Configurazione
Puoi configurare Auth usando un file di configurazione chiamato `.env`,
variabili d'ambiente, o una combinazione di entrambi. Le variabili d'ambiente hanno il prefisso `GOTRUE_` e avranno sempre precedenza sui valori forniti tramite file.
### Livello principale```properties
GOTRUE_SITE_URL=https://example.netlify.com/
```
`SITE_URL` - `string` **obbligatorio**
L'URL di base in cui si trova il tuo sito. Attualmente utilizzato in combinazione con altre impostazioni per costruire gli URL usati nelle email. Qualsiasi URI che condivide un host con `SITE_URL` è un valore consentito per i parametri `redirect_to` (vedi `/authorize` ecc.).
`URI_ALLOW_LIST` - `string`
Un elenco separato da virgole di URI (ad es. `"https://foo.example.com,https://*.foo.example.com,https://bar.example.com"`) che sono consentiti come destinazioni `redirect_to` valide. Il valore predefinito è []. Supporta il matching con caratteri jolly tramite globbing. Ad es. `https://*.foo.example.com` consentirà l'accettazione di `https://a.foo.example.com` e `https://b.foo.example.com`. Il globbing è supportato anche sui sottodomini. Ad es. `https://foo.example.com/*` consentirà l'accettazione di `https://foo.example.com/page1` e `https://foo.example.com/page2`.
Per pattern glob più comuni, consulta il [seguente link](https://pkg.go.dev/github.com/gobwas/glob#Compile).
`OPERATOR_TOKEN` - `string` _Solo modalità multi-istanza_
Il segreto condiviso con un operatore (di solito Netlify) per questo microservizio. Utilizzato per verificare che le richieste siano state inoltrate tramite l'operatore e
che i valori del payload possano essere considerati attendibili.
`DISABLE_SIGNUP` - `bool`
Quando la registrazione è disabilitata, l'unico modo per creare nuovi utenti è tramite inviti. Il valore predefinito è `false`, tutte le registrazioni abilitate.
`GOTRUE_EXTERNAL_EMAIL_ENABLED` - `bool`
Utilizza questa impostazione per disabilitare le registrazioni via email (gli utenti possono comunque utilizzare provider OAuth esterni per registrarsi / accedere)
`GOTRUE_EXTERNAL_PHONE_ENABLED` - `bool`
Utilizza questa impostazione per disabilitare le registrazioni via telefono (gli utenti possono comunque utilizzare provider OAuth esterni per registrarsi / accedere)
`GOTRUE_RATE_LIMIT_HEADER` - `string`
Header su cui applicare il rate limiting all'endpoint `/token`. Questo header deve essere impostato da un proxy upstream attendibile (come Kong o Envoy). Header come `x-forwarded-for` sono falsificabili e non possono essere considerati attendibili per il rate limiting quando forniti direttamente dal client.
`GOTRUE_RATE_LIMIT_EMAIL_SENT` - `string`
Limita il numero di email inviate all'ora sui seguenti endpoint: `/signup`, `/invite`, `/magiclink`, `/recover`, `/otp` e `/user`.
`GOTRUE_PASSWORD_MIN_LENGTH` - `int`
Lunghezza minima della password, il valore predefinito è 6.
`GOTRUE_PASSWORD_REQUIRED_CHARACTERS` - una stringa di set di caratteri separati da `:`. Una password deve contenere almeno un carattere di ciascun set per essere accettata. Per usare il carattere `:` è necessario precederlo con `\`.
`GOTRUE_SECURITY_REFRESH_TOKEN_ROTATION_ENABLED` - `bool`
Se la rotazione del refresh token è abilitata, l'autenticazione rileverà automaticamente i tentativi dannosi di riutilizzare un refresh token revocato. Quando viene rilevato un tentativo dannoso, GoTrue revoca immediatamente tutti i token derivati dal token incriminato.
`GOTRUE_SECURITY_REFRESH_TOKEN_REUSE_INTERVAL` - `string`
Questa impostazione è applicabile solo se `GOTRUE_SECURITY_REFRESH_TOKEN_ROTATION_ENABLED` è abilitata. L'intervallo di riutilizzo per un refresh token consente di scambiare il refresh token più volte durante l'intervallo per supportare problemi di concorrenza o offline. Durante l'intervallo di riutilizzo, l'autenticazione non considererà l'uso di un token revocato come un tentativo dannoso e restituirà semplicemente il refresh token figlio.
Solo il precedente token revocato può essere riutilizzato. L'utilizzo di un vecchio refresh token molto prima dell'attuale refresh token valido attiverà il rilevamento del riutilizzo.
### API```properties
GOTRUE_API_HOST=localhost
PORT=9999
API_EXTERNAL_URL=http://localhost:9999
```
`API_HOST` - `string`
Nome host su cui mettersi in ascolto.
`PORT` (senza prefisso) / `API_PORT` - `number`
Numero di porta su cui mettersi in ascolto. Il valore predefinito è `8081`.
`API_ENDPOINT` - `string` _Solo modalità multi-istanza_
Controlla su quale endpoint Netlify può accedere a questa API.
`API_EXTERNAL_URL` - `string` **obbligatorio**
L'URL su cui GoTrue potrebbe essere accessibile.
`REQUEST_ID_HEADER` - `string`
Se desideri ereditare un ID di richiesta dalla richiesta in arrivo, specifica il nome in questo valore.
### Database```properties
GOTRUE_DB_DRIVER=postgres
DATABASE_URL=root@localhost/auth
```
`DB_DRIVER` - `string` **required**
Sceglie il dialetto del database che desideri. Deve essere `postgres`.
`DATABASE_URL` (nessun prefisso) / `DB_DATABASE_URL` - `string` **required**
Stringa di connessione per il database.
`GOTRUE_DB_MAX_POOL_SIZE` - `int`
Imposta il numero massimo di connessioni aperte al database. Il valore predefinito è 0, che equivale a un numero di connessioni "illimitato".
`DB_NAMESPACE` - `string`
Aggiunge un prefisso a tutti i nomi delle tabelle.
**Nota sulle migrazioni**
Le migrazioni vengono applicate automaticamente quando esegui `./auth`. Tuttavia, hai anche la possibilità di rieseguire le migrazioni tramite i seguenti metodi:
- Se compilato localmente: `./auth migrate`
- Usando Docker: `docker run --rm auth gotrue migrate`
### Registrazione```properties
LOG_LEVEL=debug # available without GOTRUE prefix (exception)
GOTRUE_LOG_FILE=/var/log/go/auth.log
```
`LOG_LEVEL` - `string`
Controlla quali livelli di log vengono emessi. Scegli tra `panic`, `fatal`, `error`, `warn`, `info` o `debug`. Il valore predefinito è `info`.
`LOG_FILE` - `string`
Se desideri che i log vengano scritti su un file, imposta `log_file` su un percorso file valido.
### Observability
Auth ha funzionalità di osservabilità di base integrate. È in grado di esportare
[OpenTelemetry](https://opentelemetry.io) metriche e trace verso un collector.
#### Tracing
Per abilitare il tracing, configura queste variabili:
`GOTRUE_TRACING_ENABLED` - `bool`
`GOTRUE_TRACING_EXPORTER` - `string` solo `opentelemetry` supportato
Assicurati di configurare anche la configurazione dell'[OpenTelemetry
Exporter](https://opentelemetry.io/docs/reference/specification/protocol/exporter/)
per il tuo collector o servizio.
Ad esempio, se usi
[Honeycomb.io](https://docs.honeycomb.io/getting-data-in/opentelemetry/go-distro/#using-opentelemetry-without-the-honeycomb-distribution)
dovresti impostare queste variabili standard OTLP di OpenTelemetry:```
OTEL_SERVICE_NAME=auth
OTEL_EXPORTER_OTLP_PROTOCOL=grpc
OTEL_EXPORTER_OTLP_ENDPOINT=https://api.honeycomb.io:443
OTEL_EXPORTER_OTLP_HEADERS="x-honeycomb-team=<API-KEY>,x-honeycomb-dataset=auth"
```
#### Metriche
Per abilitare le metriche configura queste variabili:
`GOTRUE_METRICS_ENABLED` - `boolean`
`GOTRUE_METRICS_EXPORTER` - `string` supporta solo `opentelemetry` e `prometheus`
Assicurati di configurare anche il [OpenTelemetry
Exporter](https://opentelemetry.io/docs/reference/specification/protocol/exporter/)
per il tuo collector o servizio.
Se usi l'exporter `prometheus`, l'host e la porta del server possono essere
configurati usando queste variabili standard OpenTelemetry:
`OTEL_EXPORTER_PROMETHEUS_HOST` - indirizzo IP, default `0.0.0.0`
`OTEL_EXPORTER_PROMETHEUS_PORT` - numero di porta, default `9100`
Le metriche vengono esportate sul percorso `/` del server.
Se usi l'exporter `opentelemetry`, le metriche vengono inviate al
collector.
Ad esempio, se usi
[Honeycomb.io](https://docs.honeycomb.io/getting-data-in/opentelemetry/go-distro/#using-opentelemetry-without-the-honeycomb-distribution)
dovresti impostare queste variabili standard OTLP di OpenTelemetry:```
OTEL_SERVICE_NAME=auth
OTEL_EXPORTER_OTLP_PROTOCOL=grpc
OTEL_EXPORTER_OTLP_ENDPOINT=https://api.honeycomb.io:443
OTEL_EXPORTER_OTLP_HEADERS="x-honeycomb-team=<API-KEY>,x-honeycomb-dataset=auth"
```
Nota che Honeycomb.io richiede un piano a pagamento per ingerire le metriche.
Se devi eseguire il debug di un problema con trace o metriche non inviate, puoi
impostare `DEBUG=true` per ottenere maggiori dettagli dall'OpenTelemetry SDK.
#### Attributi personalizzati delle risorse
Quando utilizzi gli exporter di tracing o metriche OpenTelemetry puoi definire
attributi personalizzati delle risorse usando la [variabile d'ambiente standard
`OTEL_RESOURCE_ATTRIBUTES`](https://opentelemetry.io/docs/reference/specification/resource/sdk/#specifying-resource-information-via-an-environment-variable).
Un attributo predefinito `auth.version` è fornito e contiene la versione di build.
#### Tracciamento delle route HTTP
Tutte le chiamate HTTP all'Auth API vengono tracciate. Le route utilizzano la versione parametrizzata
della route, e i valori dei parametri della route possono essere trovati come
attributo span `http.route.params.<route-key>`.
Ad esempio, la seguente richiesta:```
GET /admin/users/4acde936-82dc-4552-b851-831fb8ce0927/
```
sarà tracciato come:```
http.method = GET
http.route = /admin/users/{user_id}
http.route.params.user_id = 4acde936-82dc-4552-b851-831fb8ce0927
```
#### Metriche del runtime Go e HTTP
Tutte le metriche del runtime Go sono esposte. Alcune metriche HTTP vengono anche raccolte
per impostazione predefinita.
### JSON Web Tokens (JWT)```properties
GOTRUE_JWT_SECRET=supersecretvalue
GOTRUE_JWT_EXP=3600
GOTRUE_JWT_AUD=netlify
```
`JWT_SECRET` - `string` **obbligatorio**
Il segreto usato per firmare i token JWT.
`JWT_EXP` - `number`
Per quanto tempo i token sono validi, in secondi. Il valore predefinito è 3600 (1 ora).
`JWT_AUD` - `string`
Il pubblico (audience) JWT predefinito. Usa gli audience per raggruppare gli utenti.
`JWT_ADMIN_GROUP_NAME` - `string`
Il nome del gruppo admin (se abilitato). Il valore predefinito è `admin`.
`JWT_DEFAULT_GROUP_NAME` - `string`
Il gruppo predefinito a cui assegnare tutti i nuovi utenti.
### Provider di autenticazione esterni
Supportiamo `apple`, `azure`, `bitbucket`, `discord`, `facebook`, `figma`, `github`, `gitlab`, `google`, `keycloak`, `linkedin`, `notion`, `snapchat`, `spotify`, `slack`, `twitch`, `twitter` e `workos` per l'autenticazione esterna.
Usa i nomi come chiavi sotto `external` per configurare ciascuno separatamente.```properties
GOTRUE_EXTERNAL_GITHUB_ENABLED=true
GOTRUE_EXTERNAL_GITHUB_CLIENT_ID=myappclientid
GOTRUE_EXTERNAL_GITHUB_SECRET=clientsecretvaluessssh
GOTRUE_EXTERNAL_GITHUB_REDIRECT_URI=http://localhost:3000/callback
```
Non è richiesto alcun provider esterno, ma è necessario fornire i valori richiesti se si sceglie di abilitarne uno.
`EXTERNAL_X_ENABLED` - `bool`
Indica se questo provider esterno è abilitato o meno
`EXTERNAL_X_CLIENT_ID` - `string` **required**
L'ID client OAuth2 registrato presso il provider esterno.
`EXTERNAL_X_SECRET` - `string` **required**
Il segreto client OAuth2 fornito dal provider esterno al momento della registrazione.
`EXTERNAL_X_REDIRECT_URI` - `string` **required**
L'URI a cui un provider OAuth2 reindirizzerà con i valori `code` e `state`.
`EXTERNAL_X_URL` - `string`
L'URL di base utilizzato per costruire gli URL con cui richiedere i token di autorizzazione e di accesso. Usato da `gitlab` e `keycloak`. Per `gitlab` il valore predefinito è `https://gitlab.com`. Per `keycloak` devi impostarlo sulla tua istanza, ad esempio: `https://keycloak.example.com/realms/myrealm`
#### Network hardening
La configurazione di un provider di autenticazione esterno fa sì che Auth effettui richieste HTTP in uscita verso gli endpoint di autorizzazione, token e userinfo del provider. Configurare un provider tramite le impostazioni `GOTRUE_EXTERNAL_*` o un'API di amministrazione è un'azione amministrativa e implica la fiducia negli host e negli URL che verranno contattati.
La rete in cui gira Auth dovrebbe essere protetta affinché queste connessioni in uscita non possano raggiungere risorse solo interne che non vuoi esporre, come indirizzi `localhost`/loopback o endpoint di metadati cloud (ad es. `169.254.169.254`). Questo è particolarmente rilevante per i provider con endpoint configurabili dall'amministratore o rilevabili (ad es. provider OAuth/OIDC personalizzati), dove un URL configurato male o dannoso potrebbe altrimenti essere usato per raggiungere infrastrutture interne.
#### Apple OAuth
Per provare l'autenticazione esterna con Apple in locale, dovrai fare quanto segue:
1. Rimappa localhost su \<my_custom_dns \> nella configurazione di `/etc/hosts`.
2. Configura auth per servire traffico HTTPS su localhost sostituendo `ListenAndServe` in [api.go](https://github.com/supabase/auth/blob/master/internal/api/api.go) con: ```
func (a *API) ListenAndServe(hostAndPort string) {
log := logrus.WithField("component", "api")
path, err := os.Getwd()
if err != nil {
log.Println(err)
}
server := &http.Server{
Addr: hostAndPort,
Handler: a.handler,
}
done := make(chan struct{})
defer close(done)
go func() {
waitForTermination(log, done)
ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
defer cancel()
server.Shutdown(ctx)
}()
if err := server.ListenAndServeTLS("PATH_TO_CRT_FILE", "PATH_TO_KEY_FILE"); err != http.ErrServerClosed {
log.WithError(err).Fatal("http server listen failed")
}
}
```
3. Genera il file crt e key. Consulta [qui](https://www.freecodecamp.org/news/how-to-get-https-working-on-your-local-development-environment-in-5-minutes-7af615770eec/) per maggiori informazioni.
4. Genera il `GOTRUE_EXTERNAL_APPLE_SECRET` seguendo questo [post](https://medium.com/identity-beyond-borders/how-to-configure-sign-in-with-apple-77c61e336003)!
### Email
L'invio di email non è richiesto, ma è fortemente consigliato per il recupero della password.
Se abilitato, devi fornire i valori richiesti di seguito.```properties
GOTRUE_SMTP_HOST=smtp.mandrillapp.com
GOTRUE_SMTP_PORT=587
[email protected]
GOTRUE_SMTP_PASS=correcthorsebatterystaple
[email protected]
GOTRUE_MAILER_SUBJECTS_CONFIRMATION="Please confirm"
```
`SMTP_ADMIN_EMAIL` - `string` **obbligatorio**
L'indirizzo email `From` per tutte le email inviate.
`SMTP_HOST` - `string` **obbligatorio**
Il nome host del server di posta attraverso cui inviare le email.
`SMTP_PORT` - `number` **obbligatorio**
Il numero di porta su cui connettersi al server di posta.
`SMTP_USER` - `string`
Se il server di posta richiede l'autenticazione, il nome utente da usare.
`SMTP_PASS` - `string`
Se il server di posta richiede l'autenticazione, la password da usare.
`SMTP_MAX_FREQUENCY` - `number`
Controlla il tempo minimo che deve trascorrere prima di inviare un'altra email di conferma della registrazione o di reset della password. Il valore è espresso in secondi. Il valore predefinito è 900 (15 minuti).
`SMTP_SENDER_NAME` - `string`
Imposta il nome del mittente. Se non utilizzato, il valore predefinito è `SMTP_ADMIN_EMAIL`.
`MAILER_AUTOCONFIRM` - `bool`
Se non richiedi la conferma via email, puoi impostarlo su `true`. Il valore predefinito è `false`.
`MAILER_OTP_EXP` - `number`
Controlla la durata di validità di un link email o di un OTP.
`MAILER_URLPATHS_INVITE` - `string`
Percorso URL da usare nell'email di invito utente. Il valore predefinito è `/verify`.
`MAILER_URLPATHS_CONFIRMATION` - `string`
Percorso URL da usare nell'email di conferma della registrazione. Il valore predefinito è `/verify`.
`MAILER_URLPATHS_RECOVERY` - `string`
Percorso URL da usare nell'email di reset della password. Il valore predefinito è `/verify`.
`MAILER_URLPATHS_EMAIL_CHANGE` - `string`
Percorso URL da usare nell'email di conferma del cambio di email. Il valore predefinito è `/verify`.
`MAILER_SUBJECTS_INVITE` - `string`
Oggetto dell'email da usare per l'invito utente. Il valore predefinito è `You've been invited`.
`MAILER_SUBJECTS_CONFIRMATION` - `string`
Oggetto dell'email da usare per la conferma della registrazione. Il valore predefinito è `Confirm your email address`.
`MAILER_SUBJECTS_RECOVERY` - `string`
Oggetto dell'email da usare per il reset della password. Il valore predefinito è `Reset your password`.
`MAILER_SUBJECTS_MAGIC_LINK` - `string`
Oggetto dell'email da usare per l'email con magic link. Il valore predefinito è `Your sign-in link`.
`MAILER_SUBJECTS_EMAIL_CHANGE` - `string`
Oggetto dell'email da usare per la conferma del cambio di email. Il valore predefinito è `Confirm your new email address`.
`MAILER_SUBJECTS_REAUTHENTICATION` - `string`
Oggetto dell'email da usare per la riautenticazione. Il valore predefinito è `{{ .Token }} is your verification code`.
`MAILER_SUBJECTS_PASSWORD_CHANGED_NOTIFICATION` - `string`
Oggetto dell'email da usare per la notifica di modifica della password. Il valore predefinito è `Your password was changed`.
`MAILER_SUBJECTS_EMAIL_CHANGED_NOTIFICATION` - `string`
Oggetto dell'email da usare per la notifica di modifica dell'indirizzo email. Il valore predefinito è `Your email address was changed`.
`GOTRUE_MAILER_SUBJECTS_PHONE_CHANGED_NOTIFICATION` - `string`
Oggetto dell'email da usare per la notifica di modifica del numero di telefono. Il valore predefinito è `Your phone number was changed`.
`GOTRUE_MAILER_SUBJECTS_IDENTITY_LINKED_NOTIFICATION` - `string`
Oggetto dell'email da usare per la notifica di collegamento dell'identità. Il valore predefinito è `A new sign-in method was linked to your account`.
`GOTRUE_MAILER_SUBJECTS_IDENTITY_UNLINKED_NOTIFICATION` - `string`
Oggetto dell'email da usare per la notifica di scollegamento dell'identità. Il valore predefinito è `A sign-in method was removed from your account`.
`GOTRUE_MAILER_SUBJECTS_MFA_FACTOR_ENROLLED_NOTIFICATION` - `string`
Oggetto dell'email da usare per la notifica di aggiunta di un metodo di verifica. Il valore predefinito è `A new verification method was added to your account`.
`GOTRUE_MAILER_SUBJECTS_MFA_FACTOR_UNENROLLED_NOTIFICATION` - `string`
Oggetto dell'email da usare per la notifica di rimozione di un metodo di verifica. Il valore predefinito è `A verification method was removed from your account`.
`MAILER_TEMPLATES_INVITE` - `string`
Percorso URL di un modello email da usare quando si invita un utente. (ad es. `https://www.example.com/path-to-email-template.html`)
Sono disponibili le variabili `SiteURL`, `Email` e `ConfirmationURL`.
Contenuto predefinito (se il modello non è disponibile):```html
<h2>You've been invited</h2>
<p>You've been invited to create an account. Follow the link below to accept.</p>
<p><a href="https://github.com/supabase/auth/blob/master/%7B%7B%20.ConfirmationURL%20%7D%7D">Accept invitation</a></p>
```
`MAILER_TEMPLATES_CONFIRMATION` - `string`
Percorso URL di un modello di email da utilizzare per confermare una registrazione. (es. `https://www.example.com/path-to-email-template.html`)
Le variabili `SiteURL`, `Email` e `ConfirmationURL` sono disponibili.
Contenuto predefinito (se il modello non è disponibile):```html
<h2>Confirm your email address</h2>
<p>Follow the link below to confirm this email address and finish signing up.</p>
<p><a href="https://github.com/supabase/auth/blob/master/%7B%7B%20.ConfirmationURL%20%7D%7D">Confirm email address</a></p>
```
`MAILER_TEMPLATES_RECOVERY` - `string`
Percorso URL di un modello di email da utilizzare per reimpostare una password. (es. `https://www.example.com/path-to-email-template.html`)
Le variabili `SiteURL`, `Email` e `ConfirmationURL` sono disponibili.
Contenuto predefinito (se il modello non è disponibile):```html
<h2>Reset your password</h2>
<p>We received a request to reset your password. Follow the link below to choose a new one.</p>
<p><a href="https://github.com/supabase/auth/blob/master/%7B%7B%20.ConfirmationURL%20%7D%7D">Reset password</a></p>
<p>If you didn't request this, you can safely ignore this email.</p>
```
`MAILER_TEMPLATES_MAGIC_LINK` - `string`
Percorso URL di un template email da utilizzare per l'invio del magic link. (ad es. `https://www.example.com/path-to-email-template.html`)
Le variabili `SiteURL`, `Email` e `ConfirmationURL` sono disponibili.
Contenuto predefinito (se il template non è disponibile):```html
<h2>Your sign-in link</h2>
<p>Follow the link below to sign in. This link expires shortly and can only be used once.</p>
<p><a href="https://github.com/supabase/auth/blob/master/%7B%7B%20.ConfirmationURL%20%7D%7D">Sign in</a></p>
```
`MAILER_TEMPLATES_EMAIL_CHANGE` - `string`
Percorso URL di un modello di email da utilizzare per confermare la modifica di un indirizzo email. (ad es. `https://www.example.com/path-to-email-template.html`)
Sono disponibili le variabili `SiteURL`, `Email`, `NewEmail` e `ConfirmationURL`.
Contenuto predefinito (se il modello non è disponibile):```html
<h2>Confirm your new email address</h2>
<p>Follow the link below to confirm {{ .NewEmail }} as your new email address.</p>
<p><a href="https://github.com/supabase/auth/blob/master/%7B%7B%20.ConfirmationURL%20%7D%7D">Confirm new email address</a></p>
<p>If you didn't request this change, you can safely ignore this email.</p>
```
`MAILER_TEMPLATES_REAUTHENTICATION` - `string`
Percorso URL di un modello di email da utilizzare quando si riautentica un utente. (ad es. `https://www.example.com/path-to-email-template.html`)
La variabile `Token` è disponibile.
Contenuto predefinito (se il modello non è disponibile):```html
<h2>Your verification code</h2>
<p>Use the code below to verify your identity. It expires shortly.</p>
<p>{{ .Token }}</p>
```
`MAILER_TEMPLATES_PASSWORD_CHANGED_NOTIFICATION` - `string`
Percorso URL di un modello di email da utilizzare quando si notifica a un utente che la sua password è stata modificata. (es. `https://www.example.com/path-to-email-template.html`)
Le variabili `Email` sono disponibili.
Contenuto predefinito (se il modello non è disponibile):```html
<h2>Your password was changed</h2>
<p>The password for your account was recently changed.</p>
<p>If you didn't make this change, reset your password and contact support immediately.</p>
```
`GOTRUE_MAILER_NOTIFICATIONS_PASSWORD_CHANGED_ENABLED` - `bool`
Indica se inviare un'email di notifica quando la password di un utente viene modificata. Il valore predefinito è `false`.
`MAILER_TEMPLATES_EMAIL_CHANGED_NOTIFICATION` - `string`
Percorso URL di un modello di email da utilizzare quando si notifica a un utente che la sua email è stata modificata. (es. `https://www.example.com/path-to-email-template.html`)
Le variabili `Email` e `OldEmail` sono disponibili.
Contenuto predefinito (se il modello non è disponibile):```html
<h2>Your email address was changed</h2>
<p>The email address for your account was changed from {{ .OldEmail }} to {{ .Email }}.</p>
<p>If you didn't make this change, contact support immediately.</p>
```
`GOTRUE_MAILER_NOTIFICATIONS_EMAIL_CHANGED_ENABLED` - `bool`
Se inviare un'email di notifica quando l'email di un utente viene modificata. Il valore predefinito è `false`.
`GOTRUE_MAILER_TEMPLATES_PHONE_CHANGED_NOTIFICATION` - `string`
Percorso URL di un modello di email da utilizzare quando si notifica a un utente che il suo numero di telefono è stato modificato. (es. `https://www.example.com/path-to-email-template.html`)
Le variabili `Email`, `Phone` e `OldPhone` sono disponibili.
Contenuto predefinito (se il modello non è disponibile):```html
<h2>Your phone number was changed</h2>
<p>The phone number for your account was changed from {{ .OldPhone }} to {{ .Phone }}.</p>
<p>If you didn't make this change, contact support immediately.</p>
```
`GOTRUE_MAILER_NOTIFICATIONS_PHONE_CHANGED_ENABLED` - `bool`
Indica se inviare un'email di notifica quando il numero di telefono di un utente viene modificato. Il valore predefinito è `false`.
`GOTRUE_MAILER_TEMPLATES_IDENTITY_LINKED_NOTIFICATION` - `string`
Percorso URL di un modello di email da utilizzare per notificare a un utente che un metodo di accesso è stato collegato al suo account. (es. `https://www.example.com/path-to-email-template.html`)
Le variabili `Email` e `Provider` sono disponibili.
Contenuto predefinito (se il modello non è disponibile):```html
<h2>A new sign-in method was linked</h2>
<p>Your {{ .Provider }} account was linked as a new sign-in method for {{ .Email }}.</p>
<p>If you didn't make this change, contact support immediately.</p>
```
`GOTRUE_MAILER_NOTIFICATIONS_IDENTITY_LINKED_ENABLED` - `bool`
Se inviare un'email di notifica quando un metodo di accesso viene collegato all'account di un utente. Il valore predefinito è `false`.
`GOTRUE_MAILER_TEMPLATES_IDENTITY_UNLINKED_NOTIFICATION` - `string`
Percorso URL di un modello di email da utilizzare per notificare a un utente che un metodo di accesso è stato rimosso dal suo account. (es. `https://www.example.com/path-to-email-template.html`)
Sono disponibili le variabili `Email` e `Provider`.
Contenuto predefinito (se il modello non è disponibile):```html
<h2>A sign-in method was removed</h2>
<p>Your {{ .Provider }} account was removed as a sign-in method for {{ .Email }}.</p>
<p>If you didn't make this change, contact support immediately.</p>
```
`GOTRUE_MAILER_NOTIFICATIONS_IDENTITY_UNLINKED_ENABLED` - `bool`
---
[Read more](https://github.com/supabase/auth)