boot(); } $extensions = $discoveryService->getFormExtensions(); if (!empty($extensions)) { $extensionComponents = []; foreach ($extensions as $extension) { if (isset($extension['components']) && is_callable($extension['components'])) { $components = $extension['components'](); if (is_array($components)) { $extensionComponents = array_merge($extensionComponents, $components); } } } if (!empty($extensionComponents)) { \Log::debug('Injecting DNS form extensions', [ 'component_count' => count($extensionComponents), 'extension_count' => count($extensions), ]); $schema = $schema->components([ ...$schema->getComponents(), ...$extensionComponents, ]); } } } catch (\Exception $e) { Log::debug('Could not load DNS form extensions: ' . $e->getMessage()); } } return $schema; } public static function table(Table $table): Table { return DomainsTable::configure($table); } public static function getRelations(): array { return [ // ]; } public static function getEloquentQuery(): Builder { $query = parent::getEloquentQuery(); $user = auth()->user(); // If no user is logged in, return empty query if (!$user) { return $query->whereRaw('1 = 0'); } // System admins can see all domains if ($user->isSystemAdmin()) { return $query; } // Domain admins only see domains they're assigned to if ($user->isDomainAdmin()) { return $query->whereHas('administrators', function ($q) use ($user) { $q->where('user_id', $user->id) ->where('role', 'domain_admin'); }); } // Domain users shouldn't see any domains return $query->whereRaw('1 = 0'); } public static function getNavigationBadgeColor(): ?string { return 'primary'; } public static function getNavigationBadgeTooltip(): ?string { $user = auth()->user(); if (!$user) { return null; } if ($user->isSystemAdmin()) { return 'Total number of domains in the system'; } if ($user->isDomainAdmin()) { return 'Total number of domains you administer'; } return null; } // Hide navigation item for domain-users public static function shouldRegisterNavigation(): bool { $user = auth()->user(); // Hide for domain-user if (!$user || $user->isDomainUser()) { return false; } return true; } public static function getPages(): array { return [ 'index' => ListDomains::route('/'), //'dmarc' => GenerateDmarcPage::route('/dmarc'), 'generateDmarc' => GenerateDmarcPage::route('/{domain}/generate-dmarc'), 'generateSpf' => GenerateSpfPage::route('/{domain}/generate-spf'), //'create' => CreateDomain::route('/create'), //'edit' => EditDomain::route('/{record}/edit'), ]; } public static function getGloballySearchableAttributes(): array { return ['domain']; } }