Skip to content

Multi-Sites & Zones

XetaSuite is designed to manage multiple sites (multi-tenant), each with its own zones, equipment and permissions.

Organization
└── Sites
├── Headquarters (is_headquarters = true)
│ └── Manages Companies globally
└── Regular Sites
└── Zones (nested)
└── Materials
├── Maintenances
├── Incidents
└── Cleanings
ResourceDescription
CompaniesPart suppliers and/or maintenance contractors
class CompanyPolicy
{
public function before(User $user, string $ability): ?bool
{
// Block access if user is not on headquarters
if (! isOnHeadquarters()) {
return false;
}
return null; // Continue to permission check
}
}

Users can switch sites via the SiteSwitcher:

// Frontend - SiteSwitcher.tsx
const handleSiteChange = async (site: UserSite) => {
await switchSite(site.id); // PATCH /api/v1/user/site
window.location.reload(); // Reload permissions
};
interface User {
id: number;
current_site_id?: number;
roles: string[]; // Roles for current site
permissions: string[]; // Permissions for current site
sites: UserSite[]; // All accessible sites
}
interface UserSite {
id: number;
name: string;
is_headquarters: boolean;
}