public static function getInstance() { if (self::$instance !== null) { return self::$instance; } $loader = new \Twig_Loader_Filesystem(); $translator = Translator::getInstance(); $modules = \SimpleSAML_Module::getModules(); foreach ($modules as $module) { if (\SimpleSAML_Module::isModuleEnabled($module)) { $path = \SimpleSAML_Module::getModuleDir($module); $templatePath = self::resourceExists('templates', $path); if (false !== $templatePath) { $loader->addPath($templatePath, $module); } $translationPath = self::resourceExists('translations', $path); if (false !== $translationPath) { $translations = new Finder(); $translations->files()->in($translationPath)->name('/\\.[a-zA-Z_]+\\.yml$/'); /** @var SplFileInfo $translation */ foreach ($translations as $translation) { $name = $translation->getBasename('.yml'); $locale = substr($name, strrpos($name, '.') + 1); $translator->addResource('yaml', $translation->getPathname(), $locale, $module); } } } } self::$instance = new \Twig_Environment($loader); self::$instance->addExtension(new TranslationExtension($translator)); return self::$instance; }
/** * Class autoloader. */ public static function classAutoLoader() { $moduleConfig = SimpleSAML_Configuration::getConfig('module_tiqr.php'); $moduleDir = SimpleSAML_Module::getModuleDir('authTiqr'); $path = array('tiqr.path' => $moduleConfig->getString('tiqr.path', $moduleDir . '/extlibinc/tiqr'), 'phpqrcode.path' => $moduleConfig->getString('phpqrcode.path', $moduleDir . '/extlibinc/phpqrcode'), 'zend.path' => $moduleConfig->getString('zend.path', $moduleDir . '/extlibinc/zend')); require_once $path['tiqr.path'] . '/Tiqr/AutoLoader.php'; $autoloader = Tiqr_AutoLoader::getInstance($path); $autoloader->setIncludePath(); }
/** * This method retrieves a dictionary with the name given. * * @param string $name The name of the dictionary, as the filename in the dictionary directory, without the * '.php' ending. * * @return array An associative array with the dictionary. */ private function getDictionary($name) { assert('is_string($name)'); if (!array_key_exists($name, $this->dictionaries)) { $sepPos = strpos($name, ':'); if ($sepPos !== false) { $module = substr($name, 0, $sepPos); $fileName = substr($name, $sepPos + 1); $dictDir = \SimpleSAML_Module::getModuleDir($module) . '/dictionaries/'; } else { $dictDir = $this->configuration->getPathValue('dictionarydir', 'dictionaries/'); $fileName = $name; } $this->dictionaries[$name] = $this->readDictionaryFile($dictDir . $fileName); } return $this->dictionaries[$name]; }
/** * Autoload function for SimpleSAMLphp modules. * * @param string $className Name of the class. */ function SimpleSAML_autoload($className) { $modulePrefixLength = strlen('sspmod_'); $classPrefix = substr($className, 0, $modulePrefixLength); if ($classPrefix !== 'sspmod_') { return; } $modNameEnd = strpos($className, '_', $modulePrefixLength); $module = substr($className, $modulePrefixLength, $modNameEnd - $modulePrefixLength); $moduleClass = substr($className, $modNameEnd + 1); if (!SimpleSAML_Module::isModuleEnabled($module)) { return; } $file = SimpleSAML_Module::getModuleDir($module) . '/lib/' . str_replace('_', '/', $moduleClass) . '.php'; if (file_exists($file)) { require_once $file; } }
function processInput($fieldValues, $expectedValues) { global $eppnRealm; $skv = array(); foreach ($expectedValues as $db => $field) { switch ($db) { case "cn": $hookfile = SimpleSAML_Module::getModuleDir('selfregister') . '/hooks/hook_attributes.php'; include_once $hookfile; $skv[$db] = get_cn_hook($fieldValues); break; case "userPassword": $skv[$db] = sspmod_selfregister_Util::validatePassword($fieldValues); break; // case "eduPersonPrincipalName": // $skv[$db] = $fieldValues['uid'].'@'.$eppnRealm; // break; // case "eduPersonPrincipalName": // $skv[$db] = $fieldValues['uid'].'@'.$eppnRealm; // break; case "mail": if (array_key_exists('token', $_POST)) { global $tokenLifetime; $tg = new SimpleSAML_Auth_TimeLimitedToken($tokenLifetime); $email = $_POST['emailconfirmed']; $tg->addVerificationData($email); $token = $_POST['token']; if (!$tg->validate_token($token)) { throw new sspmod_selfregister_Error_UserException('invalid_token'); } $skv[$db] = $email; } break; default: $skv[$db] = $fieldValues[$field]; } } return $skv; }
/** * Autoload function for simpleSAMLphp. * * It will autoload all classes stored in the lib-directory. * * @param $className The name of the class. */ function SimpleSAML_autoload($className) { $libDir = dirname(__FILE__) . '/'; /* Special handling for xmlseclibs.php. */ if (in_array($className, array('XMLSecurityKey', 'XMLSecurityDSig', 'XMLSecEnc'), TRUE)) { require_once $libDir . 'xmlseclibs.php'; return; } /* Handlig of modules. */ if (substr($className, 0, 7) === 'sspmod_') { $modNameEnd = strpos($className, '_', 7); $module = substr($className, 7, $modNameEnd - 7); $moduleClass = substr($className, $modNameEnd + 1); if (!SimpleSAML_Module::isModuleEnabled($module)) { return; } $file = SimpleSAML_Module::getModuleDir($module) . '/lib/' . str_replace('_', '/', $moduleClass) . '.php'; } else { $file = $libDir . str_replace('_', '/', $className) . '.php'; } if (file_exists($file)) { require_once $file; } }
if ($url === false) { $url = ''; } if (!SimpleSAML_Module::isModuleEnabled($module)) { throw new SimpleSAML_Error_NotFound('The module \'' . $module . '\' was either not found, or wasn\'t enabled.'); } /* Make sure that the request isn't suspicious (contains references to current directory or parent directory or * anything like that. Searching for './' in the URL will detect both '../' and './'. Searching for '\' will detect * attempts to use Windows-style paths. */ if (strpos($url, '\\') !== false) { throw new SimpleSAML_Error_BadRequest('Requested URL contained a backslash.'); } elseif (strpos($url, './') !== false) { throw new SimpleSAML_Error_BadRequest('Requested URL contained \'./\'.'); } $moduleDir = SimpleSAML_Module::getModuleDir($module) . '/www/'; // check for '.php/' in the path, the presence of which indicates that another php-script should handle the request for ($phpPos = strpos($url, '.php/'); $phpPos !== false; $phpPos = strpos($url, '.php/', $phpPos + 1)) { $newURL = substr($url, 0, $phpPos + 4); $param = substr($url, $phpPos + 4); if (is_file($moduleDir . $newURL)) { /* $newPath points to a normal file. Point execution to that file, and * save the remainder of the path in PATH_INFO. */ $url = $newURL; $_SERVER['PATH_INFO'] = $param; break; } } $path = $moduleDir . $url; if ($path[strlen($path) - 1] === '/') {
<?php /** * Header template. * * The main header template. This is used throughout the application. * * @author Cory Collier <*****@*****.**> * @license http://opensource.org/licenses/MIT MIT License * @version git: $Id$ * @link https://github.com/corycollier/simplesamlphp-module-themes * @see https://github.com/simplesamlphp/simplesamlphp/ * @since File available since Release 1.3.0 */ $dir = SimpleSAML_Module::getModuleDir('themes'); require $dir . '/lib/functions.php'; // Define variables. $url_path = SimpleSAML_Module::getModuleURL('themes'); $css_path = $url_path . '/css'; $js_path = $url_path . '/js'; $img_path = $url_path . '/img'; $language = $this->getLanguage(); $this->data['isadmin'] = (bool) SimpleSAML_Session::getSessionFromRequest()->getAuthState('admin'); $login_url = isset($this->data['loginurl']) ? $this->data['loginurl'] : ''; $title = isset($this->data['header']) ? $this->data['header'] : 'SimpleSAMLphp'; $alert_msg = $this->data['isadmin'] ? $this->t('{core:frontpage:loggedin_as_admin}') : '<a href="' . $login_url . '">' . $this->t('{core:frontpage:login_as_admin}') . '</a>'; if (array_key_exists('pageid', $this->data)) { $hookinfo = array('pre' => &$this->data['htmlinject']['htmlContentPre'], 'post' => &$this->data['htmlinject']['htmlContentPost'], 'head' => &$this->data['htmlinject']['htmlContentHead'], 'jquery' => &$jquery, 'page' => $this->data['pageid']); SimpleSAML_Module::callHooks('htmlinject', $hookinfo); } ?>
/** * Find template path. * * This function locates the given template based on the template name. It will first search for the template in * the current theme directory, and then the default theme. * * The template name may be on the form <module name>:<template path>, in which case it will search for the * template file in the given module. * * @param string $template The relative path from the theme directory to the template file. * * @return string The absolute path to the template file. * * @throws Exception If the template file couldn't be found. */ private function findTemplatePath($template) { assert('is_string($template)'); $tmp = explode(':', $template, 2); if (count($tmp) === 2) { $templateModule = $tmp[0]; $templateName = $tmp[1]; } else { $templateModule = 'default'; $templateName = $tmp[0]; } $tmp = explode(':', $this->configuration->getString('theme.use', 'default'), 2); if (count($tmp) === 2) { $themeModule = $tmp[0]; $themeName = $tmp[1]; } else { $themeModule = null; $themeName = $tmp[0]; } // first check the current theme if ($themeModule !== null) { // .../module/<themeModule>/themes/<themeName>/<templateModule>/<templateName> $filename = SimpleSAML_Module::getModuleDir($themeModule) . '/themes/' . $themeName . '/' . $templateModule . '/' . $templateName; } elseif ($templateModule !== 'default') { // .../module/<templateModule>/templates/<themeName>/<templateName> $filename = SimpleSAML_Module::getModuleDir($templateModule) . '/templates/' . $templateName; } else { // .../templates/<theme>/<templateName> $filename = $this->configuration->getPathValue('templatedir', 'templates/') . $templateName; } if (file_exists($filename)) { return $filename; } // not found in current theme SimpleSAML_Logger::debug($_SERVER['PHP_SELF'] . ' - Template: Could not find template file [' . $template . '] at [' . $filename . '] - now trying the base template'); // try default theme if ($templateModule !== 'default') { // .../module/<templateModule>/templates/<templateName> $filename = SimpleSAML_Module::getModuleDir($templateModule) . '/templates/' . $templateName; } else { // .../templates/<templateName> $filename = $this->configuration->getPathValue('templatedir', 'templates/') . '/' . $templateName; } if (file_exists($filename)) { return $filename; } // not found in default template - log error and throw exception $error = 'Template: Could not find template file [' . $template . '] at [' . $filename . ']'; SimpleSAML_Logger::critical($_SERVER['PHP_SELF'] . ' - ' . $error); throw new Exception($error); }
function __autoload($class_name) { $tab_classes = array( 'DB' => '_lib'.DIRECTORY_SEPARATOR.'DB'.DIRECTORY_SEPARATOR.'DB.class.php' , 'FirePHP' => '_lib'.DIRECTORY_SEPARATOR.'FirePHPCore'.DIRECTORY_SEPARATOR.'FirePHP.class.php' , 'FPDF' => '_lib'.DIRECTORY_SEPARATOR.'FPDF'.DIRECTORY_SEPARATOR.'fpdf.php' , 'PDF_Label' => '_lib'.DIRECTORY_SEPARATOR.'FPDF'.DIRECTORY_SEPARATOR.'PDF_Label.php' , 'FPDI' => '_lib'.DIRECTORY_SEPARATOR.'FPDI'.DIRECTORY_SEPARATOR.'fpdi.php' , 'PDFMerger' => '_lib'.DIRECTORY_SEPARATOR.'FPDI'.DIRECTORY_SEPARATOR.'PDFMerger.php' , 'phpCAS' => '_lib'.DIRECTORY_SEPARATOR.'phpCAS'.DIRECTORY_SEPARATOR.'CAS.php' , 'cssmin' => '_inc'.DIRECTORY_SEPARATOR.'class.CssMinified.php' , 'MyDOMDocument' => '_inc'.DIRECTORY_SEPARATOR.'class.domdocument.php' , 'JSMin' => '_inc'.DIRECTORY_SEPARATOR.'class.JavaScriptMinified.php' , 'JavaScriptPacker' => '_inc'.DIRECTORY_SEPARATOR.'class.JavaScriptPacker.php' , 'PDF' => '_inc'.DIRECTORY_SEPARATOR.'class.PDF.php' , 'Formulaire' => '_inc'.DIRECTORY_SEPARATOR.'class.formulaire.php' , 'DB_STRUCTURE_ADMINISTRATEUR' => '_sql'.DIRECTORY_SEPARATOR.'requetes_structure_administrateur.php' , 'DB_STRUCTURE_DIRECTEUR' => '_sql'.DIRECTORY_SEPARATOR.'requetes_structure_directeur.php' , 'DB_STRUCTURE_ELEVE' => '_sql'.DIRECTORY_SEPARATOR.'requetes_structure_eleve.php' , 'DB_STRUCTURE_PROFESSEUR' => '_sql'.DIRECTORY_SEPARATOR.'requetes_structure_professeur.php' , 'DB_STRUCTURE_PUBLIC' => '_sql'.DIRECTORY_SEPARATOR.'requetes_structure_public.php' , 'DB_STRUCTURE_WEBMESTRE' => '_sql'.DIRECTORY_SEPARATOR.'requetes_structure_webmestre.php' , 'DB_STRUCTURE_BILAN' => '_sql'.DIRECTORY_SEPARATOR.'requetes_structure_bilan.php' , 'DB_STRUCTURE_OFFICIEL' => '_sql'.DIRECTORY_SEPARATOR.'requetes_structure_officiel.php' , 'DB_STRUCTURE_COMMUN' => '_sql'.DIRECTORY_SEPARATOR.'requetes_structure_commun.php' , 'DB_STRUCTURE_MAJ_BASE' => '_sql'.DIRECTORY_SEPARATOR.'requetes_structure_maj_base.php' , 'DB_STRUCTURE_REFERENTIEL' => '_sql'.DIRECTORY_SEPARATOR.'requetes_structure_referentiel.php' , 'DB_STRUCTURE_SOCLE' => '_sql'.DIRECTORY_SEPARATOR.'requetes_structure_socle.php' , 'DB_WEBMESTRE_PUBLIC' => '_sql'.DIRECTORY_SEPARATOR.'requetes_webmestre_public.php' , 'DB_WEBMESTRE_SELECT' => '_sql'.DIRECTORY_SEPARATOR.'requetes_webmestre_select.php' , 'DB_WEBMESTRE_WEBMESTRE' => '_sql'.DIRECTORY_SEPARATOR.'requetes_webmestre_webmestre.php' ); if(isset($tab_classes[$class_name])) { load_class($class_name,CHEMIN_SACOCHE.$tab_classes[$class_name]); } // Remplacement de l'autoload de phpCAS qui n'est pas chargé à cause de celui de SACoche // Voir le fichier ./_lib/phpCAS/CAS/autoload.php elseif(substr($class_name,0,4)=='CAS_') { load_class($class_name,CHEMIN_SACOCHE.'_lib'.DIRECTORY_SEPARATOR.'phpCAS'.DIRECTORY_SEPARATOR.str_replace('_',DIRECTORY_SEPARATOR,$class_name).'.php'); } // Remplacement de l'autoload de SimpleSAMLphp qui n'est pas chargé à cause de celui de SACoche // Voir le fichier ./_lib/SimpleSAMLphp/lib/_autoload.php else if(in_array($class_name, array('XMLSecurityKey', 'XMLSecurityDSig', 'XMLSecEnc'), TRUE)) { load_class($class_name,CHEMIN_SACOCHE.'_lib'.DIRECTORY_SEPARATOR.'SimpleSAMLphp'.DIRECTORY_SEPARATOR.'lib'.DIRECTORY_SEPARATOR.'xmlseclibs.php'); } else if(substr($class_name,0,7)=='sspmod_') { $modNameEnd = strpos($class_name, '_', 7); $module = substr($class_name, 7, $modNameEnd - 7); $moduleClass = substr($class_name, $modNameEnd + 1); if(SimpleSAML_Module::isModuleEnabled($module)) { load_class($class_name,SimpleSAML_Module::getModuleDir($module).'/lib/'.str_replace('_', DIRECTORY_SEPARATOR, $moduleClass).'.php'); } } elseif( (substr($class_name,0,5)=='SAML2') || (substr($class_name,0,10)=='SimpleSAML') ) { load_class($class_name,CHEMIN_SACOCHE.'_lib'.DIRECTORY_SEPARATOR.'SimpleSAMLphp'.DIRECTORY_SEPARATOR.'lib'.DIRECTORY_SEPARATOR.str_replace('_','/',$class_name).'.php'); } // La classe invoquée ne correspond pas à ce qui vient d'être passé en revue else { affich_message_exit($titre='Classe introuvable',$contenu='La classe '.$class_name.' est inconnue.'); } }
public static function filterAsAttributes($asAttributes, $reviewAttr) { $hookfile = SimpleSAML_Module::getModuleDir('selfregister') . '/hooks/hook_attributes.php'; include_once $hookfile; return filterAsAttributes($asAttributes, $reviewAttr); }
if (!is_null($sid['url'])) { SimpleSAML_Utilities::checkURLAllowed($sid['url']); } $state = SimpleSAML_Auth_State::loadState($id, 'duosecurity:request'); if (array_key_exists('core:SP', $state)) { $spentityid = $state['core:SP']; } else { if (array_key_exists('saml:sp:State', $state)) { $spentityid = $state['saml:sp:State']['core:SP']; } else { $spentityid = 'UNKNOWN'; } } // Duo returned a good auth, pass the user on if (isset($_POST['sig_response'])) { require SimpleSAML_Module::getModuleDir('duosecurity') . '/templates/duo_web.php'; $resp = Duo::verifyResponse($state['duosecurity:ikey'], $state['duosecurity:skey'], $state['duosecurity:akey'], $_POST['sig_response']); if (isset($state['Attributes'][$state['duosecurity:usernameAttribute']])) { $username = $state['Attributes'][$state['duosecurity:usernameAttribute']][0]; } else { throw new SimpleSAML_Error_BadRequest('Missing required username attribute.'); } if ($resp != NULL and $resp === $username) { $state['duo_complete'] = True; SimpleSAML_Auth_ProcessingChain::resumeProcessing($state); } else { throw new SimpleSAML_Error_BadRequest('Response verification failed.'); } } // Bypass Duo if auth source is not specified in config file /*