26 require
'../../../main.inc.php';
27 require_once DOL_DOCUMENT_ROOT.
'/includes/OAuth/bootstrap.php';
28 use OAuth\Common\Storage\DoliStorage;
29 use OAuth\Common\Consumer\Credentials;
30 use OAuth\OAuth2\Service\GitHub;
33 $urlwithouturlroot = preg_replace(
'/'.preg_quote(DOL_URL_ROOT,
'/').
'$/i',
'', trim($dolibarr_main_url_root));
34 $urlwithroot = $urlwithouturlroot.DOL_URL_ROOT;
38 $action =
GETPOST(
'action',
'aZ09');
39 $backtourl =
GETPOST(
'backtourl',
'alpha');
40 $keyforprovider =
GETPOST(
'keyforprovider',
'aZ09');
41 if (empty($keyforprovider) && !empty($_SESSION[
"oauthkeyforproviderbeforeoauthjump"]) && (
GETPOST(
'code') || $action ==
'delete')) {
42 $keyforprovider = $_SESSION[
"oauthkeyforproviderbeforeoauthjump"];
52 $currentUri =
$uriFactory->createFromAbsolute($urlwithroot.
'/core/modules/oauth/github_oauthcallback.php');
60 $serviceFactory = new \OAuth\ServiceFactory();
61 $httpClient = new \OAuth\Common\Http\Client\CurlClient();
65 $serviceFactory->setHttpClient($httpClient);
68 $storage =
new DoliStorage($db, $conf, $keyforprovider);
71 $keyforparamid =
'OAUTH_GITHUB'.($keyforprovider ?
'-'.$keyforprovider :
'').
'_ID';
72 $keyforparamsecret =
'OAUTH_GITHUB'.($keyforprovider ?
'-'.$keyforprovider :
'').
'_SECRET';
73 $credentials =
new Credentials(
76 $currentUri->getAbsoluteUri()
79 $requestedpermissionsarray = array();
81 $requestedpermissionsarray = explode(
',',
GETPOST(
'state'));
83 if ($action !=
'delete' && empty($requestedpermissionsarray)) {
84 print
'Error, parameter state is not defined';
90 $apiService = $serviceFactory->createService(
'GitHub', $credentials, $storage, $requestedpermissionsarray);
95 $langs->load(
"oauth");
98 accessforbidden(
'Setup of service is not complete. Customer ID is missing');
101 accessforbidden(
'Setup of service is not complete. Secret key is missing');
109 if ($action ==
'delete') {
110 $storage->clearToken(
'GitHub');
114 header(
'Location: '.$backtourl);
130 $token = $apiService->requestAccessToken(
GETPOST(
'code'));
139 $backtourl = $_SESSION[
"backtourlsavedbeforeoauthjump"];
140 unset($_SESSION[
"backtourlsavedbeforeoauthjump"]);
142 if (empty($backtourl)) {
143 $backtourl = DOL_URL_ROOT.
'/';
146 header(
'Location: '.$backtourl);
149 print $e->getMessage();
152 $_SESSION[
"backtourlsavedbeforeoauthjump"] = $backtourl;
153 $_SESSION[
"oauthkeyforproviderbeforeoauthjump"] = $keyforprovider;
154 $_SESSION[
'oauthstateanticsrf'] = $state;
159 $url = $apiService->getAuthorizationUri(array(
'state' =>
GETPOST(
'state')));
161 $url = $apiService->getAuthorizationUri();
165 header(
'Location: '.$url);