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.