Respect user isolation mode in controllers

Updated DashboardController, DomainController, and NotificationGroupController to conditionally fetch user-specific or global data based on the 'user_isolation_mode' setting. This ensures that data visibility aligns with the configured isolation mode, improving multi-user support and data segregation.
This commit is contained in:
Hosteroid
2025-10-20 18:13:57 +03:00
parent c387e90a19
commit 22817b7127
3 changed files with 30 additions and 11 deletions

View File

@@ -27,17 +27,27 @@ class DashboardController extends Controller
$settingModel = new \App\Models\Setting(); $settingModel = new \App\Models\Setting();
$isolationMode = $settingModel->getValue('user_isolation_mode', 'shared'); $isolationMode = $settingModel->getValue('user_isolation_mode', 'shared');
// Get user-specific statistics (always user-specific) // Get statistics based on isolation mode
$stats = $this->domainModel->getStatistics($userId); if ($isolationMode === 'isolated') {
$recentDomains = $this->domainModel->getRecent(5, $userId); $stats = $this->domainModel->getStatistics($userId);
$groups = $this->groupModel->getAllWithChannelCount($userId); $recentDomains = $this->domainModel->getRecent(5, $userId);
$groups = $this->groupModel->getAllWithChannelCount($userId);
} else {
$stats = $this->domainModel->getStatistics();
$recentDomains = $this->domainModel->getRecent(5);
$groups = $this->groupModel->getAllWithChannelCount();
}
// Get expiring threshold from settings // Get expiring threshold from settings
$notificationDays = $settingModel->getNotificationDays(); $notificationDays = $settingModel->getNotificationDays();
$expiringThreshold = !empty($notificationDays) ? max($notificationDays) : 30; $expiringThreshold = !empty($notificationDays) ? max($notificationDays) : 30;
// Get expiring domains limited to top 5 // Get expiring domains limited to top 5
$allExpiringDomains = $this->domainModel->getExpiringDomains($expiringThreshold, $userId); if ($isolationMode === 'isolated') {
$allExpiringDomains = $this->domainModel->getExpiringDomains($expiringThreshold, $userId);
} else {
$allExpiringDomains = $this->domainModel->getExpiringDomains($expiringThreshold);
}
$expiringThisMonth = array_slice($allExpiringDomains, 0, 5); $expiringThisMonth = array_slice($allExpiringDomains, 0, 5);
$recentLogs = $this->logModel->getRecent(10); $recentLogs = $this->logModel->getRecent(10);

View File

@@ -50,11 +50,16 @@ class DomainController extends Controller
]; ];
// Get filtered and paginated domains using model // Get filtered and paginated domains using model
$result = $this->domainModel->getFilteredPaginated($filters, $sortBy, $sortOrder, $page, $perPage, $expiringThreshold, $userId); $result = $this->domainModel->getFilteredPaginated($filters, $sortBy, $sortOrder, $page, $perPage, $expiringThreshold, $isolationMode === 'isolated' ? $userId : null);
// Get groups and tags (always user-specific) // Get groups and tags based on isolation mode
$groups = $this->groupModel->getAllWithChannelCount($userId); if ($isolationMode === 'isolated') {
$allTags = $this->domainModel->getAllTags($userId); $groups = $this->groupModel->getAllWithChannelCount($userId);
$allTags = $this->domainModel->getAllTags($userId);
} else {
$groups = $this->groupModel->getAllWithChannelCount();
$allTags = $this->domainModel->getAllTags();
}
// Format domains for display // Format domains for display
$formattedDomains = \App\Helpers\DomainHelper::formatMultiple($result['domains']); $formattedDomains = \App\Helpers\DomainHelper::formatMultiple($result['domains']);

View File

@@ -24,8 +24,12 @@ class NotificationGroupController extends Controller
$settingModel = new \App\Models\Setting(); $settingModel = new \App\Models\Setting();
$isolationMode = $settingModel->getValue('user_isolation_mode', 'shared'); $isolationMode = $settingModel->getValue('user_isolation_mode', 'shared');
// Get groups (always user-specific) // Get groups based on isolation mode
$groups = $this->groupModel->getAllWithChannelCount($userId); if ($isolationMode === 'isolated') {
$groups = $this->groupModel->getAllWithChannelCount($userId);
} else {
$groups = $this->groupModel->getAllWithChannelCount();
}
// Get users for transfer functionality (admin only) // Get users for transfer functionality (admin only)
$users = []; $users = [];