Aller au contenu principal

Déconnexion

Votre utilisateur est connecté, mais il faut aussi lui offrir la possibilité de se déconnecter.

Exercice

Supprimer la session au clic sur le bouton déconnexion

Guide

💿 Supprimer la session

Dans le cas de la déconnexion, nous pouvons simplement créer une route ressource app/routes/api.logout.ts et créer une action qui va détruire la session et rediriger vers la page principale du site

Voir une solution
app/routes/api.logout.ts
export const action = async ({ request }: ActionArgs) => {
const session = await getSession(request.headers.get("Cookie"));
return redirect("/", {
headers: {
"Set-Cookie": await destroySession(session),
},
});
};

💿 Ajouter un bouton de déconnexion

Si l'utilisateur est connecté, nous allons ajouter un bouton dans notre interface pour la déconnexion. Pour cela il nous suffit d'ajouter un petit formulaire qui appellera notre route /api/logout en POST.

Voir une solution
app/routes/_layout.tsx
export default function Layout() {
const { playlists, isLogged } = useLoaderData<typeof loader>();

return (
<div className="grid h-full grid-cols-4 xl:grid-cols-5">
<aside>
<div className="flex items-center justify-between px-8 py-6">
<p className="title-1 flex items-center space-x-2">
<MusicIcon className="h-6 w-6" />
<span>Remix</span>
</p>
{isLogged && (
<Form method="post" action="/api/logout" className="flex">
<button type="submit">
<span className="sr-only">Logout</span>
<ExitIcon className="h-6 w-6" />
</button>
</Form>
)}
</div>
...
</aside>
...
</div>
);
}
👏 Votre utilisateur peut maintenant se déconnecter

Tu as presque fini :)