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 — Form predefinito di login/registrazione con supporto OAuth
  • Simulazione dei ruoli — Testa ruoli diversi senza effettuare il logout

L’hook useRebaseAuthController è il nucleo 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 navigation controller di Rebase per proteggere l’intero pannello di amministrazione dietro autenticazione.

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

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

La vista di login gestisce:

  • Login e registrazione con email/password
  • Accesso OAuth con Google, GitHub e LinkedIn (quando configurato)
  • Flusso di reimpostazione della password
  • Validazione del form e stati di errore

I ruoli vengono memorizzati come colonna array text[] direttamente nella tabella rebase.users. Puoi definire i ruoli disponibili come enum nella definizione della tua collection users:

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 collection users e rigenera lo schema.

In modalità sviluppatore, puoi simulare ruoli diversi senza effettuare il logout. Questo è utile per testare le policy 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");