get applications access per organization

This commit is contained in:
Charles 2025-07-29 16:33:16 +02:00
parent cde6c529a9
commit 2e99457e16
4 changed files with 47 additions and 2 deletions

View File

@ -25,6 +25,10 @@
php bin/console importmap:require choices.js
php bin/console importmap:require choices.js/public/assets/styles/choices.min.css
```
### Notes
- certaines abbreviations sont utilisées afin de simplifier le code et d'éviter les répétitions ou noms trop longs :
- `uo` pour `User Organization`
- `uoId` pour `User Organization Id`
- `oa` pour `Organization Application`
- `at` pour `Access Token`

View File

@ -2,6 +2,7 @@
namespace App\Controller;
use App\Entity\Apps;
use App\Entity\Roles;
use App\Entity\UsersOrganizations;
use App\Service\OrganizationsService;
@ -73,6 +74,10 @@ class OrganizationController extends AbstractController
$adminUsers = $this->entityManager->getRepository(UsersOrganizations::class)->getAdminUsersByOrganization($organization);
// reusing the method to avoid code duplication even though it returns an array of UsersOrganizations
$org = $this->usersOrganizationService->findActiveUsersByOrganizations([$organization]);
// get all applications
$applications = $this->organizationsService->getApplicationsWithAccessStatus($organization);
}else{
throw $this->createNotFoundException(self::ACCESS_DENIED);
}
@ -82,6 +87,7 @@ class OrganizationController extends AbstractController
'adminUsers' => $adminUsers,
'newUsers' => $newUsers,
'org' => $org[0],
'applications' => $applications,
]);
}

View File

@ -2,6 +2,7 @@
namespace App\Service;
use App\Entity\Apps;
use App\Entity\Organizations;
use App\Entity\Roles;
use App\Entity\UsersOrganizations;
@ -25,4 +26,36 @@ class OrganizationsService
'isActive' => true]);
}
/**
* Get all applications with organization access status
*
* @param Organizations $organization
* @return array
*/
public function getApplicationsWithAccessStatus(Organizations $organization): array
{
// Get all applications
$allApplications = $this->entityManager->getRepository(Apps::class)->findAll();
// Get applications the organization has access to
$organizationApps = $organization->getApps();
// Create a lookup array for faster checking
$orgAppIds = [];
foreach ($organizationApps as $app) {
$orgAppIds[$app->getId()] = true;
}
// Build result array
$result = [];
foreach ($allApplications as $app) {
$result[] = [
'application' => $app,
'has_access' => isset($orgAppIds[$app->getId()])
];
}
return $result;
}
}

View File

@ -459,4 +459,6 @@ readonly class UserOrganizationService
return $userToOrgs;
}
}