Skip to content
This repository has been archived by the owner on Aug 9, 2021. It is now read-only.

Commit

Permalink
fix(invitation): incomplete URL in qr code
Browse files Browse the repository at this point in the history
by the way, factorized the code

Signed-off-by: Thierry Bugier <tbugier@teclib.com>
  • Loading branch information
btry authored and DIOHz0r committed Mar 28, 2018
1 parent 2739200 commit 7a9e9f9
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 34 deletions.
54 changes: 37 additions & 17 deletions inc/invitation.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -305,23 +305,7 @@ public function getUser() {
protected function createQRCodeDocument(User $user, $invitationToken, $entities_id) {
global $CFG_GLPI;

$entityConfig = new PluginFlyvemdmEntityConfig();
$entityConfig->getFromDBByCrit(['entities_id' => $entities_id]);

$personalToken = User::getToken($user->getID(), 'api_token');
$enrollmentData = [
'url' => rtrim($CFG_GLPI["url_base_api"], '/'),
'user_token' => $personalToken,
'invitation_token' => $invitationToken,
'support_name' => $entityConfig->getField('support_name'),
'support_phone' => $entityConfig->getField('support_phone'),
'support_website' => $entityConfig->getField('support_website'),
'support_email' => $entityConfig->getField('support_email'),
//'support_address' => $entityConfig->getField('support_address'),
];

$encodedRequest = PluginFlyvemdmNotificationTargetInvitation::DEEPLINK
. base64_encode(addcslashes(implode(';', $enrollmentData), '\;'));
$encodedRequest = $this->getEnrollmentUrl($user, $invitationToken, $entities_id);

// Generate a QRCode
$barcodeobj = new TCPDF2DBarcode($encodedRequest, 'QRCODE,L');
Expand Down Expand Up @@ -361,6 +345,42 @@ protected function createQRCodeDocument(User $user, $invitationToken, $entities_
return $documentId;
}

/**
* Generates the enrollment URL for the invitation
* @param User $user Recipient of the QR code
* @param string $invitationToken Invitation token
* @param $entities_id
* @return string
*/
public function getEnrollmentUrl(User $user, $invitationToken, $entities_id) {
global $CFG_GLPI;

// Get the general config of Flyve MDM
$config = Config::getConfigurationValues('flyvemdm', ['invitation_deeplink']);

// Get the entitiy configuration data
$entityConfig = new PluginFlyvemdmEntityConfig();
$entityConfig->getFromDBByCrit([
'entities_id' => $entities_id
]);

// Build the data of the deeplink
$personalToken = User::getToken($user->getID(), 'api_token');
$enrollmentData = [
'url' => rtrim($CFG_GLPI['url_base_api'], '/'),
'user_token' => $personalToken,
'invitation_token' => $invitationToken,
'support_name' => $entityConfig->getField('support_name'),
'support_phone' => $entityConfig->getField('support_phone'),
'support_website' => $entityConfig->getField('support_website'),
'support_email' => $entityConfig->getField('support_email'),
//'support_address' => $entityConfig->getField('support_address'),
];

return $config['invitation_deeplink'] . PluginFlyvemdmNotificationTargetInvitation::DEEPLINK
. base64_encode(addcslashes(implode(';', $enrollmentData), '\;'));
}

/**
* Sends an invitation
*/
Expand Down
22 changes: 5 additions & 17 deletions inc/notificationtargetinvitation.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -105,23 +105,11 @@ public static function getAdditionalDatasForTemplate(NotificationTarget $event)

// Get the entitiy configuration data
$entityConfig = new PluginFlyvemdmEntityConfig();
$entityConfig->getFromDBByCrit(['entities_id' => $event->obj->getField('entities_id')]);

// Build the data of the deeplink
$personalToken = User::getToken($invitation->getField('users_id'), 'api_token');
$enrollmentData = [
'url' => rtrim($CFG_GLPI['url_base_api'], '/'),
'user_token' => $personalToken,
'invitation_token' => $invitation->getField('invitation_token'),
'support_name' => $entityConfig->getField('support_name'),
'support_phone' => $entityConfig->getField('support_phone'),
'support_website' => $entityConfig->getField('support_website'),
'support_email' => $entityConfig->getField('support_email'),
//'support_address' => $entityConfig->getField('support_address'),
];

$encodedRequest = $config['invitation_deeplink'] . PluginFlyvemdmNotificationTargetInvitation::DEEPLINK
. base64_encode(addcslashes(implode(';', $enrollmentData), '\;'));
$entityConfig->getFromDBByCrit(['entities_id' => $invitation->getField('entities_id')]);

$user = new User();
$user->getFromDB($invitation->getField('users_id'));
$encodedRequest = $invitation->getEnrollmentUrl($user, $invitation->getField('invitatoin_token'), $invitation->getField('entities_id'));

// Fill the template
$event->data['##flyvemdm.qrcode##'] = Document::getImageTag($document->getField('tag'));
Expand Down

0 comments on commit 7a9e9f9

Please sign in to comment.