Salta ai contenuti

Autenticazione e Login

Rebase fornisce componenti e hook React pronti all’uso per l’autenticazione:

  • useRebaseAuthController — Gestisce lo stato di autenticazione, i token e la persistenza della sessione
  • LoginView — Modulo di login/registrazione predefinito con supporto OAuth
  • Simulazione dei ruoli — Testa ruoli diversi senza disconnetterti

L’hook useRebaseAuthController è il cuore dell’autenticazione frontend. Gestisce l’utente corrente, i token e la sessione:

import { useRebaseAuthController } from "@rebasepro/app";
import { createRebaseClient } from "@rebasepro/client";
const client = createRebaseClient({ baseUrl: API_URL, websocketUrl: WS_URL });
const authController = useRebaseAuthController({
client,
googleClientId: GOOGLE_CLIENT_ID // Optional — enables Google OAuth
});
// Available properties:
authController.user // Current user object (or null)
authController.initialLoading // True while checking stored session
authController.signOut() // Log out
authController.getAuthToken() // Get current JWT for API calls

Passa l’authController al controller di navigazione di Rebase per proteggere l’intero pannello di amministrazione dietro l’autenticazione.

Il componente LoginView fornisce un modulo completo di login e registrazione:

import { LoginView } from "@rebasepro/app";
if (!authController.user) {
return (
<LoginView
authController={authController}
googleClientId={GOOGLE_CLIENT_ID}
/>
);
}

La vista di login gestisce:

  • Login e registrazione con email/password
  • Accesso con Google OAuth (quando configurato)
  • Flusso di reimpostazione password
  • Validazione del modulo e stati di errore

I ruoli sono archiviati come colonna array text[] direttamente sulla tabella rebase.users. Definisci i ruoli disponibili come enum nella definizione della tua collezione utenti:

roles: {
name: "Roles",
type: "array",
columnType: "text[]",
of: {
name: "Role",
type: "string",
enum: {
admin: "Admin",
editor: "Editor",
viewer: "Viewer"
}
},
admin: {
readOnly: false
}
}

Per aggiungere o rimuovere opzioni di ruolo, aggiorna la mappa enum nella tua collezione utenti e rigenera lo schema.

In modalità sviluppatore, puoi simulare ruoli diversi senza disconnetterti. Questo è utile per testare le politiche RLS:

import { useBuildEffectiveRoleController } from "@rebasepro/app";
const effectiveRoleController = useBuildEffectiveRoleController();
// When active, the UI behaves as if the current user has this role
effectiveRoleController.setEffectiveRole("editor");