26require
'../../../main.inc.php';
27require_once DOL_DOCUMENT_ROOT.
'/includes/OAuth/bootstrap.php';
28use OAuth\Common\Storage\DoliStorage;
29use OAuth\Common\Consumer\Credentials;
32$urlwithouturlroot = preg_replace(
'/'.preg_quote(DOL_URL_ROOT,
'/').
'$/i',
'', trim($dolibarr_main_url_root));
33$urlwithroot = $urlwithouturlroot.DOL_URL_ROOT;
37$action =
GETPOST(
'action',
'aZ09');
38$backtourl =
GETPOST(
'backtourl',
'alpha');
39$keyforprovider =
GETPOST(
'keyforprovider',
'aZ09');
40if (empty($keyforprovider) && !empty($_SESSION[
"oauthkeyforproviderbeforeoauthjump"]) && (
GETPOST(
'code') || $action ==
'delete')) {
41 $keyforprovider = $_SESSION[
"oauthkeyforproviderbeforeoauthjump"];
43$genericstring =
'MICROSOFT';
51$currentUri =
$uriFactory->createFromAbsolute($urlwithroot.
'/core/modules/oauth/microsoft_oauthcallback.php');
59$serviceFactory = new \OAuth\ServiceFactory();
60$httpClient = new \OAuth\Common\Http\Client\CurlClient();
64$serviceFactory->setHttpClient($httpClient);
67$keyforparamid =
'OAUTH_'.$genericstring.($keyforprovider ?
'-'.$keyforprovider :
'').
'_ID';
68$keyforparamsecret =
'OAUTH_'.$genericstring.($keyforprovider ?
'-'.$keyforprovider :
'').
'_SECRET';
69$keyforparamtenant =
'OAUTH_'.$genericstring.($keyforprovider ?
'-'.$keyforprovider :
'').
'_TENANT';
72$storage =
new DoliStorage($db, $conf, $keyforprovider,
getDolGlobalString($keyforparamtenant));
74$credentials =
new Credentials(
77 $currentUri->getAbsoluteUri()
82$requestedpermissionsarray = array();
84 $requestedpermissionsarray = explode(
',', $state);
86if ($action !=
'delete' && empty($requestedpermissionsarray)) {
87 print
'Error, parameter state is not defined';
97 $nameofservice = ucfirst(strtolower($genericstring));
98 $apiService = $serviceFactory->createService($nameofservice, $credentials, $storage, $requestedpermissionsarray);
100 print $e->getMessage();
110if (empty($apiService)) {
111 print
'Error, failed to create serviceFactory';
118$langs->load(
"oauth");
121 accessforbidden(
'Setup of service is not complete. Customer ID is missing');
124 accessforbidden(
'Setup of service is not complete. Secret key is missing');
127 accessforbidden(
'Setup of service is not complete. Tenant/Annuary ID key is missing');
135if ($action ==
'delete') {
136 $storage->clearToken($genericstring);
140 if (empty($backtourl)) {
141 $backtourl = DOL_URL_ROOT.
'/';
144 header(
'Location: '.$backtourl);
168 $token = $apiService->requestAccessToken(
GETPOST(
'code'));
178 $backtourl = $_SESSION[
"backtourlsavedbeforeoauthjump"];
179 unset($_SESSION[
"backtourlsavedbeforeoauthjump"]);
181 header(
'Location: '.$backtourl);
184 print $e->getMessage();
189 $_SESSION[
"backtourlsavedbeforeoauthjump"] = $backtourl;
190 $_SESSION[
"oauthkeyforproviderbeforeoauthjump"] = $keyforprovider;
191 $_SESSION[
'oauthstateanticsrf'] = $state;
200 $url = $apiService->getAuthorizationUri(array(
'state' => $state));
202 $url = $apiService->getAuthorizationUri();
210 header(
'Location: '.$url);
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
dol_trunc($string, $size=40, $trunc='right', $stringencoding='UTF-8', $nodot=0, $display=0)
Truncate a string to a particular length adding '…' if string larger than length.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
dol_syslog($message, $level=LOG_INFO, $ident=0, $suffixinfilename='', $restricttologhandler='', $logcontext=null)
Write log message into outputs.
$uriFactory
Create a new instance of the URI class with the current URI, stripping the query string.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.