Les utilisateurs Classeo étaient limités à un seul rôle, alors que dans la réalité scolaire un directeur peut aussi être enseignant, ou un parent peut avoir un rôle vie scolaire. Cette limitation obligeait à créer des comptes distincts par fonction. Le modèle User supporte désormais plusieurs rôles simultanés avec basculement via le header. L'admin peut attribuer/retirer des rôles depuis l'interface de gestion, avec des garde-fous : pas d'auto- destitution, pas d'escalade de privilèges (seul SUPER_ADMIN peut attribuer SUPER_ADMIN), vérification du statut actif pour le switch de rôle, et TTL explicite sur le cache de rôle actif.
32 lines
784 B
Svelte
32 lines
784 B
Svelte
<script lang="ts">
|
|
import '../app.css';
|
|
import { browser } from '$app/environment';
|
|
import { QueryClient, QueryClientProvider } from '@tanstack/svelte-query';
|
|
import { onLogout } from '$lib/auth/auth.svelte';
|
|
import { resetRoleContext } from '$features/roles/roleContext.svelte';
|
|
|
|
let { children } = $props();
|
|
|
|
const queryClient = $state(
|
|
new QueryClient({
|
|
defaultOptions: {
|
|
queries: {
|
|
enabled: browser,
|
|
staleTime: 1000 * 60 * 5, // 5 minutes
|
|
retry: 1
|
|
}
|
|
}
|
|
})
|
|
);
|
|
|
|
// Clear user-specific caches on logout to prevent cross-account data leakage
|
|
onLogout(() => {
|
|
queryClient.removeQueries({ queryKey: ['sessions'] });
|
|
resetRoleContext();
|
|
});
|
|
</script>
|
|
|
|
<QueryClientProvider client={queryClient}>
|
|
{@render children()}
|
|
</QueryClientProvider>
|