feat: make admin users hotel managers with configurable hotel code

This commit is contained in:
Björn Fromme
2023-12-01 14:09:49 +01:00
parent ec22e31eb9
commit 9b4f100bb1
4 changed files with 20 additions and 8 deletions
+5 -2
View File
@@ -46,10 +46,13 @@ APP_BPN_USER=
APP_BPN_PASSWORD=
APP_BPN_ENDPOINT=
# This hotel code will be assigned to admin users together with ROLE_HOTEL_MANAGER
# in dev and staging environments for testing purposes
APP_BPN_DEFAULT_HOTEL_CODE=
APP_BPN_CRM_ID_ADMIN=1292
APP_BPN_CRM_ID_MANAGER=1293
APP_BPN_CRM_ID_HOUSE_MANAGER=9999
APP_BPN_CRM_ID_TEAMER=1070
APP_DEFAULT_EMAIL_FROM=[email protected]
APP_DEFAULT_EMAIL_TO=[email protected]
APP_DEFAULT_EMAIL_TO=[email protected]
+2 -2
View File
@@ -5,8 +5,8 @@ parameters:
bpn_crm_id_admin: '%env(int:APP_BPN_CRM_ID_ADMIN)%'
bpn_crm_id_manager: '%env(int:APP_BPN_CRM_ID_MANAGER)%'
bpn_crm_id_house_manager: '%env(int:APP_BPN_CRM_ID_HOUSE_MANAGER)%'
bpn_crm_id_teamer: '%env(int:APP_BPN_CRM_ID_TEAMER)%'
bpn_default_hotel_code: '%env(default::APP_BPN_DEFAULT_HOTEL_CODE)%'
default_email_from: '%env(APP_DEFAULT_EMAIL_FROM)%'
default_email_to: '%env(APP_DEFAULT_EMAIL_TO)%'
@@ -51,8 +51,8 @@ services:
$options:
bpn_crm_id_admin: '%bpn_crm_id_admin%'
bpn_crm_id_manager: '%bpn_crm_id_manager%'
bpn_crm_id_house_manager: '%bpn_crm_id_house_manager%'
bpn_crm_id_teamer: '%bpn_crm_id_teamer%'
bpn_default_hotel_code: '%bpn_default_hotel_code%'
App\Twig\AppRuntime:
arguments:
+11 -2
View File
@@ -171,6 +171,12 @@ class ResponseParser
$groups[] = $group;
}
// Apply additional role and hotel code for testing purposes when provided
if ($isAdmin && null !== $this->config['bpn_default_hotel_code']) {
$isHouseManager = true;
$hotelCode = $this->config['bpn_default_hotel_code'];
}
$response = new CrmAttributesResponse();
$response
->setAttributeGroups($groups)
@@ -252,11 +258,14 @@ class ResponseParser
private function resolveOptions(array $options): array
{
$optionsResolver = new OptionsResolver();
$optionsResolver->setRequired(['bpn_crm_id_admin', 'bpn_crm_id_manager', 'bpn_crm_id_house_manager', 'bpn_crm_id_teamer']);
$optionsResolver->setRequired(['bpn_crm_id_admin', 'bpn_crm_id_manager', 'bpn_crm_id_teamer']);
$optionsResolver->setDefaults([
'bpn_default_hotel_code' => null,
]);
$optionsResolver->setAllowedTypes('bpn_crm_id_admin', 'int');
$optionsResolver->setAllowedTypes('bpn_crm_id_manager', 'int');
$optionsResolver->setAllowedTypes('bpn_crm_id_house_manager', 'int');
$optionsResolver->setAllowedTypes('bpn_crm_id_teamer', 'int');
$optionsResolver->setAllowedTypes('bpn_default_hotel_code', ['string', 'null']);
return $optionsResolver->resolve($options);
}
+2 -2
View File
@@ -42,10 +42,10 @@ class User implements UserInterface, TimestampableEntityInterface
#[ORM\Column(nullable: true)]
private ?\DateTimeImmutable $lastLoginAt = null;
#[ORM\OneToOne(inversedBy: 'user', cascade: ['persist', 'remove'])]
#[ORM\OneToOne(inversedBy: 'user', cascade: ['all'])]
private ?Teamer $teamer = null;
#[ORM\OneToOne(inversedBy: 'user', cascade: ['persist', 'remove'])]
#[ORM\OneToOne(inversedBy: 'user', cascade: ['all'])]
private ?Contact $contact = null;
#[ORM\Column(length: 32, nullable: true)]