public function register() { $view = $this->getView(); $user = \Core\user(); // Set the access permissions for this page as anonymous-only. if(!$user->checkAccess('g:anonymous;g:!admin')){ return ''; } // Also disallow access to this page if the configuration option is disabled. if(!ConfigHandler::Get('/user/register/allowpublic')){ return ''; } $auths = \Core\User\Helper::GetEnabledAuthDrivers(); $view->assign('drivers', $auths); }
/** * Hook receiver for /core/controllinks/user/view * * @param int $userid * * @return array */ public static function GetUserControlLinks($userid){ $enabled = \Core\User\Helper::GetEnabledAuthDrivers(); if(!isset($enabled['datastore'])){ // GPG isn't enabled at all, disable any control links from the system. return []; } if($userid instanceof UserModel){ $user = $userid; } else{ /** @var UserModel $user */ $user = UserModel::Construct($userid); } if(!$user->exists()){ // Invalid user. return []; } $isself = (\Core\user()->get('id') == $user->get('id')); $isadmin = \Core\user()->checkAccess('p:/user/users/manage'); if(!($isself || $isadmin)){ // Current user does not have access to manage the provided user's data. return []; } try{ // If this throws an exception, then it's not enabled! $user->getAuthDriver('datastore'); } catch(Exception $e){ if($isself){ return [ [ 'link' => '/datastoreauth/forgotpassword', 'title' => t('STRING_ENABLE_PASSWORD_LOGIN'), 'icon' => 'key', ] ]; } } $ret = []; $ret[] = [ 'link' => '/datastoreauth/password/' . $user->get('id'), 'title' => t('STRING_CHANGE_PASSWORD'), 'icon' => 'key', ]; if(sizeof($user->getEnabledAuthDrivers()) > 1){ $ret[] = [ 'link' => '/datastoreauth/disable/' . $user->get('id'), 'title' => t('STRING_DISABLE_PASSWORD_LOGIN'), 'icon' => 'ban', 'confirm' => 'Are you sure you want to disable password-based logins? (They can be re-enabled if requested.)', ]; } return $ret; }
/** * Hook receiver for /core/controllinks/usermodel * * @param int $userid * * @return array */ public static function GetUserControlLinks($userid) { $enabled = \Core\User\Helper::GetEnabledAuthDrivers(); if (!isset($enabled['facebook'])) { // GPG isn't enabled at all, disable any control links from the system. return []; } /** @var UserModel $user */ $user = UserModel::Construct($userid); if (!$user->exists()) { // Invalid user. return []; } $isself = \Core\user()->get('id') == $user->get('id'); $isadmin = \Core\user()->checkAccess('p:/user/users/manage'); if (!($isself || $isadmin)) { // Current user does not have access to manage the provided user's data. return []; } try { // If this throws an exception, then it's not enabled! $user->getAuthDriver('facebook'); } catch (Exception $e) { if ($isself) { return [['link' => '/facebook/enable', 'title' => 'Enable Facebook Login', 'icon' => 'facebook']]; } } if (sizeof($user->getEnabledAuthDrivers()) > 1) { return [['link' => '/facebook/disable/' . $user->get('id'), 'title' => 'Disable Facebook Login', 'icon' => 'ban', 'confirm' => 'Are you sure you want to disable Facebook-based logins? (They can be re-enabled if requested.)']]; } return []; }
public static function _HookHandler403(View $view){ if(\Core\user()->exists()){ //if(Core::User()->exists()){ // User is already logged in... I can't do anything. return true; } // I need to replace the current page with this one so that the previous controller never executes. $newcontroller = new self(); $newcontroller->overwriteView($view); //$view->baseurl = '/user/login'; $auths = \Core\User\Helper::GetEnabledAuthDrivers(); $view->ssl = true; $view->error = View::ERROR_ACCESSDENIED; $view->allowerrors = true; $view->templatename = 'pages/user/guest403.tpl'; $view->assign('drivers', $auths); $view->assign('allowregister', ConfigHandler::Get('/user/register/allowpublic')); // Google has no business indexing user-action pages. $view->addMetaName('robots', 'noindex'); $loginform = new Form(); $loginform->set('callsMethod', 'Core\\User\\Helper::LoginHandler'); $loginform->addElement('text', array('name' => 'email', 'title' => 'Email', 'required' => true)); $loginform->addElement('password', array('name' => 'pass', 'title' => 'Password', 'required' => true)); $loginform->addElement('submit', array('value' => 'Login')); if(ConfigHandler::Get('/user/register/allowpublic')){ $registerform = \Core\User\Helper::GetRegistrationForm(); } else{ $registerform = null; } $error = false; $view->assign('error', $error); $view->assign('backends', ConfigHandler::Get('/user/backends')); $view->assign('loginform', $loginform); $view->assign('registerform', $registerform); $view->assign('allowregister', ConfigHandler::Get('/user/register/allowpublic')); return $view; }
/** * Disable a given authentication driver for this user account. * * Will verify that the auth driver is valid before setting. * * Will NOT save the user, that still needs to be done externally! * * @param $driver * * @return boolean */ public function disableAuthDriver($driver) { $enabled = explode('|', $this->get('backend')); $drivers = \Core\User\Helper::GetEnabledAuthDrivers(); if(!isset($drivers[ $driver ])) { return false; } if(!in_array($driver, $enabled)) { return false; } unset($enabled[ array_search($driver, $enabled) ]); if(sizeof($enabled) == 0) { $enabled = ['datastore']; } $this->set('backend', implode('|', $enabled)); return true; }