feat: make admin users hotel managers with configurable hotel code
This commit is contained in:
@@ -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]
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
@@ -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)]
|
||||
|
||||
Reference in New Issue
Block a user