diff --git a/apps/maarch_entreprise/index.php b/apps/maarch_entreprise/index.php index 542fbc71e0bbdf5d15bb2439f11d48196070b687..075409905d4e20549edd22d8abc88d1c9caa9c75 100755 --- a/apps/maarch_entreprise/index.php +++ b/apps/maarch_entreprise/index.php @@ -168,12 +168,12 @@ if ( . $_SESSION['user']['UserId'] . '%' . $_SESSION['user']['UserId'] . '%' . date('dmYHmi') . '%' ); +} - // $db->query( - // 'UPDATE ' . $_SESSION['tablename']['users'] - // . " SET cookie_key = ?, cookie_date = CURRENT_TIMESTAMP WHERE user_id = ? and mail = ?", - // array($key, $_SESSION['user']['UserId'], $_SESSION['user']['Mail']),1 - // ); +//Ozwillo +if (!empty($_REQUEST['code']) && !empty($_REQUEST['state'])) { + $_SESSION['ozwillo']['code'] = $_REQUEST['code']; + $_SESSION['ozwillo']['state'] = $_REQUEST['state']; } if ( diff --git a/apps/maarch_entreprise/log.php b/apps/maarch_entreprise/log.php index 7ba922e4a829584d5df3ffee0dd79ba0613d9488..274cee2d71915e7b45c8e98538572c5370c8755b 100755 --- a/apps/maarch_entreprise/log.php +++ b/apps/maarch_entreprise/log.php @@ -56,7 +56,9 @@ if(isset($_SESSION['web_cas_url'])){ } $_REQUEST['pass'] = 'maarch'; - +} else if (!empty($_SESSION['ozwillo']['userId'])) { + $login = $_SESSION['ozwillo']['userId']; + $_REQUEST['pass'] = 'maarch'; } else if (isset($_REQUEST['login'])) { $login = $func->wash($_REQUEST['login'], 'no', _THE_ID, 'yes'); } else { diff --git a/apps/maarch_entreprise/logout.php b/apps/maarch_entreprise/logout.php index 958912d67e19292b764db1af2ea310df0986ece1..3217be5282f5ad0739e56d3fb7e2040085ab07a2 100755 --- a/apps/maarch_entreprise/logout.php +++ b/apps/maarch_entreprise/logout.php @@ -64,12 +64,15 @@ if(isset($_SESSION['web_sso_url'])){ } else if(isset($_SESSION['web_cas_url'])){ $webSSOurl = $_SESSION['web_cas_url']; } +if(!empty($_SESSION['ozwillo']['accessToken'])){ + $accessToken = $_SESSION['ozwillo']['accessToken']; +} session_unset(); session_destroy(); // Suppression physique de la session unset($_SESSION['sessionName']); -$_SESSION = array(); +$_SESSION = []; $_SESSION['custom_override_id'] = $custom; $_SESSION['config']['corepath'] = $corePath ; $_SESSION['config']['app_id'] = $appId ; @@ -83,6 +86,10 @@ if (isset($_GET['logout']) && $_GET['logout']) { if(isset($webSSOurl) && $webSSOurl <> ''){ header("location: " . $webSSOurl ); exit(); +} else if (!empty($accessToken)) { + $ozwilloConfig = \Core\Models\CoreConfigModel::getOzwilloConfiguration(); + $oidc = new OpenIDConnectClient($ozwilloConfig['uri'], $ozwilloConfig['clientId'], $ozwilloConfig['clientSecret']); + $oidc->signOut($accessToken, null); } else { header( "location: " . $appUrl . "index.php?display=true&page=login" diff --git a/apps/maarch_entreprise/ozwilloConnect.php b/apps/maarch_entreprise/ozwilloConnect.php new file mode 100644 index 0000000000000000000000000000000000000000..9793b8897f9887449597a39d92dd31b2800d4b92 --- /dev/null +++ b/apps/maarch_entreprise/ozwilloConnect.php @@ -0,0 +1,47 @@ +<?php + +require 'vendor/autoload.php'; + +$ozwilloConfig = \Core\Models\CoreConfigModel::getOzwilloConfiguration(); + +if (!empty($_SESSION['ozwillo']['code']) && !empty($_SESSION['ozwillo']['state'])) { + $_REQUEST['code'] = $_SESSION['ozwillo']['code']; + $_REQUEST['state'] = $_SESSION['ozwillo']['state']; + $_SESSION['ozwillo'] = null; +} + +$oidc = new OpenIDConnectClient($ozwilloConfig['uri'], $ozwilloConfig['clientId'], $ozwilloConfig['clientSecret']); +$oidc->addScope('openid'); +$oidc->addScope('email'); +$oidc->authenticate(); + +$userId = $oidc->requestUserInfo('email'); +$user = \Core\Models\UserModel::getById(['userId' => $userId]); + +if (empty($user)) { + echo '<br>' . _USER_NOT_EXIST; + exit; +} + +$_SESSION['ozwillo']['userId'] = $userId; +$_SESSION['ozwillo']['accessToken'] = $oidc->getAccessToken(); +unset($_REQUEST['code']); +unset($_REQUEST['state']); + +$trace = new history(); +if ($restMode) { + $_SESSION['error'] = ''; + $security = new security(); + $pass = $security->getPasswordHash('maarch'); + $res = $security->login($userId, $pass); + + $_SESSION['user'] = $res['user']; + if (!empty($res['error'])) { + $_SESSION['error'] = $res['error']; + } + + $trace->add('users', $userId, 'LOGIN', 'userlogin', 'Ozwillo Connection', $_SESSION['config']['databasetype'], 'ADMIN', false); +} else { + header("location: log.php"); + $trace->add('users', $userId, 'LOGIN', 'userlogin', 'Ozwillo Connection', $_SESSION['config']['databasetype'], 'ADMIN', false); +} diff --git a/apps/maarch_entreprise/xml/login_method.xml b/apps/maarch_entreprise/xml/login_method.xml index 59ff4d4787be3c055fbfb093c23b45d18edc05b7..c712aa045ce37ad6041230359434ea7fbe146fd6 100755 --- a/apps/maarch_entreprise/xml/login_method.xml +++ b/apps/maarch_entreprise/xml/login_method.xml @@ -24,4 +24,10 @@ <SCRIPT>cas_connect.php</SCRIPT> <ENABLED>true</ENABLED> </METHOD> --> + <!--<METHOD>--> + <!--<ID>ozwillo</ID>--> + <!--<NAME>Ozwillo</NAME>--> + <!--<SCRIPT>ozwilloConnect.php</SCRIPT>--> + <!--<ENABLED>true</ENABLED>--> + <!--</METHOD>--> </ROOT> diff --git a/apps/maarch_entreprise/xml/ozwilloConfig.xml b/apps/maarch_entreprise/xml/ozwilloConfig.xml new file mode 100644 index 0000000000000000000000000000000000000000..9d5c7fc76ea4325e3297e510b09aff50e094cabb --- /dev/null +++ b/apps/maarch_entreprise/xml/ozwilloConfig.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<ROOT> + <URI>https://accounts.ozwillo-preprod.eu/</URI> + <CLIENT_ID>db8aa58f-e578-4ad9-96c6-47d95faa5c65</CLIENT_ID> + <CLIENT_SECRET>P4RO8tUhERQLWFIuqVvgtPPaoY16jtZ+4bUTI94AzzM</CLIENT_SECRET> +</ROOT> diff --git a/composer.json b/composer.json index adbdb30c8146199defe6d2d7be6f62136a97f205..38bce39374a68153f0bef2539f752e189cd88193 100755 --- a/composer.json +++ b/composer.json @@ -16,6 +16,7 @@ "slim/slim": "^3.8", "respect/validation": "^1.1", "php-http/curl-client": "^1.7", - "m4tthumphrey/php-gitlab-api": "dev-master" + "m4tthumphrey/php-gitlab-api": "dev-master", + "jumbojett/openid-connect-php": "^0.3.0" } }