Implementa la voce "Dashboard amministratore" della roadmap v1.1, come descritta in docs/modules/profilo-giocatore.md, insieme alla parte di profilo che la alimenta. - /admin: stato dei profili della squadra, download di documento, certificato e foto tessera, export CSV con i 12 campi del tesseramento CSI. Un certificato scaduto non conta come valido. - Profilo giocatore: dati personali, documento (fronte e retro), certificato e foto tessera, con widget di completamento in Home che sparisce al 100%. - I permessi di amministrazione arrivano da user_roles (DD-011) e non più dalla lista di nomi in crapp-data.ts, che resta come ponte finché VITE_AUTH_OBBLIGATORIA non viene acceso in produzione. - Login Google via Supabase Auth: al primo accesso l'account si collega a uno slot libero di giocatori_squadra, e il vincolo lo fa rispettare il trigger di M1 (DD-016 regola 2). Migration additive: M2 crea profili_giocatore, M3 il bucket privato profili-giocatore. Nessuna tabella v1.0 viene toccata, quindi si possono applicare senza cambiare il comportamento attuale dell'app. supabase/config.toml e seed.sql configurano lo stack locale: serve perché il progetto Supabase è uno solo, condiviso tra sviluppo e produzione. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
23 lines
866 B
TOML
23 lines
866 B
TOML
project_id = "kfkcldwncxqaixetsjes"
|
|
|
|
# Configurazione dell'istanza locale (`supabase start`). Non tocca il progetto cloud:
|
|
# lì le stesse impostazioni si mettono dalla dashboard Supabase.
|
|
|
|
[auth]
|
|
site_url = "http://localhost:8080"
|
|
additional_redirect_urls = ["http://localhost:8080"]
|
|
|
|
# Accesso via email con Mailpit (http://127.0.0.1:54324) per le prove locali:
|
|
# nessuna mail esce dalla macchina e non serve confermare l'indirizzo.
|
|
[auth.email]
|
|
enable_signup = true
|
|
enable_confirmations = false
|
|
|
|
# Google in locale: metti client id e secret in `.env` e porta `enabled` a true.
|
|
# Il redirect da registrare in Google Cloud è http://127.0.0.1:54321/auth/v1/callback,
|
|
# che convive con quello di produzione sulla stessa credenziale.
|
|
[auth.external.google]
|
|
enabled = false
|
|
client_id = "env(SUPABASE_AUTH_GOOGLE_CLIENT_ID)"
|
|
secret = "env(SUPABASE_AUTH_GOOGLE_SECRET)"
|