From a57e8f1a4a07fb66885a0da0d0f6884bf97f4692 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Stan=C4=9Bk?= Date: Thu, 12 Apr 2018 23:18:56 +0200 Subject: [PATCH 1/2] =?UTF-8?q?=C3=BAprava=20generov=C3=A1n=C3=AD=20userna?= =?UTF-8?q?me,=20oprava=20chyby,=20refactoring?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- action.php | 32 ++++++----- auth.php | 152 ++++++++++++++++++++++++++++------------------------- 2 files changed, 99 insertions(+), 85 deletions(-) diff --git a/action.php b/action.php index 68e3780..9c14fe3 100644 --- a/action.php +++ b/action.php @@ -1,22 +1,24 @@ register_hook('HTML_LOGINFORM_OUTPUT', 'BEFORE', $this, 'hook_html_loginform_output', []); + $controller->register_hook('HTML_LOGINFORM_OUTPUT', 'BEFORE', $this, 'hook_html_loginform_output', []); $controller->register_hook('HTML_UPDATEPROFILEFORM_OUTPUT', 'BEFORE', $this, 'hook_updateprofileform_output', []); } - function hook_updateprofileform_output(&$event, $param) { + function hook_updateprofileform_output(&$event, $param) + { global $USERINFO; if ($USERINFO['is_skautis']) { @@ -28,29 +30,31 @@ function hook_updateprofileform_output(&$event, $param) { $elem['disabled'] = 'disabled'; $event->data->replaceElement(3, $elem); - $event->data->replaceElement(10, null); - $event->data->replaceElement(9, null); - $event->data->replaceElement(8, null); - $event->data->replaceElement(7, null); - $event->data->replaceElement(6, null); - $event->data->replaceElement(5, null); - $event->data->replaceElement(4, null); + $event->data->replaceElement(10, NULL); + $event->data->replaceElement(9, NULL); + $event->data->replaceElement(8, NULL); + $event->data->replaceElement(7, NULL); + $event->data->replaceElement(6, NULL); + $event->data->replaceElement(5, NULL); + $event->data->replaceElement(4, NULL); } } /** * Handles the login form rendering. */ - function hook_html_loginform_output(&$event, $param) { + function hook_html_loginform_output(&$event, $param) + { $skautIsAppId = $this->getConf('skautis_app_id'); $skautIsTestmode = $this->getConf('skautis_test_mode'); - if($skautIsAppId!=''){ + if ($skautIsAppId != '') { + $skautIs = Skautis\Skautis::getInstance($skautIsAppId, $skautIsTestmode); $loginUrl = $skautIs->getLoginUrl(); $buttonText = $this->getLang('enter_skautis'); echo " $buttonText"; - } } } + ?> diff --git a/auth.php b/auth.php index d020e1b..0279edd 100644 --- a/auth.php +++ b/auth.php @@ -1,40 +1,44 @@ */ -// must be run within Dokuwiki -if(!defined('DOKU_INC')) die(); +// must be run within DokuWiki +if (!defined('DOKU_INC')) die(); require_once __DIR__ . '/vendor/autoload.php'; -global $conf; // define cookie and session id, append server port when securecookie is configured -if (!defined('AUTHSKAUTIS_COOKIE')){ - define('AUTHSKAUTIS_COOKIE', 'SPGG'.md5(DOKU_REL.(($conf['securecookie'])?$_SERVER['SERVER_PORT']:''))); +if (!defined('AUTHSKAUTIS_COOKIE')) { + define('AUTHSKAUTIS_COOKIE', 'SPGG' . md5(DOKU_REL . (($conf['securecookie']) ? $_SERVER['SERVER_PORT'] : ''))); } -class auth_plugin_authskautis extends auth_plugin_authplain { - - /** @var \Skautis\Skautis */ +class auth_plugin_authskautis extends auth_plugin_authplain +{ + /** + * @var \Skautis\Skautis + */ public $skautIs; + + /** * Constructor. */ - public function __construct() { - global $config_cascade; + public function __construct() + { + global $conf, $config_cascade; + parent::__construct(); // for compatibility - $this->success = true; + $this->success = TRUE; - $this->cando['addUser'] = true; // can Users be created? - $this->cando['external'] = true; // does the module do external auth checking? - $this->cando['logout'] = true; // can the user logout again? (eg. not possible with HTTP auth) + $this->cando['addUser'] = TRUE; // can Users be created? + $this->cando['external'] = TRUE; // does the module do external auth checking? + $this->cando['logout'] = TRUE; // can the user logout again? (eg. not possible with HTTP auth) $skautIsAppId = $this->getConf('skautis_app_id'); $skautIsTestmode = $this->getConf('skautis_test_mode'); @@ -44,119 +48,124 @@ public function __construct() { /** * Do all authentication [ OPTIONAL ] * - * @param string $user Username - * @param string $pass Cleartext Password - * @param bool $sticky Cookie should not expire + * @param string $user Username + * @param string $pass Cleartext Password + * @param bool $sticky Cookie should not expire * @return bool true on successful auth */ - public function trustExternal($user, $pass, $sticky = false) { + public function trustExternal($user, $pass, $sticky = FALSE) + { global $USERINFO; //get user info in session if (!empty($_SESSION[DOKU_COOKIE]['authskautis']['info'])) { - $USERINFO['name'] = $_SESSION[DOKU_COOKIE]['authskautis']['info']['name']; - $USERINFO['mail'] = $_SESSION[DOKU_COOKIE]['authskautis']['info']['mail']; - $USERINFO['grps'] = $_SESSION[DOKU_COOKIE]['authskautis']['info']['grps']; - $USERINFO['is_skautis'] = $_SESSION[DOKU_COOKIE]['authskautis']['info']['is_skautis']; + $USERINFO = $_SESSION[DOKU_COOKIE]['authskautis']['info']; $_SERVER['REMOTE_USER'] = $_SESSION[DOKU_COOKIE]['authskautis']['user']; - return true; + return TRUE; } - //get form login info - if(!empty($user)){ + //get authplain form login info + if (!empty($user)) { //var_dump($user,$pass);die; - if($this->checkPass($user,$pass)){ - $uinfo = $this->getUserData($user); + if ($this->checkPass($user, $pass)) { + $uinfo = $this->getUserData($user); //set user info $USERINFO['name'] = $uinfo['name']; $USERINFO['mail'] = $uinfo['email']; $USERINFO['grps'] = $uinfo['grps']; - $USERINFO['pass'] = $pass; + $USERINFO['is_skautis'] = FALSE; + $USERINFO['pass'] = ""; //save data in session - $_SERVER['REMOTE_USER'] = $uinfo['name']; - $_SESSION[DOKU_COOKIE]['authskautis']['user'] = $uinfo['name']; + $_SERVER['REMOTE_USER'] = $user; + $_SESSION[DOKU_COOKIE]['authskautis']['user'] = $user; $_SESSION[DOKU_COOKIE]['authskautis']['info'] = $USERINFO; - return true; - }else{ + return TRUE; + } else { //invalid credentials - log off - msg($this->getLang('badlogin'),-1); - return false; + msg($this->getLang('badlogin'), -1); + return FALSE; } } - //$sticky ? $sticky = true : $sticky = false; //sanity check - if (!empty($_POST) && isset($_POST['skautIS_Token'])){ - $skautIsAllowedAddUser = $this->getConf('skautis_allowed_add_user'); - + if (!empty($_POST) && isset($_POST['skautIS_Token'])) { $this->skautIs->setLoginData($_POST); $skautIsUser = $this->skautIs->getUser(); - if ($skautIsUser->isLoggedIn(true)) { - $userData = $this->skautIs->user->userDetail(); - $token = $this->skautIs->getUser()->getLoginId(); - $person = $this->skautIs->org->PersonDetail(['ID_Login' => $token, 'ID' => $userData->ID_Person]); - $skautIsEmail = $person->Email; - $skautIsUsername = $person->FirstName . ' ' . $person->LastName; + if ($skautIsUser->isLoggedIn(TRUE)) { + $loginId = $this->skautIs->getUser()->getLoginId(); + $userDetail = $this->skautIs->usr->userDetail(); + $personDetail = $this->skautIs->org->PersonDetail(['ID_Login' => $loginId, 'ID' => $userDetail->ID_Person]); + + $skautIsUserName = $userDetail->UserName; + $skautIsEmail = $personDetail->Email; + $skautIsFirstName = $personDetail->FirstName; + $skautIsLastName = $personDetail->LastName; + $skautIsNickName = $personDetail->NickName; + + $name = $skautIsFirstName . ' ' . $skautIsLastName . ($skautIsNickName ? ' - ' . $skautIsNickName : ''); + + $login = normalizer_normalize($skautIsUserName); + $login = preg_replace('/[^a-zA-Z0-9_]/', '', $login); + $login = $login . $userDetail->ID; - $login = 'skautis'.$userData->ID; $udata = $this->getUserData($login); //create and update user in base - if($skautIsAllowedAddUser){ + if ($this->getConf('skautis_allowed_add_user')) { if (!$udata) { //default groups - $grps = null; - if ($this->getConf('default_groups')){ + $grps = NULL; + if ($this->getConf('default_groups')) { $grps = explode(' ', $this->getConf('default_groups')); } //create user - $this->createUser($login, md5(rand().$login), $skautIsUsername, $skautIsEmail, $grps); + $this->createUser($login, md5(rand() . $login), $name, $skautIsEmail, $grps); $udata = $this->getUserData($login); - } elseif ($udata['name'] != $skautIsUsername || $udata['email'] != $skautIsEmail) { + } elseif ($udata['name'] != $name || $udata['email'] != $skautIsEmail) { //update user - $this->modifyUser($login, ['name'=>$skautIsUsername, 'email'=>$skautIsEmail]); + $this->modifyUser($login, ['name' => $name, 'email' => $skautIsEmail]); } } - if ($this->isUserValid($login)){ + if ($this->isUserValid($login)) { //set user info $USERINFO['pass'] = ""; - $USERINFO['name'] = $skautIsUsername; + $USERINFO['name'] = $name; $USERINFO['mail'] = $skautIsEmail; $USERINFO['grps'] = $udata['grps']; - $USERINFO['is_skautis'] = true; - $_SERVER['REMOTE_USER'] = $skautIsUsername; + $USERINFO['is_skautis'] = TRUE; + $_SERVER['REMOTE_USER'] = $login; //save user info in session - $_SESSION[DOKU_COOKIE]['authskautis']['user'] = $_SERVER['REMOTE_USER']; + $_SESSION[DOKU_COOKIE]['authskautis']['user'] = $login; $_SESSION[DOKU_COOKIE]['authskautis']['info'] = $USERINFO; //if login page - redirect to main page - if (isset($_GET['do']) && $_GET['do']=='login'){ - header("Location: ".wl('start', '', true)); + if (isset($_GET['do']) && $_GET['do'] == 'login') { + header("Location: " . wl('start', '', TRUE)); } - return true; + return TRUE; } else { - msg($this->getLang('nouser'),-1); + msg($this->getLang('nouser'), -1); $this->logOff(); - return false; + return FALSE; } } else { - msg($this->getLang('badskautis'),-1); + msg($this->getLang('badskautis'), -1); $this->logOff(); - return false; + return FALSE; } - } else { - //return false; } - return false; + + return FALSE; } - function logOff(){ + function logOff() + { $isSkautIs = $_SESSION[DOKU_COOKIE]['authskautis']['info']['is_skautis']; unset($_SESSION[DOKU_COOKIE]['authskautis']['user']); @@ -168,7 +177,8 @@ function logOff(){ } } - function isUserValid($login){ - return isset($this->users[$login]) ? true : false; + function isUserValid($login) + { + return isset($this->users[$login]) ? TRUE : FALSE; } } From 12d7a5be96446a6ac0b081173c814fbf88c9b3cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Stan=C4=9Bk?= Date: Fri, 13 Apr 2018 10:15:02 +0200 Subject: [PATCH 2/2] oprava prevodu login --- auth.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/auth.php b/auth.php index 0279edd..7c7a27b 100644 --- a/auth.php +++ b/auth.php @@ -107,7 +107,7 @@ public function trustExternal($user, $pass, $sticky = FALSE) $name = $skautIsFirstName . ' ' . $skautIsLastName . ($skautIsNickName ? ' - ' . $skautIsNickName : ''); - $login = normalizer_normalize($skautIsUserName); + $login = iconv('UTF-8', 'ASCII//TRANSLIT', $skautIsUserName); $login = preg_replace('/[^a-zA-Z0-9_]/', '', $login); $login = $login . $userDetail->ID;