get applications access per organization
This commit is contained in:
parent
cde6c529a9
commit
2e99457e16
|
|
@ -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`
|
||||
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -459,4 +459,6 @@ readonly class UserOrganizationService
|
|||
return $userToOrgs;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue