@astratra/react
v0.1.1
Published
Primitives React génériques pour sessions, permissions et appels API Astratra.
Readme
@astratra/react
Primitives React optionnelles pour une session, des permissions et des appels API. Le package n'impose ni endpoints, ni routes, ni ecrans, ni design.
Installation
npm install @astratra/react reactSession injectee par l'application
L'application garde le controle de son backend. Elle fournit seulement les fonctions qui lisent, ouvrent et ferment une session :
import { createApiFetch, RequireAuth, SessionProvider, useSession } from '@astratra/react';
const apiFetch = createApiFetch({ baseUrl: import.meta.env.VITE_API_URL });
const getSession = () => apiFetch('/api/auth/session');
const signIn = (credentials) => apiFetch('/api/auth/login', { method: 'POST', body: credentials });
const signOut = () => apiFetch('/api/auth/logout', { method: 'POST' });
function Account() {
const { user, signOut: logout } = useSession();
return <button onClick={logout}>Deconnexion de {user.name}</button>;
}
export function App() {
return (
<SessionProvider getSession={getSession} signIn={signIn} signOut={signOut}>
<RequireAuth fallback={<p>Connexion requise.</p>}><Account /></RequireAuth>
</SessionProvider>
);
}Exports
SessionProvider: gere le chargement et l'etat de session a partir de callbacks fournis par l'application.useSession(): retournestatus,session,user,signIn,signOutetrefresh.useUser(): retourne l'utilisateur connecte ounull.usePermissions(): retournepermissions,has(permission)ethasAny(permissions).RequireAuthetRequireRole: affichent unfallbacklorsque l'acces manque.RequireRolelitsession.roles,user.rolesouuser.role.createApiFetch(): fabrique un client avec cookies HttpOnly et erreursApiError.
Cookies et securite
createApiFetch utilise toujours credentials: 'include'. Le backend doit
configurer CORS, HttpOnly, Secure, SameSite et une protection CSRF adaptee
a son environnement. Astratra ne remplace pas cette configuration —
@astratra/security fournit ces primitives cote backend (voir son README).
Par rapport a @astratra/saas-kit-ui
@astratra/saas-kit-ui expose aussi des primitives de session
(AuthProvider/useAuth), mais avec un choix different : token JWT garde
en memoire JS et attache en Authorization: Bearer, couple a son dashboard
complet AstratraDashboardApp. Ce package-ci (@astratra/react) ne stocke
aucun token cote client — la session reste dans un cookie HttpOnly gere
par le backend — et n'impose ni dashboard ni ecran. Choisis saas-kit-ui si
AstratraDashboardApp te convient tel quel ; choisis @astratra/react si
tu construis ta propre interface par-dessus un backend en sessions cookie
HttpOnly.
