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 [];
 }
Example #4
0
	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;
	}
Example #5
0
	/**
	 * 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;
	}