Files
breadcrumb-the-shire/lib/Service/Auth/AuthSessionTenantContextService.php

48 lines
1.6 KiB
PHP
Raw Normal View History

2026-03-06 00:44:52 +01:00
<?php
namespace MintyPHP\Service\Auth;
use MintyPHP\Http\SessionStoreInterface;
2026-03-14 21:45:58 +01:00
use MintyPHP\Service\Bookmark\BookmarkService;
2026-03-06 00:44:52 +01:00
use MintyPHP\Service\User\UserTenantContextService;
class AuthSessionTenantContextService
{
public function __construct(
private readonly UserTenantContextService $userTenantContextService,
2026-03-14 21:45:58 +01:00
private readonly BookmarkService $bookmarkService,
2026-03-06 00:44:52 +01:00
private readonly SessionStoreInterface $sessionStore
) {
}
public function hydrateForUser(int $userId): void
{
if ($userId <= 0) {
return;
}
$availableTenants = $this->userTenantContextService->getAvailableTenants($userId);
$this->sessionStore->set('available_tenants', $availableTenants);
$this->sessionStore->set('available_departments_by_tenant', $this->userTenantContextService->getAvailableDepartmentsByTenant($userId));
2026-03-14 21:45:58 +01:00
$this->sessionStore->set('user_bookmarks', $this->bookmarkService->listGroupedForUser($userId));
2026-03-06 00:44:52 +01:00
if (!$availableTenants) {
$this->sessionStore->set('no_active_tenant', true);
$this->sessionStore->remove('current_tenant');
return;
}
$this->sessionStore->set('no_active_tenant', false);
// If the DB has no preferred tenant stored, fall back to the first available one.
$currentTenant = $this->userTenantContextService->getCurrentTenant($userId);
if (!$currentTenant) {
$currentTenant = $availableTenants[0];
}
if ($currentTenant) {
$this->sessionStore->set('current_tenant', $currentTenant);
}
}
}