Skip to content

Multi-Sites & Zones

XetaSuite est conçu pour gérer plusieurs sites (multi-tenant), chacun avec ses propres zones, équipements et permissions.

Organisation
└── Sites
├── Siège (is_headquarters = true)
│ └── Gère les Companies globalement
└── Sites réguliers
└── Zones (imbriquées)
└── Matériels
├── Maintenances
├── Incidents
└── Nettoyages
RessourceDescription
CompaniesFournisseurs de pièces et/ou maintenanciers
class CompanyPolicy
{
public function before(User $user, string $ability): ?bool
{
// Bloque l'accès si l'utilisateur n'est pas sur le siège
if (! isOnHeadquarters()) {
return false;
}
return null; // Continue vers la vérification de permission
}
}

Les utilisateurs peuvent changer de site via le SiteSwitcher :

// Frontend - SiteSwitcher.tsx
const handleSiteChange = async (site: UserSite) => {
await switchSite(site.id); // PATCH /api/v1/user/site
window.location.reload(); // Recharge les permissions
};
interface User {
id: number;
current_site_id?: number;
roles: string[]; // Rôles du site actuel
permissions: string[]; // Permissions du site actuel
sites: UserSite[]; // Tous les sites accessibles
}
interface UserSite {
id: number;
name: string;
is_headquarters: boolean;
}