Multi-Sites & Zones
XetaSuite is designed to manage multiple sites (multi-tenant), each with its own zones, equipment and permissions.
Entity Hierarchy
Section titled “Entity Hierarchy”Organization└── Sites ├── Headquarters (is_headquarters = true) │ └── Manages Companies globally │ └── Regular Sites └── Zones (nested) └── Materials ├── Maintenances ├── Incidents └── CleaningsHeadquarters Site
Section titled “Headquarters Site”HQ-Only Resources
Section titled “HQ-Only Resources”| Resource | Description |
|---|---|
| Companies | Part suppliers and/or maintenance contractors |
Policy Protection
Section titled “Policy Protection”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 }}Site Switching
Section titled “Site Switching”Users can switch sites via the SiteSwitcher:
// Frontend - SiteSwitcher.tsxconst handleSiteChange = async (site: UserSite) => { await switchSite(site.id); // PATCH /api/v1/user/site window.location.reload(); // Reload permissions};User Data Structure
Section titled “User Data Structure”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;}Next Steps
Section titled “Next Steps”- User Management - Create and manage users
- Role Management - Configure roles per site