Introduce PocketBase come sostituto di Supabase solo per l'ambiente di sviluppo locale (docs/PORTABILITA.md): docker-compose.pocketbase.yml, schema iniziale in pocketbase/pb_migrations/ (collection equivalenti alle tabelle Supabase, con le stesse API rule dove esprimibili) e la logica procedurale che in Postgres viveva in trigger/funzioni riscritta come hook JS in pocketbase/pb_hooks/ (claim slot giocatore, blocco autovoto, convocati/pagelle chiuse, immutabilità di risposto_il). Il superuser e il provider Google OAuth2 si ricreano da soli a ogni avvio da variabili d'ambiente (script scripts/pocketbase-reset.sh), così un reset non richiede passaggi manuali da dashboard. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
24 lines
837 B
JavaScript
24 lines
837 B
JavaScript
/// <reference path="../pb_data/types.d.ts" />
|
|
//
|
|
// Il Client ID/Secret di Google OAuth2 configurati da dashboard vivono in pb_data e
|
|
// andrebbero persi a ogni "npm run pocketbase:reset" (azzera pb_data). Questo hook li
|
|
// reimposta a ogni avvio da variabili d'ambiente (mai committate, solo in .env), così
|
|
// sopravvivono al reset senza reinserirli a mano ogni volta dalla dashboard.
|
|
|
|
onBootstrap((e) => {
|
|
e.next();
|
|
|
|
const clientId = $os.getenv("GOOGLE_OAUTH_CLIENT_ID");
|
|
const clientSecret = $os.getenv("GOOGLE_OAUTH_CLIENT_SECRET");
|
|
if (!clientId || !clientSecret) {
|
|
return;
|
|
}
|
|
|
|
const collection = e.app.findCollectionByNameOrId("users");
|
|
collection.oauth2.enabled = true;
|
|
collection.oauth2.providers = [
|
|
{ name: "google", clientId: clientId, clientSecret: clientSecret },
|
|
];
|
|
e.app.save(collection);
|
|
});
|