1*37748cd8SNickeau<?php 2*37748cd8SNickeau/** 3*37748cd8SNickeau * Copyright (c) 2021. ComboStrap, Inc. and its affiliates. All Rights Reserved. 4*37748cd8SNickeau * 5*37748cd8SNickeau * This source code is licensed under the GPL license found in the 6*37748cd8SNickeau * COPYING file in the root directory of this source tree. 7*37748cd8SNickeau * 8*37748cd8SNickeau * @license GPL 3 (https://www.gnu.org/licenses/gpl-3.0.en.html) 9*37748cd8SNickeau * @author ComboStrap <support@combostrap.com> 10*37748cd8SNickeau * 11*37748cd8SNickeau */ 12*37748cd8SNickeau 13*37748cd8SNickeaunamespace ComboStrap; 14*37748cd8SNickeau 15*37748cd8SNickeau 16*37748cd8SNickeauuse Doku_Form; 17*37748cd8SNickeauuse TestRequest; 18*37748cd8SNickeau 19*37748cd8SNickeauclass Identity 20*37748cd8SNickeau{ 21*37748cd8SNickeau 22*37748cd8SNickeau const CANONICAL = "identity"; 23*37748cd8SNickeau const CONF_ENABLE_LOGO_ON_IDENTITY_FORMS = "enableLogoOnIdentityForms"; 24*37748cd8SNickeau const JS_NAVIGATION_ANONYMOUS_VALUE = "anonymous"; 25*37748cd8SNickeau const JS_NAVIGATION_SIGNED_VALUE = "signed"; 26*37748cd8SNickeau /** 27*37748cd8SNickeau * A javascript indicator 28*37748cd8SNickeau * to know if the user is logged in or not 29*37748cd8SNickeau * (ie public or not) 30*37748cd8SNickeau */ 31*37748cd8SNickeau const JS_NAVIGATION_INDICATOR = "navigation"; 32*37748cd8SNickeau 33*37748cd8SNickeau /** 34*37748cd8SNickeau * Is logged in 35*37748cd8SNickeau * @return boolean 36*37748cd8SNickeau */ 37*37748cd8SNickeau public static function isLoggedIn() 38*37748cd8SNickeau { 39*37748cd8SNickeau $loggedIn = false; 40*37748cd8SNickeau global $INPUT; 41*37748cd8SNickeau if ($INPUT->server->has('REMOTE_USER')) { 42*37748cd8SNickeau $loggedIn = true; 43*37748cd8SNickeau } 44*37748cd8SNickeau return $loggedIn; 45*37748cd8SNickeau } 46*37748cd8SNickeau 47*37748cd8SNickeau /** 48*37748cd8SNickeau * @param TestRequest $request 49*37748cd8SNickeau * @param string $user 50*37748cd8SNickeau */ 51*37748cd8SNickeau public static function becomeSuperUser(&$request = null, $user = 'admin') 52*37748cd8SNickeau { 53*37748cd8SNickeau global $conf; 54*37748cd8SNickeau $conf['useacl'] = 1; 55*37748cd8SNickeau $conf['superuser'] = $user; 56*37748cd8SNickeau $conf['remoteuser'] = $user; 57*37748cd8SNickeau 58*37748cd8SNickeau if ($request != null) { 59*37748cd8SNickeau $request->setServer('REMOTE_USER', $user); 60*37748cd8SNickeau } else { 61*37748cd8SNickeau global $INPUT; 62*37748cd8SNickeau $INPUT->server->set('REMOTE_USER', $user); 63*37748cd8SNickeau } 64*37748cd8SNickeau 65*37748cd8SNickeau // $_SERVER[] = $user; 66*37748cd8SNickeau // global $USERINFO; 67*37748cd8SNickeau // $USERINFO['grps'] = array('admin', 'user'); 68*37748cd8SNickeau 69*37748cd8SNickeau // global $INFO; 70*37748cd8SNickeau // $INFO['ismanager'] = true; 71*37748cd8SNickeau 72*37748cd8SNickeau } 73*37748cd8SNickeau 74*37748cd8SNickeau /** 75*37748cd8SNickeau * @param $request 76*37748cd8SNickeau * @param string $user - the user to login 77*37748cd8SNickeau */ 78*37748cd8SNickeau public static function logIn(&$request, $user = 'defaultUser') 79*37748cd8SNickeau { 80*37748cd8SNickeau 81*37748cd8SNickeau $request->setServer('REMOTE_USER', $user); 82*37748cd8SNickeau 83*37748cd8SNickeau /** 84*37748cd8SNickeau * The {@link getSecurityToken()} needs it 85*37748cd8SNickeau */ 86*37748cd8SNickeau global $INPUT; 87*37748cd8SNickeau $INPUT->server->set('REMOTE_USER',$user); 88*37748cd8SNickeau 89*37748cd8SNickeau } 90*37748cd8SNickeau 91*37748cd8SNickeau /** 92*37748cd8SNickeau * @return bool if edit auth 93*37748cd8SNickeau */ 94*37748cd8SNickeau public static function isWriter() 95*37748cd8SNickeau { 96*37748cd8SNickeau 97*37748cd8SNickeau return auth_quickaclcheck(PluginUtility::getPageId()) >= AUTH_EDIT; 98*37748cd8SNickeau 99*37748cd8SNickeau } 100*37748cd8SNickeau 101*37748cd8SNickeau public static function isAdmin() 102*37748cd8SNickeau { 103*37748cd8SNickeau global $INFO; 104*37748cd8SNickeau if (!empty($INFO)) { 105*37748cd8SNickeau return $INFO['isadmin']; 106*37748cd8SNickeau } else { 107*37748cd8SNickeau return auth_isadmin(self::getUser(), self::getUserGroups()); 108*37748cd8SNickeau } 109*37748cd8SNickeau } 110*37748cd8SNickeau 111*37748cd8SNickeau public static function isMember($group) 112*37748cd8SNickeau { 113*37748cd8SNickeau 114*37748cd8SNickeau return auth_isMember($group, self::getUser(), self::getUserGroups()); 115*37748cd8SNickeau 116*37748cd8SNickeau } 117*37748cd8SNickeau 118*37748cd8SNickeau public static function isManager() 119*37748cd8SNickeau { 120*37748cd8SNickeau global $INFO; 121*37748cd8SNickeau return $INFO['ismanager']; 122*37748cd8SNickeau } 123*37748cd8SNickeau 124*37748cd8SNickeau private static function getUser() 125*37748cd8SNickeau { 126*37748cd8SNickeau global $INPUT; 127*37748cd8SNickeau return $INPUT->server->str('REMOTE_USER'); 128*37748cd8SNickeau } 129*37748cd8SNickeau 130*37748cd8SNickeau private static function getUserGroups() 131*37748cd8SNickeau { 132*37748cd8SNickeau global $USERINFO; 133*37748cd8SNickeau return is_array($USERINFO) ? $USERINFO['grps'] : array(); 134*37748cd8SNickeau } 135*37748cd8SNickeau 136*37748cd8SNickeau public static function getLogoHtml() 137*37748cd8SNickeau { 138*37748cd8SNickeau /** 139*37748cd8SNickeau * Logo 140*37748cd8SNickeau */ 141*37748cd8SNickeau $tagAttributes = TagAttributes::createEmpty("register"); 142*37748cd8SNickeau $tagAttributes->addComponentAttributeValue(Dimension::WIDTH_KEY, "72"); 143*37748cd8SNickeau $tagAttributes->addComponentAttributeValue(Dimension::HEIGHT_KEY, "72"); 144*37748cd8SNickeau $tagAttributes->addClassName("logo"); 145*37748cd8SNickeau return Site::getLogoImgHtmlTag($tagAttributes); 146*37748cd8SNickeau } 147*37748cd8SNickeau 148*37748cd8SNickeau /** 149*37748cd8SNickeau * @param Doku_Form $form 150*37748cd8SNickeau * @param string $classPrefix 151*37748cd8SNickeau * @param bool $includeLogo 152*37748cd8SNickeau * @return string 153*37748cd8SNickeau */ 154*37748cd8SNickeau public static function getHeaderHTML(Doku_Form $form, $classPrefix, $includeLogo = true) 155*37748cd8SNickeau { 156*37748cd8SNickeau if (isset($form->_content[0]["_legend"])) { 157*37748cd8SNickeau 158*37748cd8SNickeau $title = $form->_content[0]["_legend"]; 159*37748cd8SNickeau /** 160*37748cd8SNickeau * Logo 161*37748cd8SNickeau */ 162*37748cd8SNickeau $logoHtmlImgTag = ""; 163*37748cd8SNickeau if ( 164*37748cd8SNickeau PluginUtility::getConfValue(Identity::CONF_ENABLE_LOGO_ON_IDENTITY_FORMS, 1) 165*37748cd8SNickeau && 166*37748cd8SNickeau $includeLogo === true 167*37748cd8SNickeau ) { 168*37748cd8SNickeau $logoHtmlImgTag = Identity::getLogoHtml(); 169*37748cd8SNickeau } 170*37748cd8SNickeau /** 171*37748cd8SNickeau * Don't use `header` in place of 172*37748cd8SNickeau * div because this is a HTML5 tag 173*37748cd8SNickeau * 174*37748cd8SNickeau * On php 5.6, the php test library method {@link \phpQueryObject::htmlOuter()} 175*37748cd8SNickeau * add the below meta tag 176*37748cd8SNickeau * <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/> 177*37748cd8SNickeau * 178*37748cd8SNickeau */ 179*37748cd8SNickeau return <<<EOF 180*37748cd8SNickeau<div class="$classPrefix-header"> 181*37748cd8SNickeau $logoHtmlImgTag 182*37748cd8SNickeau <h1>$title</h1> 183*37748cd8SNickeau</div> 184*37748cd8SNickeauEOF; 185*37748cd8SNickeau } 186*37748cd8SNickeau return ""; 187*37748cd8SNickeau } 188*37748cd8SNickeau 189*37748cd8SNickeau 190*37748cd8SNickeau} 191