From 3f24953f10063243a61eb2f9ddcb3e8888f96147 Mon Sep 17 00:00:00 2001 From: Robert Kaiser <kairo@kairo.at> Date: Fri, 20 Jan 2017 04:09:09 +0100 Subject: [PATCH] KaiRo bug 375 - Make branding a configuration option --- .gitignore | 2 + app/KaiRoLogo-100x62.png | Bin 9332 -> 0 bytes app/authorize.php | 6 +- app/authsystem.css | 21 ++-- app/authutils.php-class | 17 +++- app/index.php | 42 ++++---- app/skin/default/authskin.css | 30 ++++++ app/skin/default/icon.svg | 170 +++++++++++++++++++++++++++++++ app/skin/default/icon32.png | Bin 0 -> 314 bytes app/skin/default/logo-100x62.png | Bin 0 -> 536 bytes etc/kairo/auth_settings.json | 6 +- 11 files changed, 257 insertions(+), 37 deletions(-) delete mode 100644 app/KaiRoLogo-100x62.png create mode 100644 app/skin/default/authskin.css create mode 100644 app/skin/default/icon.svg create mode 100644 app/skin/default/icon32.png create mode 100644 app/skin/default/logo-100x62.png diff --git a/.gitignore b/.gitignore index 1533c81..cbc9833 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ composer.lock /vendor /php-utility-classes +/app/skin/* +!/app/skin/default diff --git a/app/KaiRoLogo-100x62.png b/app/KaiRoLogo-100x62.png deleted file mode 100644 index 6288ecb8cc7c14048a34eba8fe81661550b30b17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9332 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 diff --git a/app/authorize.php b/app/authorize.php index a37bd4a..81f95b1 100644 --- a/app/authorize.php +++ b/app/authorize.php @@ -15,7 +15,8 @@ $errors = $utils->checkForSecureConnection(); $utils->sendSecurityHeaders(); // Initialize the HTML document with our basic elements. -extract($utils->initHTMLDocument('Authorization Request | KaiRo.at', 'KaiRo.at Authentication Server')); // sets $document, $html, $head, $title, $body +extract($utils->initHTMLDocument(sprintf(_('Authorization Request | %s'), $utils->settings['operator_name']), + sprintf(_('%s Authentication Server'), $utils->settings['operator_name']))); // sets $document, $html, $head, $title, $body if (!count($errors)) { $session = $utils->initSession(); // Read session or create new session and set cookie. @@ -39,7 +40,8 @@ if (!count($errors)) { $user = array('id' => 0, 'email' => ''); } if (is_null($session)) { - $errors[] = _('The session system is not working.').' '._('Please <a href="https://www.kairo.at/contact">contact KaiRo.at</a> and tell the team about this.'); + $errors[] = _('The session system is not working.').' ' + .sprintf(_('Please <a href="%s">contact %s</a> and tell the team about this.'), $utils->settings['operator_contact_url'], $utils->settings['operator_name']); } elseif ($session['logged_in']) { // We are logged in, process authorization request. diff --git a/app/authsystem.css b/app/authsystem.css index 4c8dd5f..bf0f490 100644 --- a/app/authsystem.css +++ b/app/authsystem.css @@ -5,7 +5,6 @@ body { font-family: sans-serif; /* margin: 0; */ - background-color: #FFFFEE; padding-top: 5em; /* leave space for total height of h1: 4+1(r)em */ } @@ -21,9 +20,6 @@ h1 { height: 4rem; min-height: calc(70px - 1rem); font-size: 2em; - background-color: #003366; - color: #FFFFEE; - background-image: url("KaiRoLogo-100x62.png"); background-repeat: no-repeat; background-position: 10px 50%; overflow: hidden; @@ -47,10 +43,6 @@ h1 { } } -a:link { color: #669999; } -a:visited { color: #003366; } -a:hover, a:active { color: #88BBBB; } - ul.flat { list-style-type: none; margin: 0em; @@ -75,12 +67,14 @@ table.border { border-spacing: 0px; border-collapse: collapse; empty-cells: show; - border-left: 1px solid #336699; - border-top: 1px solid #336699; + border-width: 0; + border-left: 1px solid; + border-top: 1px solid; } table.border th, table.border td { - border-bottom: 1px solid #336699; - border-right: 1px solid #336699; + border-width: 0; + border-bottom: 1px solid; + border-right: 1px solid; } table.border td { padding-left: 3px; @@ -132,13 +126,10 @@ table.border td { } .otheremaillinks > a { - background-color: #EEEEDD; text-decoration: none; padding: .2em; border-radius: 3px; } -.otheremaillinks > a:link, .otheremaillinks > a:visited { color: #BBBBBB; } -.otheremaillinks > a:hover, .otheremaillinks > a:active { color: #808080; } .small { font-size: 0.75em; diff --git a/app/authutils.php-class b/app/authutils.php-class index e76098c..d901669 100755 --- a/app/authutils.php-class +++ b/app/authutils.php-class @@ -123,6 +123,10 @@ class AuthUtils { $this->settings['piwik_site_id'] = intval(@$this->settings['piwik_site_id']); $this->settings['piwik_url'] = strlen(@$this->settings['piwik_url']) ? $this->settings['piwik_url'] : '/piwik/'; $this->settings['piwik_tracker_path'] = strlen(@$this->settings['piwik_tracker_path']) ? $this->settings['piwik_tracker_path'] : '../vendor/piwik/piwik-php-tracker/'; + $this->settings['skin'] = (@$this->settings['skin'] && is_dir('skin/'.$this->settings['skin'])) ? $this->settings['skin'] : 'default'; + $this->settings['operator_name'] = (@$this->settings['operator_name']) ? $this->settings['operator_name'] : 'AuthServer'; + $this->settings['operator_contact_url'] = (@$this->settings['operator_contact_url']) ? $this->settings['operator_contact_url'] : 'https://github.com/KaiRo_at/authserver/'; + $this->settings['info_from_email'] = (@$this->settings['info_from_email']) ? $this->settings['info_from_email'] : 'noreply@example.com'; // Initialize database. $config = new \Doctrine\DBAL\Configuration(); @@ -252,14 +256,16 @@ class AuthUtils { } else { $utils->log('create_session_failure', 'at login, prev session: '.$session['id'].', new user: '.$userid); - $errors[] = _('The session system is not working.').' '._('Please <a href="https://www.kairo.at/contact">contact KaiRo.at</a> and tell the team about this.'); + $errors[] = _('The session system is not working.').' ' + .sprintf(_('Please <a href="%s">contact %s</a> and tell the team about this.'), $this->settings['operator_contact_url'], $this->settings['operator_name']); } } else { $result = $this->db->prepare('UPDATE `auth_sessions` SET `sesskey` = :sesskey, `user` = :userid, `logged_in` = TRUE, `time_expire` = :expire WHERE `id` = :sessid;'); if (!$result->execute(array(':sesskey' => $sesskey, ':userid' => $userid, ':expire' => gmdate('Y-m-d H:i:s', strtotime('+1 day')), ':sessid' => $session['id']))) { $utils->log('login_failure', 'session: '.$session['id'].', user: '.$userid); - $errors[] = _('Login failed unexpectedly.').' '._('Please <a href="https://www.kairo.at/contact">contact KaiRo.at</a> and tell the team about this.'); + $errors[] = _('Login failed unexpectedly.').' ' + .sprintf(_('Please <a href="%s">contact %s</a> and tell the team about this.'), $this->settings['operator_contact_url'], $this->settings['operator_name']); } else { // After update, actually fetch the session row from the DB so we have all values. @@ -510,12 +516,19 @@ class AuthUtils { $style = $head->appendElement('link'); $style->setAttribute('rel', 'stylesheet'); $style->setAttribute('href', 'authsystem.css'); + $style = $head->appendElement('link'); + $style->setAttribute('rel', 'stylesheet'); + $style->setAttribute('href', 'skin/'.$settings['skin'].'/authskin.css'); $head->appendJSFile('authsystem.js'); if ($settings['piwik_enabled']) { $head->setAttribute('data-piwiksite', $settings['piwik_site_id']); $head->setAttribute('data-piwikurl', $settings['piwik_url']); $head->appendJSFile('piwik.js', true, true); } + $icon = $head->appendElement('link'); + $icon->setAttribute('rel', 'shortcut icon'); + $icon->setAttribute('href', 'skin/'.$settings['skin'].'/icon32.png'); + $icon->setAttribute('type', 'image/png'); $title->appendText($titletext); $h1 = $body->appendElement('h1', $headlinetext); diff --git a/app/index.php b/app/index.php index ba0d024..e1be02d 100644 --- a/app/index.php +++ b/app/index.php @@ -10,14 +10,15 @@ $errors = $utils->checkForSecureConnection(); $utils->sendSecurityHeaders(); // Initialize the HTML document with our basic elements. -extract($utils->initHTMLDocument('KaiRo.at Authentication Server')); // sets $document, $html, $head, $title, $body +extract($utils->initHTMLDocument(sprintf(_('%s Authentication Server'), $utils->settings['operator_name']))); // sets $document, $html, $head, $title, $body if (!count($errors)) { $session = $utils->initSession(); // Read session or create new session and set cookie. $user = array('id' => 0, 'email' => ''); $pagetype = 'default'; if (is_null($session)) { - $errors[] = _('The session system is not working.').' '._('Please <a href="https://www.kairo.at/contact">contact KaiRo.at</a> and tell the team about this.'); + $errors[] = _('The session system is not working.').' ' + .sprintf(_('Please <a href="%s">contact %s</a> and tell the team about this.'), $utils->settings['operator_contact_url'], $utils->settings['operator_name']); } elseif (array_key_exists('logout', $_GET)) { $result = $db->prepare('UPDATE `auth_sessions` SET `logged_in` = FALSE WHERE `id` = :sessid;'); @@ -87,7 +88,8 @@ if (!count($errors)) { $result = $db->prepare('INSERT INTO `auth_users` (`email`, `pwdhash`, `status`, `verify_hash`) VALUES (:email, :pwdhash, \'unverified\', :vcode);'); if (!$result->execute(array(':email' => $_POST['email'], ':pwdhash' => $newHash, ':vcode' => $vcode))) { $utils->log('user_insert_failure', 'email: '.$_POST['email'].' - '.$result->errorInfo()[2]); - $errors[] = _('Could not add user.').' '._('Please <a href="https://www.kairo.at/contact">contact KaiRo.at</a> and tell the team about this.'); + $errors[] = _('Could not add user.').' ' + .sprintf(_('Please <a href="%s">contact %s</a> and tell the team about this.'), $utils->settings['operator_contact_url'], $utils->settings['operator_name']); } $user = array('id' => $db->lastInsertId(), 'email' => $_POST['email'], @@ -102,18 +104,18 @@ if (!count($errors)) { $mail->setCharset('utf-8'); $mail->addHeader('X-KAIRO-AUTH', 'email_verification'); $mail->addRecipient($user['email']); - $mail->setSender('noreply@auth.kairo.at', _('KaiRo.at Authentication Service')); - $mail->setSubject('Email Verification for KaiRo.at Authentication'); + $mail->setSender($utils->settings['info_from_email'], sprintf(_('%s Authentication Service'), $utils->settings['operator_name'])); + $mail->setSubject(sprintf(_('Email Verification for %s Authentication'), $utils->settings['operator_name'])); $mail->addMailText(_('Welcome!')."\n\n"); $mail->addMailText(sprintf(_('This email address, %s, has been used for registration on "%s".'), - $user['email'], _('KaiRo.at Authentication Service'))."\n\n"); + $user['email'], sprintf(_('%s Authentication Service'), $utils->settings['operator_name']))."\n\n"); $mail->addMailText(_('Please confirm that registration by clicking the following link (or calling it up in your browser):')."\n"); $mail->addMailText($utils->getDomainBaseURL().strstr($_SERVER['REQUEST_URI'], '?', true) .'?email='.rawurlencode($user['email']).'&verification_code='.rawurlencode($user['verify_hash'])."\n\n"); $mail->addMailText(_('With this confirmation, you accept that we handle your data for the purpose of logging you into other websites when you request that.')."\n"); $mail->addMailText(_('Those websites will get to know your email address but not your password, which we store securely.')."\n"); $mail->addMailText(_('If you do not call this confirmation link within 72 hours, your data will be deleted from our database.')."\n\n"); - $mail->addMailText(sprintf(_('The %s team'), 'KaiRo.at')); + $mail->addMailText(sprintf(_('The %s team'), $utils->settings['operator_name'])); //$mail->setDebugAddress("robert@localhost"); $mailsent = $mail->send(); if ($mailsent) { @@ -121,7 +123,8 @@ if (!count($errors)) { } else { $utils->log('verify_mail_failure', 'user: '.$user['id'].', email: '.$user['email']); - $errors[] = _('The confirmation email could not be sent to you.').' '._('Please <a href="https://www.kairo.at/contact">contact KaiRo.at</a> and tell the team about this.'); + $errors[] = _('The confirmation email could not be sent to you.').' ' + .sprintf(_('Please <a href="%s">contact %s</a> and tell the team about this.'), $utils->settings['operator_contact_url'], $utils->settings['operator_name']); } } else { @@ -130,7 +133,8 @@ if (!count($errors)) { $result = $db->prepare('UPDATE `auth_users` SET `verify_hash` = :vcode WHERE `id` = :userid;'); if (!$result->execute(array(':vcode' => $vcode, ':userid' => $user['id']))) { $utils->log('vhash_set_failure', 'user: '.$user['id']); - $errors[] = _('Could not initiate reset request.').' '._('Please <a href="https://www.kairo.at/contact">contact KaiRo.at</a> and tell the team about this.'); + $errors[] = _('Could not initiate reset request.').' ' + .sprintf(_('Please <a href="%s">contact %s</a> and tell the team about this.'), $utils->settings['operator_contact_url'], $utils->settings['operator_name']); } else { $utils->log('pwd_reset_request', 'user: '.$user['id'].', email: '.$user['email']); @@ -140,16 +144,16 @@ if (!count($errors)) { $mail->setCharset('utf-8'); $mail->addHeader('X-KAIRO-AUTH', 'password_reset'); $mail->addRecipient($user['email']); - $mail->setSender('noreply@auth.kairo.at', _('KaiRo.at Authentication Service')); - $mail->setSubject('How to reset your password for KaiRo.at Authentication'); + $mail->setSender($utils->settings['info_from_email'], sprintf(_('%s Authentication Service'), $utils->settings['operator_name'])); + $mail->setSubject(sprintf(_('How to reset your password for %s Authentication'), $utils->settings['operator_name'])); $mail->addMailText(_('Hi,')."\n\n"); $mail->addMailText(sprintf(_('A request for setting a new password for this email address, %s, has been submitted on "%s".'), - $user['email'], _('KaiRo.at Authentication Service'))."\n\n"); + $user['email'], sprintf(_('%s Authentication Service'), $utils->settings['operator_name']))."\n\n"); $mail->addMailText(_('You can set a new password by clicking the following link (or calling it up in your browser):')."\n"); $mail->addMailText($utils->getDomainBaseURL().strstr($_SERVER['REQUEST_URI'], '?', true) .'?email='.rawurlencode($user['email']).'&reset_code='.rawurlencode($resetcode)."\n\n"); $mail->addMailText(_('If you do not call this confirmation link within 1 hour, this link expires and the existing password is being kept in place.')."\n\n"); - $mail->addMailText(sprintf(_('The %s team'), 'KaiRo.at')); + $mail->addMailText(sprintf(_('The %s team'), $utils->settings['operator_name'])); //$mail->setDebugAddress("robert@localhost"); $mailsent = $mail->send(); if ($mailsent) { @@ -157,7 +161,8 @@ if (!count($errors)) { } else { $utils->log('pwd_reset_mail_failure', 'user: '.$user['id'].', email: '.$user['email']); - $errors[] = _('The email with password reset instructions could not be sent to you.').' '._('Please <a href="https://www.kairo.at/contact">contact KaiRo.at</a> and tell the team about this.'); + $errors[] = _('The email with password reset instructions could not be sent to you.').' ' + .sprintf(_('Please <a href="%s">contact %s</a> and tell the team about this.'), $utils->settings['operator_contact_url'], $utils->settings['operator_name']); } } } @@ -216,7 +221,8 @@ if (!count($errors)) { $result = $db->prepare('UPDATE `auth_users` SET `verify_hash` = \'\', `status` = \'ok\' WHERE `id` = :userid;'); if (!$result->execute(array(':userid' => $user['id']))) { $utils->log('verification_save_failure', 'user: '.$user['id']); - $errors[] = _('Could not save confirmation.').' '._('Please <a href="https://www.kairo.at/contact">contact KaiRo.at</a> and tell the team about this.'); + $errors[] = _('Could not save confirmation.').' ' + .sprintf(_('Please <a href="%s">contact %s</a> and tell the team about this.'), $utils->settings['operator_contact_url'], $utils->settings['operator_name']); } $pagetype = 'verification_done'; } @@ -277,7 +283,8 @@ if (!count($errors)) { ':scope' => $scope, ':userid' => $user['id']))) { $utils->log('client_save_failure', 'client: '.$clientid); - $errors[] = _('Unexpectedly failed to save new client information.').' '._('Please <a href="https://www.kairo.at/contact">contact KaiRo.at</a> and tell the team about this.'); + $errors[] = _('Unexpectedly failed to save new client information.').' ' + .sprintf(_('Please <a href="%s">contact %s</a> and tell the team about this.'), $utils->settings['operator_contact_url'], $utils->settings['operator_name']); } } if (!count($errors)) { @@ -320,7 +327,8 @@ if (!count($errors)) { $result = $db->prepare('UPDATE `auth_users` SET `pwdhash` = :pwdhash, `verify_hash` = \'\' WHERE `id` = :userid;'); if (!$result->execute(array(':pwdhash' => $newHash, ':userid' => $session['user']))) { $utils->log('pwd_reset_failure', 'user: '.$session['user']); - $errors[] = _('Password reset failed.').' '._('Please <a href="https://www.kairo.at/contact">contact KaiRo.at</a> and tell the team about this.'); + $errors[] = _('Password reset failed.').' ' + .sprintf(_('Please <a href="%s">contact %s</a> and tell the team about this.'), $utils->settings['operator_contact_url'], $utils->settings['operator_name']); } else { $pagetype = 'reset_done'; diff --git a/app/skin/default/authskin.css b/app/skin/default/authskin.css new file mode 100644 index 0000000..02906cb --- /dev/null +++ b/app/skin/default/authskin.css @@ -0,0 +1,30 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +body { + background-color: #FFFFFF; +} + +h1 { + background-color: #404040; + color: #FFFFFF; + background-image: url("logo-100x62.png"); +} + +a:link { color: #0000EE; } +a:visited { color: #8000EE; } +a:hover, a:active { color: #8080FF; } + +table.border { + border-color: #404040; +} +table.border th, table.border td { + border-color: #404040; +} + +.otheremaillinks > a { + background-color: #EEEEEE; +} +.otheremaillinks > a:link, .otheremaillinks > a:visited { color: #BBBBBB; } +.otheremaillinks > a:hover, .otheremaillinks > a:active { color: #808080; } diff --git a/app/skin/default/icon.svg b/app/skin/default/icon.svg new file mode 100644 index 0000000..3f9007e --- /dev/null +++ b/app/skin/default/icon.svg @@ -0,0 +1,170 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns="http://www.w3.org/2000/svg" + xmlns:cc="http://web.resource.org/cc/" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:ns1="http://sozi.baierouge.fr" + xmlns:xlink="http://www.w3.org/1999/xlink" + id="svg18832" + sodipodi:docname="login_mini_icon_2.svg" + viewBox="0 0 212.6 212.6" + sodipodi:version="0.32" + version="1.0" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + inkscape:version="0.45.1" + sodipodi:docbase="/home/andre/data/projekte_privat/wiesenschluempfe/bilder/icons" + > + <sodipodi:namedview + id="base" + inkscape:zoom="0.98994949" + borderopacity="1.0" + inkscape:current-layer="layer1" + inkscape:cx="116.8274" + inkscape:object-bbox="true" + inkscape:grid-points="true" + inkscape:guide-points="true" + showgrid="true" + inkscape:document-units="mm" + bordercolor="#666666" + inkscape:window-x="0" + inkscape:window-y="0" + objecttolerance="10000" + inkscape:object-nodes="true" + inkscape:window-width="858" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + guidetolerance="10000" + pagecolor="#ffffff" + gridtolerance="10000" + inkscape:object-points="true" + inkscape:cy="160.64295" + inkscape:window-height="580" + /> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer" + transform="translate(-241.43 -409.02)" + > + <path + id="path15809" + style="fill-rule:evenodd;fill:#000000" + d="m295.02 409.02l-0.44 35.44h124.01v141.73h-124.01v35.43h159.45v-212.6h-159.01z" + inkscape:export-ydpi="52.360001" + sodipodi:nodetypes="ccccccccc" + inkscape:export-filename="/home/andre/data/projekte_privat/wiesenschluempfe/bilder/logout_mini_icon.png" + inkscape:export-xdpi="52.360001" + /> + <path + id="path15815" + style="fill:#000000" + d="m241.43 533.04h88.58l-35.43 35.43h53.15l53.15-53.15-53.15-53.15h-53.15l35.43 35.44h-88.58v35.43z" + inkscape:export-ydpi="52.360001" + sodipodi:nodetypes="cccccccccc" + inkscape:export-filename="/home/andre/data/projekte_privat/wiesenschluempfe/bilder/logout_mini_icon.png" + inkscape:export-xdpi="52.360001" + /> + </g + > + <metadata + > + <rdf:RDF + > + <cc:Work + > + <dc:format + >image/svg+xml</dc:format + > + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" + /> + <cc:license + rdf:resource="http://creativecommons.org/licenses/publicdomain/" + /> + <dc:publisher + > + <cc:Agent + rdf:about="http://openclipart.org/" + > + <dc:title + >Openclipart</dc:title + > + </cc:Agent + > + </dc:publisher + > + <dc:title + >login mini icon</dc:title + > + <dc:date + >2008-02-13T10:41:13</dc:date + > + <dc:description + /> + <dc:source + >https://openclipart.org/detail/13847/login-mini-icon-by-artmaster</dc:source + > + <dc:creator + > + <cc:Agent + > + <dc:title + >artmaster</dc:title + > + </cc:Agent + > + </dc:creator + > + <dc:subject + > + <rdf:Bag + > + <rdf:li + >black</rdf:li + > + <rdf:li + >entry</rdf:li + > + <rdf:li + >icon</rdf:li + > + <rdf:li + >login</rdf:li + > + <rdf:li + >mini</rdf:li + > + <rdf:li + >sign</rdf:li + > + </rdf:Bag + > + </dc:subject + > + </cc:Work + > + <cc:License + rdf:about="http://creativecommons.org/licenses/publicdomain/" + > + <cc:permits + rdf:resource="http://creativecommons.org/ns#Reproduction" + /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#Distribution" + /> + <cc:permits + rdf:resource="http://creativecommons.org/ns#DerivativeWorks" + /> + </cc:License + > + </rdf:RDF + > + </metadata + > +</svg +> diff --git a/app/skin/default/icon32.png b/app/skin/default/icon32.png new file mode 100644 index 0000000000000000000000000000000000000000..f177927d24cf57126110a7d93c15d98fd9e935d3 GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7l!{JxM1({$v_d#0*}aI zppNSx%;=;sy8<Z4UgGKN%Kng1go#rz_s5qupwMwo7srr@!*8eC@*OhZaf`1{+rekc zsNPU*V7M&DmOF-T;{ma0eX28V__bW||McvH{-&=-Gk>hJ-f+}&t-|u-fkF*=tRGl1 zSS;BWM==+ilH4%+d1|zlH&X#ylF~Av1!4ln`O}X|O%=#u&~4#tU`rBQz`jmWfIngK zjOo{Tw1P^yJa08ca3l#HxZN?&G+JPZ^Nhz|e;*NGig{LW@yFw{-BN)oGLIg-+_m*+ zD1+Eh-}_B5p@vG6{oAhw?K*w8EB5ynaqpL04_28oM?En;7xrxu&`S)Su6{1-oD!M< Dd?0pP literal 0 HcmV?d00001 diff --git a/app/skin/default/logo-100x62.png b/app/skin/default/logo-100x62.png new file mode 100644 index 0000000000000000000000000000000000000000..8424a5dc98423b64d1d1b058ba6f1b00eb9d0010 GIT binary patch literal 536 zcmeAS@N?(olHy`uVBq!ia0vp^DL`z;!3HGne&2T#NU<e(ySp&_2f+n<mrn+Ya29w( z7Bes~$$~JWUDUc=Ktc8rPhVH|hm0ajin^A<V(bhIj7vRT978H@y}fPdci2Io^<lja z7hhvQ%Zf?Un7r0Cu<)`jTDsWT#KAppLRV9tv%(S8ON~5_<eVonFX-JEzv=zgdn*6l z+?*S$D&UzG$K<~zQAuf+)M~+BvC$T6h8>PPNfS2poOx(|L;=j(<TP3H%1Zx+l^6C} zGOhdl?n-KynczkSF(>{L3jEoRl^$9iF+B0hC5`Xo8QBLlt%`9<i%dPrC;#$KW3mzB zE1Wv>xZuZ^ldj61;@P3Or$)Tu^cmY`iPX*NUuOlTghzT$X`gj^dWz9!yVIXTyC%&{ zum3Bs_)9~QfT2ip$3h-fqgOxL{(e{a#naQ+eW>$a=}ntcWnW^;U&%kxzbR1>{_aKg zotP<cLf3cQ*6t4a{B5_2*W2fcMH+SsicU^CWv;OGQC82wt$%WR9!^T_k+c5VEVu8o zZb48*?(QQQduv`OnC9q79ai`y!6tavphKd~@rVJBQd^>cAy0EhA`j=HFXb(@3DPq} z`3%e1_uX7tJi+`3dq@&6jOLWiyt4d&%Zqz5VZ2Opn9B7c`y6GOC5`~4z?8?;pRB*H X%Dg*zq<R}L4jDXM{an^LB{Ts51byC{ literal 0 HcmV?d00001 diff --git a/etc/kairo/auth_settings.json b/etc/kairo/auth_settings.json index fa4b58b..864ca60 100644 --- a/etc/kairo/auth_settings.json +++ b/etc/kairo/auth_settings.json @@ -8,8 +8,12 @@ "" ], "client_reg_email_whitelist": ["you@example.com"], +"skin": "default", +"operator_name": "AuthServer", +"operator_contact_url": "https://github.com/KaiRo_at/authserver/", +"info_from_email": "noreply@example.com", "piwik_enabled": false, "piwik_url": "/piwik/", "piwik_site_id": 1, -"piwik_tracker_path": "/srv/www/piwik/vendor/piwik/piwik-php-tracker/" +"piwik_tracker_path": "/srv/www/piwik/vendor/piwik/piwik-php-tracker/", } -- 2.43.0