feat: rename ROLE_ADMIN to ROLE_TEAM_ADMIN since being too broad
This commit is contained in:
1 parent
39a343911a
commit
d4908b6ab9
75 files changed
+212
-180
No files matched your search
@@ -200,7 +200,7 @@ class ResponseParser
|
||||
$isHouseManager = true;
|
||||
$hotelCodes[] = $houseManagerCode;
|
||||
}
|
||||
if ($this->config['bpn_crm_id_admin'] === $attribute->getId() && true === $attribute->isSelected()) {
|
||||
if ($this->config['bpn_crm_id_team_admin'] === $attribute->getId() && true === $attribute->isSelected()) {
|
||||
$isAdmin = true;
|
||||
}
|
||||
if ($this->config['bpn_crm_id_manager'] === $attribute->getId() && true === $attribute->isSelected()) {
|
||||
@@ -305,11 +305,11 @@ class ResponseParser
|
||||
private function resolveOptions(array $options): array
|
||||
{
|
||||
$optionsResolver = new OptionsResolver();
|
||||
$optionsResolver->setRequired(['bpn_crm_id_admin', 'bpn_crm_id_manager', 'bpn_crm_id_teamer', 'bpn_crm_house_manager_ids']);
|
||||
$optionsResolver->setRequired(['bpn_crm_id_team_admin', 'bpn_crm_id_manager', 'bpn_crm_id_teamer', 'bpn_crm_house_manager_ids']);
|
||||
$optionsResolver->setDefaults([
|
||||
'bpn_default_hotel_code' => null,
|
||||
]);
|
||||
$optionsResolver->setAllowedTypes('bpn_crm_id_admin', 'int');
|
||||
$optionsResolver->setAllowedTypes('bpn_crm_id_team_admin', 'int');
|
||||
$optionsResolver->setAllowedTypes('bpn_crm_id_manager', 'int');
|
||||
$optionsResolver->setAllowedTypes('bpn_crm_id_teamer', 'int');
|
||||
$optionsResolver->setAllowedTypes('bpn_crm_house_manager_ids', 'array');
|
||||
|
||||
@@ -69,7 +69,7 @@ class UserDataHandler
|
||||
$claimedRoles = [];
|
||||
|
||||
if ($crmAttributes->isAdmin()) {
|
||||
$claimedRoles[] = 'ROLE_ADMIN';
|
||||
$claimedRoles[] = 'ROLE_TEAM_ADMIN';
|
||||
}
|
||||
|
||||
if ($crmAttributes->isManager()) {
|
||||
@@ -370,7 +370,7 @@ class UserDataHandler
|
||||
* The whole policy, in the order it has to run:
|
||||
*
|
||||
* 1. revoke what is no longer claimed - the identity source leads;
|
||||
* 2. drop the super admin flag along with ROLE_ADMIN, or the highest privilege in the
|
||||
* 2. drop the super admin flag along with ROLE_TEAM_ADMIN, or the highest privilege in the
|
||||
* application would outlive the role it depends on;
|
||||
* 3. refresh the pending markers, after the revocation so that a role just revoked is
|
||||
* not immediately marked again - it is unclaimed in both steps;
|
||||
@@ -424,7 +424,7 @@ class UserDataHandler
|
||||
*
|
||||
* Only the roles of User::ROLES are touched: getAssignedRoles() excludes the pending
|
||||
* markers as well as the implicit ROLE_USER, and the markers are dealt with by
|
||||
* refreshPendingRoles(). ROLE_SUPER_ADMIN is not a stored role at all but a flag, so
|
||||
* refreshPendingRoles(). ROLE_TEAM_SUPER_ADMIN is not a stored role at all but a flag, so
|
||||
* it is handled separately below.
|
||||
*
|
||||
* @param string[] $claimedRoles
|
||||
@@ -450,22 +450,22 @@ class UserDataHandler
|
||||
}
|
||||
|
||||
/**
|
||||
* Takes the super admin flag down with ROLE_ADMIN.
|
||||
* Takes the super admin flag down with ROLE_TEAM_ADMIN.
|
||||
*
|
||||
* The flag is stored on its own and getRoles() turns it into ROLE_SUPER_ADMIN whatever
|
||||
* The flag is stored on its own and getRoles() turns it into ROLE_TEAM_SUPER_ADMIN whatever
|
||||
* else the user holds, so without this a person the CRM no longer calls an admin would
|
||||
* keep the one role that outranks every check in the application. User::validateSuperAdmin()
|
||||
* enforces the same rule on the edit form, but only there.
|
||||
*/
|
||||
private function revokeSuperAdminWithoutRoleAdmin(User $user): void
|
||||
{
|
||||
if (false === $user->isSuperAdmin() || true === $user->hasRole('ROLE_ADMIN')) {
|
||||
if (false === $user->isSuperAdmin() || true === $user->hasRole('ROLE_TEAM_ADMIN')) {
|
||||
return;
|
||||
}
|
||||
|
||||
$user->setSuperAdmin(false);
|
||||
|
||||
$this->logger->info('Revoke super admin flag along with ROLE_ADMIN', [
|
||||
$this->logger->info('Revoke super admin flag along with ROLE_TEAM_ADMIN', [
|
||||
'user_id' => $user->getId(),
|
||||
'user_email' => $user->getEmail(),
|
||||
]);
|
||||
|
||||
@@ -16,7 +16,7 @@ class UserController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/autocomplete/user', name: 'app_admin_autocomplete_user')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(Request $request): JsonResponse
|
||||
{
|
||||
try {
|
||||
|
||||
@@ -22,7 +22,7 @@ class ApproveController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/feedback/approve/{uuid}', name: 'app_admin_feedback_approve')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(Feedback $feedback, Request $request): Response
|
||||
{
|
||||
$form = $this->createForm(FeedbackApproveType::class, $feedback);
|
||||
|
||||
@@ -24,7 +24,7 @@ class ProvideController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/feedback/provide', name: 'app_admin_feedback_provide')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(Request $request): Response
|
||||
{
|
||||
$form = $this->getFeedbackForm();
|
||||
@@ -58,7 +58,7 @@ class ProvideController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/feedback/provide/form', name: 'app_admin_feedback_provide_form')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function form(Request $request): Response
|
||||
{
|
||||
$form = $this->getFeedbackForm();
|
||||
|
||||
@@ -21,7 +21,7 @@ class IndexController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin', name: 'app_admin_index')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(): Response
|
||||
{
|
||||
$applicationRepository = $this->entityManager->getRepository(Application::class);
|
||||
|
||||
@@ -20,7 +20,7 @@ class IndexController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/log', name: 'app_admin_log_index')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(Request $request): Response
|
||||
{
|
||||
$qb = $this
|
||||
|
||||
@@ -22,7 +22,7 @@ class CreateController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/system/availability/create', name: 'app_admin_system_availability_create')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(Request $request): Response
|
||||
{
|
||||
$availability = new Availability();
|
||||
|
||||
@@ -21,7 +21,7 @@ class DeleteController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/system/availability/delete/{id}', name: 'app_admin_system_availability_delete', methods: ['POST'])]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(Availability $availability, Request $request): Response
|
||||
{
|
||||
if (true === $request->isMethod('POST')) {
|
||||
|
||||
@@ -22,7 +22,7 @@ class DuplicateController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/system/availability/duplicate/{id}', name: 'app_admin_system_availability_duplicate')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(Availability $availability, Request $request): Response
|
||||
{
|
||||
$copy = Availability::duplicate($availability);
|
||||
|
||||
@@ -22,7 +22,7 @@ class EditController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/system/availability/edit/{id}', name: 'app_admin_system_availability_edit')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(Availability $availability, Request $request): Response
|
||||
{
|
||||
$form = $this->createForm(AvailabilityType::class, $availability);
|
||||
|
||||
@@ -19,7 +19,7 @@ class IndexController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/system/availability', name: 'app_admin_system_availability_index')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(Request $request): Response
|
||||
{
|
||||
$query = $this
|
||||
|
||||
@@ -28,7 +28,7 @@ class EditController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/system/email-text/edit/{key}', name: 'app_admin_system_email_text_edit')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(EmailTextKey $key, Request $request): Response
|
||||
{
|
||||
$definition = $this->catalog->get($key);
|
||||
|
||||
@@ -18,7 +18,7 @@ class IndexController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/system/email-text', name: 'app_admin_system_email_text_index')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(): Response
|
||||
{
|
||||
// The list is driven by the catalogue, not by the table: a mail that has never
|
||||
|
||||
@@ -25,7 +25,7 @@ class PreviewController extends AbstractController
|
||||
* a real mail is being assembled.
|
||||
*/
|
||||
#[Route('/admin/system/email-text/preview/{key}', name: 'app_admin_system_email_text_preview')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(EmailTextKey $key): Response
|
||||
{
|
||||
$definition = $this->catalog->get($key);
|
||||
|
||||
@@ -27,7 +27,7 @@ class PreviewDraftController extends AbstractController
|
||||
* the submitted values instead of the stored ones.
|
||||
*/
|
||||
#[Route('/admin/system/email-text/preview-draft/{key}', name: 'app_admin_system_email_text_preview_draft', methods: ['POST'])]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(EmailTextKey $key, Request $request): Response
|
||||
{
|
||||
$definition = $this->catalog->get($key);
|
||||
|
||||
@@ -25,7 +25,7 @@ class ResetController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/system/email-text/reset/{key}', name: 'app_admin_system_email_text_reset')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(EmailTextKey $key, Request $request): Response
|
||||
{
|
||||
$emailText = $this->emailTextRepository->findByKey($key);
|
||||
|
||||
@@ -22,7 +22,7 @@ class CreateController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/system/fee/create', name: 'app_admin_system_fee_create')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(Request $request): Response
|
||||
{
|
||||
$fee = new Fee();
|
||||
|
||||
@@ -21,7 +21,7 @@ class DeleteController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/system/fee/delete/{id}', name: 'app_admin_system_fee_delete')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(Fee $fee, Request $request): Response
|
||||
{
|
||||
if (true === $request->isMethod('POST')) {
|
||||
|
||||
@@ -22,7 +22,7 @@ class DuplicateController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/system/fee/duplicate/{id}', name: 'app_admin_system_fee_duplicate')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(Fee $fee, Request $request): Response
|
||||
{
|
||||
$copy = Fee::duplicate($fee);
|
||||
|
||||
@@ -22,7 +22,7 @@ class EditController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/system/fee/edit/{id}', name: 'app_admin_system_fee_edit')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(Fee $fee, Request $request): Response
|
||||
{
|
||||
$form = $this->createForm(FeeType::class, $fee);
|
||||
|
||||
@@ -15,7 +15,7 @@ class IndexController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/system/fee', name: 'app_admin_system_fee_index')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(): Response
|
||||
{
|
||||
$fees = $this->feeRepository->getList();
|
||||
|
||||
@@ -21,7 +21,7 @@ class CreateController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/system/feedback-set/create', name: 'app_admin_system_feedback_set_create')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(Request $request): Response
|
||||
{
|
||||
$feedbackSet = new FeedbackSet();
|
||||
|
||||
@@ -21,7 +21,7 @@ class DeleteController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/system/feedback-set/delete/{id}', name: 'app_admin_system_feedback_set_delete')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
#[IsGranted('DELETE', subject: 'feedbackSet')]
|
||||
public function index(FeedbackSet $feedbackSet, Request $request): Response
|
||||
{
|
||||
|
||||
@@ -21,7 +21,7 @@ class EditController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/system/feedback-set/edit/{id}', name: 'app_admin_system_feedback_set_edit')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(FeedbackSet $feedbackSet, Request $request): Response
|
||||
{
|
||||
$form = $this->createForm(FeedbackSetType::class, $feedbackSet);
|
||||
|
||||
@@ -15,7 +15,7 @@ class IndexController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/system/feedback-set', name: 'app_admin_system_feedback_set_index')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(): Response
|
||||
{
|
||||
$feedbackSets = $this
|
||||
|
||||
@@ -21,7 +21,7 @@ class CreateController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/system/job-profile/create', name: 'app_admin_system_job_profile_create')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(Request $request): Response
|
||||
{
|
||||
$jobProfile = new JobProfile();
|
||||
|
||||
@@ -21,7 +21,7 @@ class DeleteController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/system/job-profile/delete/{id}', name: 'app_admin_system_job_profile_delete')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(JobProfile $jobProfile, Request $request): Response
|
||||
{
|
||||
if (true === $request->isMethod('POST')) {
|
||||
|
||||
@@ -21,7 +21,7 @@ class EditController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/system/job-profile/edit/{id}', name: 'app_admin_system_job_profile_edit')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(JobProfile $jobProfile, Request $request): Response
|
||||
{
|
||||
$form = $this->createForm(JobProfileType::class, $jobProfile);
|
||||
|
||||
@@ -15,7 +15,7 @@ class IndexController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/system/job-profile', name: 'app_admin_system_job_profile_index')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(): Response
|
||||
{
|
||||
$jobProfiles = $this
|
||||
|
||||
@@ -22,7 +22,7 @@ class CreateController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/system/training/create', name: 'app_admin_system_training_create')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(Request $request): Response
|
||||
{
|
||||
$training = new Training();
|
||||
|
||||
@@ -21,7 +21,7 @@ class DeleteController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/system/training/delete/{id}', name: 'app_admin_system_training_delete')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(Training $training, Request $request): Response
|
||||
{
|
||||
if (true === $request->isMethod('POST')) {
|
||||
|
||||
@@ -22,7 +22,7 @@ class EditController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/system/training/edit/{id}', name: 'app_admin_system_training_edit')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(Training $training, Request $request): Response
|
||||
{
|
||||
$form = $this->createForm(TrainingType::class, $training);
|
||||
|
||||
@@ -15,7 +15,7 @@ class IndexController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/system/training', name: 'app_admin_system_training_index')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(): Response
|
||||
{
|
||||
$trainings = $this
|
||||
|
||||
@@ -15,7 +15,7 @@ class IndexController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/system/user', name: 'app_admin_system_user_index')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(): Response
|
||||
{
|
||||
$users = $this->userRepository->getAdministrativeUsers();
|
||||
|
||||
@@ -11,7 +11,7 @@ use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
class CrmSelectionsController extends AbstractController
|
||||
{
|
||||
#[Route('/admin/teamer/crm-selections/{uuid}', name: 'app_admin_teamer_crm_selections')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(Teamer $teamer): Response
|
||||
{
|
||||
return $this->render('admin/teamer/crm_selections.html.twig', [
|
||||
|
||||
@@ -23,7 +23,7 @@ class DeleteAccountController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/teamer/delete-account/{uuid}', name: 'app_admin_teamer_delete_account')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(Teamer $teamer, Request $request): Response
|
||||
{
|
||||
if (true === $request->isMethod(Request::METHOD_POST)) {
|
||||
@@ -44,7 +44,7 @@ class DeleteAccountController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/teamer/restore-account/{uuid}', name: 'app_admin_teamer_restore_account')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function restore(Teamer $teamer, Request $request): Response
|
||||
{
|
||||
if (true === $request->isMethod(Request::METHOD_POST)) {
|
||||
|
||||
@@ -22,7 +22,7 @@ class DisableUserController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/teamer/disable-user/{uuid}', name: 'app_admin_teamer_disable_user')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(Teamer $teamer, Request $request): Response
|
||||
{
|
||||
$user = $teamer->getUser();
|
||||
@@ -50,7 +50,7 @@ class DisableUserController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/administrative/teamer/enable-user/{uuid}', name: 'app_admin_teamer_enable_user')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function enable(Teamer $teamer, Request $request): Response
|
||||
{
|
||||
$user = $teamer->getUser();
|
||||
|
||||
@@ -39,7 +39,7 @@ class MailingController extends AbstractController
|
||||
* the real send goes through the confirmation modal below.
|
||||
*/
|
||||
#[Route('/admin/teamer/mailing', name: 'app_admin_teamer_mailing')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(Request $request): Response
|
||||
{
|
||||
$form = $this->createMailingForm($request);
|
||||
@@ -82,7 +82,7 @@ class MailingController extends AbstractController
|
||||
* one that was parked.
|
||||
*/
|
||||
#[Route('/admin/teamer/mailing/draft', name: 'app_admin_teamer_mailing_draft', methods: ['POST'])]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function draft(Request $request): Response
|
||||
{
|
||||
$mailingDto = $this->createMailingForm($request)->getData();
|
||||
@@ -93,7 +93,7 @@ class MailingController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/teamer/mailing/discard', name: 'app_admin_teamer_mailing_discard')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function discard(): Response
|
||||
{
|
||||
$this->draftHandler->resetDraft();
|
||||
@@ -102,7 +102,7 @@ class MailingController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/teamer/mailing/confirm', name: 'app_admin_teamer_mailing_confirm', methods: ['POST'])]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function confirm(Request $request): Response
|
||||
{
|
||||
$form = $this->createMailingForm($request);
|
||||
@@ -119,7 +119,7 @@ class MailingController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/teamer/mailing/send', name: 'app_admin_teamer_mailing_send', methods: ['POST'])]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function send(Request $request): Response
|
||||
{
|
||||
$form = $this->createMailingForm($request);
|
||||
|
||||
@@ -21,7 +21,7 @@ class RemarksController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/teamer/remarks/{uuid}', name: 'app_admin_teamer_remarks_internal')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(Teamer $teamer, Request $request): Response
|
||||
{
|
||||
$returnUrl = $this->getReturnUrl($request, 'app_administrative_teamer_index');
|
||||
|
||||
@@ -25,7 +25,7 @@ class SkillsController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/admin/teamer/skills/{uuid}', name: 'app_admin_teamer_skills')]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(Teamer $teamer, Request $request): Response
|
||||
{
|
||||
$trainings = $this->trainingRepository->getList();
|
||||
|
||||
@@ -34,7 +34,7 @@ class CreateController extends AbstractController
|
||||
path: '/admin/teamer/skills/training-attendance/create/{training_id}/{teamer_id}',
|
||||
name: 'app_admin_teamer_skills_training_attendance_create'
|
||||
)]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(
|
||||
#[MapEntity(mapping: ['training_id' => 'id'])]
|
||||
Training $training,
|
||||
|
||||
@@ -30,7 +30,7 @@ class DeleteController extends AbstractController
|
||||
path: '/admin/teamer/skills/training-attendance/delete/{uuid}',
|
||||
name: 'app_admin_teamer_skills_training_attendance_delete'
|
||||
)]
|
||||
#[IsGranted('ROLE_ADMIN')]
|
||||
#[IsGranted('ROLE_TEAM_ADMIN')]
|
||||
public function index(TrainingAttendance $attendance, Request $request): Response
|
||||
{
|
||||
if (true === $request->isMethod('POST')) {
|
||||
|
||||
+7
-7
@@ -22,7 +22,7 @@ class User implements UserInterface, TimestampableEntityInterface, SoftDeletable
|
||||
* Assignable roles and their labels.
|
||||
*/
|
||||
public const ROLES = [
|
||||
'ROLE_ADMIN' => 'Admin',
|
||||
'ROLE_TEAM_ADMIN' => 'Team Admin',
|
||||
'ROLE_MANAGER' => 'Reisemanager',
|
||||
'ROLE_HOUSE_MANAGER' => 'Hausleitung',
|
||||
'ROLE_TEAMER' => 'Teamer',
|
||||
@@ -35,7 +35,7 @@ class User implements UserInterface, TimestampableEntityInterface, SoftDeletable
|
||||
* a super admin.
|
||||
*/
|
||||
public const PENDING_ROLES = [
|
||||
'ROLE_ADMIN' => 'ROLE_ADMIN_PENDING',
|
||||
'ROLE_TEAM_ADMIN' => 'ROLE_TEAM_ADMIN_PENDING',
|
||||
'ROLE_MANAGER' => 'ROLE_MANAGER_PENDING',
|
||||
'ROLE_HOUSE_MANAGER' => 'ROLE_HOUSE_MANAGER_PENDING',
|
||||
];
|
||||
@@ -194,7 +194,7 @@ class User implements UserInterface, TimestampableEntityInterface, SoftDeletable
|
||||
$roles = ['ROLE_USER', ...$this->roles];
|
||||
|
||||
if (true === $this->isSuperAdmin()) {
|
||||
$roles[] = 'ROLE_SUPER_ADMIN';
|
||||
$roles[] = 'ROLE_TEAM_SUPER_ADMIN';
|
||||
}
|
||||
|
||||
return array_unique($roles);
|
||||
@@ -223,7 +223,7 @@ class User implements UserInterface, TimestampableEntityInterface, SoftDeletable
|
||||
|
||||
/**
|
||||
* The manually assignable roles held by the user, i.e. without the implicit ROLE_USER
|
||||
* and ROLE_SUPER_ADMIN added by getRoles() and without any pending marker. Used to
|
||||
* and ROLE_TEAM_SUPER_ADMIN added by getRoles() and without any pending marker. Used to
|
||||
* edit role assignments: saving them resolves the pending approvals.
|
||||
*/
|
||||
public function getAssignedRoles(): array
|
||||
@@ -283,12 +283,12 @@ class User implements UserInterface, TimestampableEntityInterface, SoftDeletable
|
||||
}
|
||||
|
||||
/**
|
||||
* Super admin is an elevation of ROLE_ADMIN, never a standalone grant.
|
||||
* Super admin is an elevation of ROLE_TEAM_ADMIN, never a standalone grant.
|
||||
*/
|
||||
#[Assert\Callback]
|
||||
public function validateSuperAdmin(ExecutionContextInterface $context): void
|
||||
{
|
||||
if (true === $this->superAdmin && false === in_array('ROLE_ADMIN', $this->roles, true)) {
|
||||
if (true === $this->superAdmin && false === in_array('ROLE_TEAM_ADMIN', $this->roles, true)) {
|
||||
$context
|
||||
->buildViolation('Nur Admins können zu Superadmins ernannt werden.')
|
||||
->atPath('superAdmin')
|
||||
@@ -311,7 +311,7 @@ class User implements UserInterface, TimestampableEntityInterface, SoftDeletable
|
||||
|
||||
public function getDefaultRoute(): string
|
||||
{
|
||||
if ($this->hasRole('ROLE_ADMIN')) {
|
||||
if ($this->hasRole('ROLE_TEAM_ADMIN')) {
|
||||
return 'app_admin_index';
|
||||
} elseif ($this->hasRole('ROLE_MANAGER')) {
|
||||
return 'app_manager_index';
|
||||
|
||||
@@ -67,7 +67,7 @@ class UserType extends AbstractType
|
||||
});
|
||||
|
||||
// Super admin is an elevation of an existing role, never a grant of its own, so the
|
||||
// field exists only for somebody who already holds ROLE_ADMIN - offering it to
|
||||
// field exists only for somebody who already holds ROLE_TEAM_ADMIN - offering it to
|
||||
// anyone else would only produce the violation from User::validateSuperAdmin().
|
||||
// A flag already set without the role is the exception: it has to stay editable, or
|
||||
// that user could not be saved at all until BusPro claims them an admin again.
|
||||
@@ -78,7 +78,7 @@ class UserType extends AbstractType
|
||||
return;
|
||||
}
|
||||
|
||||
if (false === in_array('ROLE_ADMIN', $user->getAssignedRoles(), true) && false === $user->isSuperAdmin()) {
|
||||
if (false === in_array('ROLE_TEAM_ADMIN', $user->getAssignedRoles(), true) && false === $user->isSuperAdmin()) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ abstract class AbstractMenuBuilder
|
||||
* Note that "app_admin_" does not match the shared "app_administrative_" routes.
|
||||
*/
|
||||
protected const AREA_ROUTE_PREFIXES = [
|
||||
'app_admin_' => 'ROLE_ADMIN',
|
||||
'app_admin_' => 'ROLE_TEAM_ADMIN',
|
||||
'app_manager_' => 'ROLE_MANAGER',
|
||||
'app_house_manager_' => 'ROLE_HOUSE_MANAGER',
|
||||
'app_teamer_' => 'ROLE_TEAMER',
|
||||
@@ -29,7 +29,7 @@ abstract class AbstractMenuBuilder
|
||||
* Priority order of the area roles, must stay in sync with User::getDefaultRoute().
|
||||
*/
|
||||
protected const ROLE_PRIORITY = [
|
||||
'ROLE_ADMIN',
|
||||
'ROLE_TEAM_ADMIN',
|
||||
'ROLE_MANAGER',
|
||||
'ROLE_HOUSE_MANAGER',
|
||||
'ROLE_TEAMER',
|
||||
@@ -140,7 +140,7 @@ abstract class AbstractMenuBuilder
|
||||
|
||||
protected function addAdminItem(ItemInterface $menu): void
|
||||
{
|
||||
if ($this->security->isGranted('ROLE_ADMIN')) {
|
||||
if ($this->security->isGranted('ROLE_TEAM_ADMIN')) {
|
||||
$this->addDivider($menu);
|
||||
$menu->addChild('zum Adminbereich', [
|
||||
'route' => 'app_admin_index',
|
||||
|
||||
@@ -32,7 +32,7 @@ class MenuBuilder extends AbstractMenuBuilder
|
||||
public function createMainMenu(array $options): ItemInterface
|
||||
{
|
||||
return match ($this->resolveArea()) {
|
||||
'ROLE_ADMIN' => $this->adminMenuBuilder->createMainMenu($options),
|
||||
'ROLE_TEAM_ADMIN' => $this->adminMenuBuilder->createMainMenu($options),
|
||||
'ROLE_MANAGER' => $this->managerMenuBuilder->createMainMenu($options),
|
||||
'ROLE_HOUSE_MANAGER' => $this->houseManagerMenuBuilder->createMainMenu($options),
|
||||
'ROLE_TEAMER' => $this->teamerMenuBuilder->createMainMenu($options),
|
||||
@@ -43,7 +43,7 @@ class MenuBuilder extends AbstractMenuBuilder
|
||||
public function createTeamerMenu(array $options): ItemInterface
|
||||
{
|
||||
return match ($this->resolveArea()) {
|
||||
'ROLE_ADMIN' => $this->adminMenuBuilder->createTeamerMenu($options),
|
||||
'ROLE_TEAM_ADMIN' => $this->adminMenuBuilder->createTeamerMenu($options),
|
||||
'ROLE_MANAGER' => $this->managerMenuBuilder->createTeamerMenu($options),
|
||||
default => $this->createRootElement(),
|
||||
};
|
||||
|
||||
@@ -7,7 +7,7 @@ use App\Entity\User;
|
||||
abstract class AbstractRequiredTeamerCheck implements RequiredTeamerCheckInterface
|
||||
{
|
||||
private const EXCLUDED_ROLES = [
|
||||
'ROLE_ADMIN',
|
||||
'ROLE_TEAM_ADMIN',
|
||||
'ROLE_MANAGER',
|
||||
'ROLE_HOUSE_MANAGER',
|
||||
];
|
||||
|
||||
@@ -35,7 +35,7 @@ class MyEpAuthenticator extends AbstractAuthenticator
|
||||
* is dropped rather than stored, so that no role this application assigns a meaning
|
||||
* to can be set from the outside.
|
||||
*/
|
||||
private const ELIGIBLE_ROLES = ['ROLE_ADMIN', 'ROLE_TEAMER', 'ROLE_MANAGER', 'ROLE_HOUSE_MANAGER'];
|
||||
private const ELIGIBLE_ROLES = ['ROLE_TEAM_ADMIN', 'ROLE_TEAMER', 'ROLE_MANAGER', 'ROLE_HOUSE_MANAGER'];
|
||||
|
||||
public function __construct(
|
||||
private readonly MyEpClient $client,
|
||||
|
||||
@@ -60,7 +60,7 @@ class DispositionVoter extends Voter
|
||||
static::CONTRACT, static::INVOICE => false === $disposition->isSkipFormalities()
|
||||
&& ($this->security->isGranted('ROLE_ADMINISTRATIVE')
|
||||
|| $this->assertTeamerAccess($token, $disposition)),
|
||||
static::DELETE => $this->security->isGranted('ROLE_ADMIN'),
|
||||
static::DELETE => $this->security->isGranted('ROLE_TEAM_ADMIN'),
|
||||
static::FEEDBACK => false === $disposition->isSkipFormalities()
|
||||
&& ($this->security->isGranted('ROLE_ADMINISTRATIVE')
|
||||
|| $this->assertHouseManagerAccess($token, $disposition)),
|
||||
@@ -162,7 +162,7 @@ class DispositionVoter extends Voter
|
||||
private function assertAdminDocumentUploadAllowed(Disposition $disposition): bool
|
||||
{
|
||||
if (false === $this->security->isGranted('ROLE_ADMINISTRATIVE')
|
||||
&& false === $this->security->isGranted('ROLE_ADMIN')) {
|
||||
&& false === $this->security->isGranted('ROLE_TEAM_ADMIN')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ class FeedbackVoter extends Voter
|
||||
/** @var Feedback $feedback */
|
||||
$feedback = $subject;
|
||||
|
||||
if (in_array('ROLE_ADMIN', $token->getRoleNames())) {
|
||||
if (in_array('ROLE_TEAM_ADMIN', $token->getRoleNames())) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ class ImpersonationVoter extends Voter
|
||||
}
|
||||
|
||||
// Admin is the only role allowed to impersonate
|
||||
if (false === $this->security->isGranted('ROLE_ADMIN')) {
|
||||
if (false === $this->security->isGranted('ROLE_TEAM_ADMIN')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ class AppRuntime implements RuntimeExtensionInterface
|
||||
$user = $teamer->getUser();
|
||||
|
||||
if (null !== $user) {
|
||||
if ($user->hasRole('ROLE_ADMIN')) {
|
||||
if ($user->hasRole('ROLE_TEAM_ADMIN')) {
|
||||
$labelItems[] = 'Admin';
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user