From cf24b36ef61a6ffb7d9aebd9d4582224c94c9e32 Mon Sep 17 00:00:00 2001 From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de> Date: Mon, 30 Mar 2020 14:30:19 +0200 Subject: [PATCH] added customization files --- .../themes/fancytheme/core/loginuserpass.php | 75 +++++++++++ .../themes/fancytheme/includes/footer.php | 24 ++++ .../themes/fancytheme/includes/header.php | 123 ++++++++++++++++++ 3 files changed, 222 insertions(+) create mode 100644 mymodule/themes/fancytheme/core/loginuserpass.php create mode 100644 mymodule/themes/fancytheme/includes/footer.php create mode 100644 mymodule/themes/fancytheme/includes/header.php diff --git a/mymodule/themes/fancytheme/core/loginuserpass.php b/mymodule/themes/fancytheme/core/loginuserpass.php new file mode 100644 index 0000000..e271ca7 --- /dev/null +++ b/mymodule/themes/fancytheme/core/loginuserpass.php @@ -0,0 +1,75 @@ +<?php +$this->data['header'] = $this->t('{login:user_pass_header}'); + +if (strlen($this->data['username']) > 0) { + $this->data['autofocus'] = 'password'; +} else { + $this->data['autofocus'] = 'username'; +} +$this->includeAtTemplateBase('includes/header.php'); + +if ($this->data['errorcode'] !== null) { +?> + <div style="border-left: 1px solid #e8e8e8; border-bottom: 1px solid #e8e8e8; background: #f5f5f5"> + <img src="/<?php echo $this->data['baseurlpath']; ?>resources/icons/experience/gtk-dialog-error.48x48.png" + class="float-l erroricon" style="margin: 15px" alt=""/> + + <h2><?php echo $this->t('{login:error_header}'); ?></h2> + + <p><strong> + <?php + echo htmlspecialchars( + $this->t( + $this->data['errorcodes']['title'][$this->data['errorcode']], + $this->data['errorparams'] + ) + ); + ?> + </strong></p> + <p> + <?php + echo htmlspecialchars( + $this->t( + $this->data['errorcodes']['descr'][$this->data['errorcode']], + $this->data['errorparams'] + ) + ); + ?> + </p> + </div> +<?php +} +?> + <div class="container"> +<br/> + <form action="?" method="post" name="f" class="form-signin"> + <img src="/images/demo/m4lab_logo.jpg" class="img-responsive center-block" width="185" height="192"/> + <br/> + <input type="text" id="username" name="username" placeholder="Email" class="form-control"/> + <br/> + <input type="password" placeholder="Password" id="password" name="password" class="form-control"/> <br/> + <button id="submit_button" class="btn btn-outline-dark btn-block" name="Submit" value="Login" type="Submit" + >Login</button> + <input type="hidden" id="processing_trans" value="<?php echo $this->t('{login:processing}'); ?>" /> + <?php + foreach ($this->data['stateparams'] as $name => $value) { + echo '<input type="hidden" name="'.htmlspecialchars($name).'" value="'.htmlspecialchars($value).'" />'; + } + ?> + </form> + + <p align="middle">Need an account? <a href="https://m4lab.hft-stuttgart.de/account/registration">Signup</a>. Or go <a href="https://transfer.hft-stuttgart.de/">Home</a>.</p> + <p align="middle"><a href="https://m4lab.hft-stuttgart.de/account/forgotPwd">Reset Password</a></p> +</div> + +<?php +if (!empty($this->data['links'])) { + echo '<ul class="links" style="margin-top: 2em">'; + foreach ($this->data['links'] as $l) { + echo '<li><a href="'.htmlspecialchars($l['href']).'">'.htmlspecialchars($this->t($l['text'])).'</a></li>'; + } + echo '</ul>'; +} + +$this->includeAtTemplateBase('includes/footer.php'); + diff --git a/mymodule/themes/fancytheme/includes/footer.php b/mymodule/themes/fancytheme/includes/footer.php new file mode 100644 index 0000000..82827ad --- /dev/null +++ b/mymodule/themes/fancytheme/includes/footer.php @@ -0,0 +1,24 @@ +<?php +if (!empty($this->data['htmlinject']['htmlContentPost'])) { + foreach ($this->data['htmlinject']['htmlContentPost'] as $c) { + echo $c; + } +} +?> + + <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script> + <script src="/js/headfoot.js"></script> + + + </div><!-- #content --> + <div id="footer"> + <hr /> + <img src="/<?php echo $this->data['baseurlpath']; ?>resources/icons/ssplogo-fish-small.png" alt="Small fish logo" style="float: right" /> + Copyright © 2007-2019 <a href="http://uninett.no/">UNINETT AS</a> + + <br style="clear: right" /> + + </div><!-- #footer --> + </div><!-- #wrap --> + </body> +</html> diff --git a/mymodule/themes/fancytheme/includes/header.php b/mymodule/themes/fancytheme/includes/header.php new file mode 100644 index 0000000..7a6d839 --- /dev/null +++ b/mymodule/themes/fancytheme/includes/header.php @@ -0,0 +1,123 @@ +<?php + +/** + * Support the htmlinject hook, which allows modules to change header, pre and post body on all pages. + */ +$this->data['htmlinject'] = [ + 'htmlContentPre' => [], + 'htmlContentPost' => [], + 'htmlContentHead' => [], +]; + +$jquery = []; +if (array_key_exists('jquery', $this->data)) { + $jquery = $this->data['jquery']; +} + +if (array_key_exists('pageid', $this->data)) { + $hookinfo = [ + '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); +} +// - o - o - o - o - o - o - o - o - o - o - o - o - + +/** + * Do not allow to frame SimpleSAMLphp pages from another location. + * This prevents clickjacking attacks in modern browsers. + * + * If you don't want any framing at all you can even change this to + * 'DENY', or comment it out if you actually want to allow foreign + * sites to put SimpleSAMLphp in a frame. The latter is however + * probably not a good security practice. + */ +header('X-Frame-Options: SAMEORIGIN'); + +?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<script type="text/javascript" src="/<?php echo $this->data['baseurlpath']; ?>resources/script.js"></script> +<!-- <link rel="stylesheet" type="text/css" href="/<?php echo $this->data['baseurlpath']; ?>resources/default.css" /> --> +<link rel="icon" type="image/icon" href="/<?php echo $this->data['baseurlpath']; ?>resources/icons/favicon.ico" /> +<title>M4_LAB: User Login</title> +<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" /> +<link rel="stylesheet" type="text/css" href="/css/bootstrap/bootstrap.css"/> +<link rel="stylesheet" type="text/css" href="/css/custom/login.css"/> +<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.2/css/all.css" integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay" crossorigin="anonymous"> +<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> +<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> +<?php + +if (!empty($jquery)) { + $version = '1.8'; + if (array_key_exists('version', $jquery)) { + $version = $jquery['version']; + } + + if ($version == '1.8') { + if (isset($jquery['core']) && $jquery['core']) { + echo '<script type="text/javascript" src="/'.$this->data['baseurlpath'].'resources/jquery-1.8.js"></script>'."\n"; + } + + if (isset($jquery['ui']) && $jquery['ui']) { + echo '<script type="text/javascript" src="/'.$this->data['baseurlpath'].'resources/jquery-ui-1.8.js"></script>'."\n"; + } + + if (isset($jquery['css']) && $jquery['css']) { + echo '<link rel="stylesheet" media="screen" type="text/css" href="/'.$this->data['baseurlpath']. + 'resources/uitheme1.8/jquery-ui.css" />'."\n"; + } + } +} + +if (isset($this->data['clipboard.js'])) { + echo '<script type="text/javascript" src="/'.$this->data['baseurlpath'].'resources/clipboard.min.js"></script>'."\n"; +} + +if (!empty($this->data['htmlinject']['htmlContentHead'])) { + foreach ($this->data['htmlinject']['htmlContentHead'] as $c) { + echo $c; + } +} + +if ($this->isLanguageRTL()) { + ?> + <link rel="stylesheet" type="text/css" href="/<?php echo $this->data['baseurlpath']; ?>resources/default-rtl.css" /> +<?php +} +?> + <meta name="robots" content="noindex, nofollow" /> + +<?php +if (array_key_exists('head', $this->data)) { + echo '<!-- head -->'.$this->data['head'].'<!-- /head -->'; +} +?> +</head> +<?php +$onLoad = ''; +if (array_key_exists('autofocus', $this->data)) { + $onLoad .= ' onload="SimpleSAML_focus(\''.$this->data['autofocus'].'\');"'; +} +?> +<body class="text-center" <?php echo $onLoad; ?>> + + <div id="content"> + +<?php + +if (!empty($this->data['htmlinject']['htmlContentPre'])) { + foreach ($this->data['htmlinject']['htmlContentPre'] as $c) { + echo $c; + } +} +$config = \SimpleSAML\Configuration::getInstance(); +if(! $config->getBoolean('production', true)) { + echo '<div class="caution">' . $this->t('{preprodwarning:warning:warning}'). '</div>'; +} -- GitLab