137748cd8SNickeau<?php 237748cd8SNickeau/** 337748cd8SNickeau * Copyright (c) 2021. ComboStrap, Inc. and its affiliates. All Rights Reserved. 437748cd8SNickeau * 537748cd8SNickeau * This source code is licensed under the GPL license found in the 637748cd8SNickeau * COPYING file in the root directory of this source tree. 737748cd8SNickeau * 837748cd8SNickeau * @license GPL 3 (https://www.gnu.org/licenses/gpl-3.0.en.html) 937748cd8SNickeau * @author ComboStrap <support@combostrap.com> 1037748cd8SNickeau * 1137748cd8SNickeau */ 1237748cd8SNickeau 1337748cd8SNickeaunamespace ComboStrap; 1437748cd8SNickeau 1537748cd8SNickeau 1637748cd8SNickeauuse Doku_Form; 1737748cd8SNickeauuse TestRequest; 1837748cd8SNickeau 1937748cd8SNickeauclass Identity 2037748cd8SNickeau{ 2137748cd8SNickeau 2237748cd8SNickeau const CANONICAL = "identity"; 2337748cd8SNickeau const CONF_ENABLE_LOGO_ON_IDENTITY_FORMS = "enableLogoOnIdentityForms"; 2437748cd8SNickeau const JS_NAVIGATION_ANONYMOUS_VALUE = "anonymous"; 2537748cd8SNickeau const JS_NAVIGATION_SIGNED_VALUE = "signed"; 2637748cd8SNickeau /** 2737748cd8SNickeau * A javascript indicator 2837748cd8SNickeau * to know if the user is logged in or not 2937748cd8SNickeau * (ie public or not) 3037748cd8SNickeau */ 3137748cd8SNickeau const JS_NAVIGATION_INDICATOR = "navigation"; 3237748cd8SNickeau 3337748cd8SNickeau /** 3437748cd8SNickeau * Is logged in 3537748cd8SNickeau * @return boolean 3637748cd8SNickeau */ 3737748cd8SNickeau public static function isLoggedIn() 3837748cd8SNickeau { 3937748cd8SNickeau $loggedIn = false; 4037748cd8SNickeau global $INPUT; 4137748cd8SNickeau if ($INPUT->server->has('REMOTE_USER')) { 4237748cd8SNickeau $loggedIn = true; 4337748cd8SNickeau } 4437748cd8SNickeau return $loggedIn; 4537748cd8SNickeau } 4637748cd8SNickeau 4737748cd8SNickeau /** 4837748cd8SNickeau * @param TestRequest $request 4937748cd8SNickeau * @param string $user 5037748cd8SNickeau */ 5137748cd8SNickeau public static function becomeSuperUser(&$request = null, $user = 'admin') 5237748cd8SNickeau { 5337748cd8SNickeau global $conf; 5437748cd8SNickeau $conf['useacl'] = 1; 5537748cd8SNickeau $conf['superuser'] = $user; 5637748cd8SNickeau $conf['remoteuser'] = $user; 5737748cd8SNickeau 5837748cd8SNickeau if ($request != null) { 5937748cd8SNickeau $request->setServer('REMOTE_USER', $user); 6037748cd8SNickeau } else { 6137748cd8SNickeau global $INPUT; 6237748cd8SNickeau $INPUT->server->set('REMOTE_USER', $user); 63*1fa8c418SNickeau // same as $_SERVER['REMOTE_USER'] = $user; 6437748cd8SNickeau } 6537748cd8SNickeau 6637748cd8SNickeau // $_SERVER[] = $user; 6737748cd8SNickeau // global $USERINFO; 6837748cd8SNickeau // $USERINFO['grps'] = array('admin', 'user'); 6937748cd8SNickeau 7037748cd8SNickeau // global $INFO; 7137748cd8SNickeau // $INFO['ismanager'] = true; 7237748cd8SNickeau 7337748cd8SNickeau } 7437748cd8SNickeau 7537748cd8SNickeau /** 7637748cd8SNickeau * @param $request 7737748cd8SNickeau * @param string $user - the user to login 7837748cd8SNickeau */ 7937748cd8SNickeau public static function logIn(&$request, $user = 'defaultUser') 8037748cd8SNickeau { 8137748cd8SNickeau 8237748cd8SNickeau $request->setServer('REMOTE_USER', $user); 8337748cd8SNickeau 8437748cd8SNickeau /** 8537748cd8SNickeau * The {@link getSecurityToken()} needs it 8637748cd8SNickeau */ 8737748cd8SNickeau global $INPUT; 8837748cd8SNickeau $INPUT->server->set('REMOTE_USER',$user); 8937748cd8SNickeau 9037748cd8SNickeau } 9137748cd8SNickeau 9237748cd8SNickeau /** 9337748cd8SNickeau * @return bool if edit auth 9437748cd8SNickeau */ 9537748cd8SNickeau public static function isWriter() 9637748cd8SNickeau { 9737748cd8SNickeau 9837748cd8SNickeau return auth_quickaclcheck(PluginUtility::getPageId()) >= AUTH_EDIT; 9937748cd8SNickeau 10037748cd8SNickeau } 10137748cd8SNickeau 10237748cd8SNickeau public static function isAdmin() 10337748cd8SNickeau { 10437748cd8SNickeau global $INFO; 10537748cd8SNickeau if (!empty($INFO)) { 10637748cd8SNickeau return $INFO['isadmin']; 10737748cd8SNickeau } else { 10837748cd8SNickeau return auth_isadmin(self::getUser(), self::getUserGroups()); 10937748cd8SNickeau } 11037748cd8SNickeau } 11137748cd8SNickeau 11237748cd8SNickeau public static function isMember($group) 11337748cd8SNickeau { 11437748cd8SNickeau 11537748cd8SNickeau return auth_isMember($group, self::getUser(), self::getUserGroups()); 11637748cd8SNickeau 11737748cd8SNickeau } 11837748cd8SNickeau 11937748cd8SNickeau public static function isManager() 12037748cd8SNickeau { 12137748cd8SNickeau global $INFO; 12237748cd8SNickeau return $INFO['ismanager']; 12337748cd8SNickeau } 12437748cd8SNickeau 12537748cd8SNickeau private static function getUser() 12637748cd8SNickeau { 12737748cd8SNickeau global $INPUT; 12837748cd8SNickeau return $INPUT->server->str('REMOTE_USER'); 12937748cd8SNickeau } 13037748cd8SNickeau 13137748cd8SNickeau private static function getUserGroups() 13237748cd8SNickeau { 13337748cd8SNickeau global $USERINFO; 13437748cd8SNickeau return is_array($USERINFO) ? $USERINFO['grps'] : array(); 13537748cd8SNickeau } 13637748cd8SNickeau 13737748cd8SNickeau public static function getLogoHtml() 13837748cd8SNickeau { 13937748cd8SNickeau /** 14037748cd8SNickeau * Logo 14137748cd8SNickeau */ 14237748cd8SNickeau $tagAttributes = TagAttributes::createEmpty("register"); 14337748cd8SNickeau $tagAttributes->addComponentAttributeValue(Dimension::WIDTH_KEY, "72"); 14437748cd8SNickeau $tagAttributes->addComponentAttributeValue(Dimension::HEIGHT_KEY, "72"); 14537748cd8SNickeau $tagAttributes->addClassName("logo"); 14637748cd8SNickeau return Site::getLogoImgHtmlTag($tagAttributes); 14737748cd8SNickeau } 14837748cd8SNickeau 14937748cd8SNickeau /** 15037748cd8SNickeau * @param Doku_Form $form 15137748cd8SNickeau * @param string $classPrefix 15237748cd8SNickeau * @param bool $includeLogo 15337748cd8SNickeau * @return string 15437748cd8SNickeau */ 15537748cd8SNickeau public static function getHeaderHTML(Doku_Form $form, $classPrefix, $includeLogo = true) 15637748cd8SNickeau { 15737748cd8SNickeau if (isset($form->_content[0]["_legend"])) { 15837748cd8SNickeau 15937748cd8SNickeau $title = $form->_content[0]["_legend"]; 16037748cd8SNickeau /** 16137748cd8SNickeau * Logo 16237748cd8SNickeau */ 16337748cd8SNickeau $logoHtmlImgTag = ""; 16437748cd8SNickeau if ( 16537748cd8SNickeau PluginUtility::getConfValue(Identity::CONF_ENABLE_LOGO_ON_IDENTITY_FORMS, 1) 16637748cd8SNickeau && 16737748cd8SNickeau $includeLogo === true 16837748cd8SNickeau ) { 16937748cd8SNickeau $logoHtmlImgTag = Identity::getLogoHtml(); 17037748cd8SNickeau } 17137748cd8SNickeau /** 17237748cd8SNickeau * Don't use `header` in place of 17337748cd8SNickeau * div because this is a HTML5 tag 17437748cd8SNickeau * 17537748cd8SNickeau * On php 5.6, the php test library method {@link \phpQueryObject::htmlOuter()} 17637748cd8SNickeau * add the below meta tag 17737748cd8SNickeau * <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/> 17837748cd8SNickeau * 17937748cd8SNickeau */ 18037748cd8SNickeau return <<<EOF 18137748cd8SNickeau<div class="$classPrefix-header"> 18237748cd8SNickeau $logoHtmlImgTag 18337748cd8SNickeau <h1>$title</h1> 18437748cd8SNickeau</div> 18537748cd8SNickeauEOF; 18637748cd8SNickeau } 18737748cd8SNickeau return ""; 18837748cd8SNickeau } 18937748cd8SNickeau 19037748cd8SNickeau 19137748cd8SNickeau} 192