diff options
-rw-r--r-- | inc/eventlog.inc.php | 23 | ||||
-rw-r--r-- | lang/de/templates/page-main-guest.json | 2 | ||||
-rw-r--r-- | lang/en/templates/page-main-guest.json | 2 | ||||
-rw-r--r-- | modules/adduser.inc.php | 20 | ||||
-rw-r--r-- | modules/main.inc.php | 4 | ||||
-rw-r--r-- | templates/page-adduser.html | 6 | ||||
-rw-r--r-- | templates/page-main-guest.html | 8 |
7 files changed, 48 insertions, 17 deletions
diff --git a/inc/eventlog.inc.php b/inc/eventlog.inc.php index 0d7f6d4a..dadccdd7 100644 --- a/inc/eventlog.inc.php +++ b/inc/eventlog.inc.php @@ -2,14 +2,29 @@ class EventLog { - - public static function log($eventId, $message) + + private static function log($type, $message) { Database::exec("INSERT INTO eventlog (dateline, logtypeid, description)" - . " VALUES (UNIX_TIMESTAMP(), :eventid, :message)", array( - 'eventid' => $eventId, + . " VALUES (UNIX_TIMESTAMP(), :type, :message)", array( + 'type' => $type, 'message' => $message )); } + public static function failure($message) + { + self::log('failure', $message); + } + + public static function warning($message) + { + self::log('warning', $message); + } + + public static function info($message) + { + self::log('info', $message); + } + } diff --git a/lang/de/templates/page-main-guest.json b/lang/de/templates/page-main-guest.json index efd11954..876fccac 100644 --- a/lang/de/templates/page-main-guest.json +++ b/lang/de/templates/page-main-guest.json @@ -1,5 +1,7 @@ { "lang_introGuest": "Dies ist das Administrations-Interface der lokalen bwLehrpool-Installation. Bitte authentifizieren Sie sich, um Einstellungen vorzunehmen.", "lang_login": "Anmelden", + "lang_noExistingAccount": "Es existiert noch kein Administrator-Zugang f\u00fcr diesen Satelliten-Server.", + "lang_register": "Registrieren", "lang_welcome": "Willkommen" }
\ No newline at end of file diff --git a/lang/en/templates/page-main-guest.json b/lang/en/templates/page-main-guest.json index 8676d0d4..6526f5bd 100644 --- a/lang/en/templates/page-main-guest.json +++ b/lang/en/templates/page-main-guest.json @@ -1,5 +1,7 @@ { "lang_introGuest": "This is the administration interface of the local bwLehrpool intallation. Please authenticate yourself to adjust settings.", "lang_login": "Login", + "lang_noExistingAccount": "No account has been created yet. Sign up to become the administrator.", + "lang_register": "Register", "lang_welcome": "Welcome" }
\ No newline at end of file diff --git a/modules/adduser.inc.php b/modules/adduser.inc.php index db1b6f27..47b0745c 100644 --- a/modules/adduser.inc.php +++ b/modules/adduser.inc.php @@ -9,22 +9,22 @@ class Page_AddUser extends Page if (isset($_POST['action']) && $_POST['action'] === 'adduser') { // Check required fields - if (empty($_POST['user']) || empty($_POST['pass1']) || empty($_POST['pass2']) || empty($_POST['fullname']) || empty($_POST['phone']) || empty($_POST['email'])) { + if (empty($_POST['user']) || empty($_POST['pass1']) || empty($_POST['pass2']) || empty($_POST['fullname'])) { Message::addError('empty-field'); Util::redirect('?do=AddUser'); } elseif ($_POST['pass1'] !== $_POST['pass2']) { Message::addError('password-mismatch'); Util::redirect('?do=AddUser'); - } elseif (Database::queryFirst('SELECT userid FROM user LIMIT 1') !== false) { + } elseif (!User::hasPermission('superadmin') && Database::queryFirst('SELECT userid FROM user LIMIT 1') !== false) { Message::addError('adduser-disabled'); Util::redirect('?do=Session&action=login'); } else { $data = array( - 'user' => $_POST['user'], - 'pass' => Crypto::hash6($_POST['pass1']), - 'fullname' => $_POST['fullname'], - 'phone' => $_POST['phone'], - 'email' => $_POST['email'], + 'user' => $_POST['user'], + 'pass' => Crypto::hash6($_POST['pass1']), + 'fullname' => $_POST['fullname'], + 'phone' => $_POST['phone'], + 'email' => $_POST['email'], ); if (Database::exec('INSERT INTO user SET login = :user, passwd = :pass, fullname = :fullname, phone = :phone, email = :email', $data) != 1) { Util::traceError('Could not create new user in DB'); @@ -33,6 +33,9 @@ class Page_AddUser extends Page $ret = Database::queryFirst('SELECT Count(*) AS num FROM user'); if ($ret !== false && $ret['num'] == 1) { Database::exec('UPDATE user SET permissions = 1'); + EventLog::info('Created first user ' . $_POST['user']); + } else { + EventLog::info(User::getName() . ' created user ' . $_POST['user']); } Message::addInfo('adduser-success'); Util::redirect('?do=Session&action=login'); @@ -44,14 +47,13 @@ class Page_AddUser extends Page { // No user was added, check if current user is allowed to add a new user // Currently you can only add users if there is no user yet. :) - if (Database::queryFirst('SELECT userid FROM user LIMIT 1') !== false) { + if (!User::hasPermission('superadmin') && Database::queryFirst('SELECT userid FROM user LIMIT 1') !== false) { Message::addError('adduser-disabled'); } else { Render::setTitle(Dictionary::translate('lang_createUser')); Render::addTemplate('page-adduser', $_POST); } - } } diff --git a/modules/main.inc.php b/modules/main.inc.php index 42a980e3..01adf768 100644 --- a/modules/main.inc.php +++ b/modules/main.inc.php @@ -13,7 +13,9 @@ class Page_Main extends Page // Render::setTitle('abc'); if (!User::isLoggedIn()) { - Render::addTemplate('page-main-guest'); + Render::addTemplate('page-main-guest', array( + 'register' => (Database::queryFirst('SELECT userid FROM user LIMIT 1') === false) + )); return; } // Logged in here diff --git a/templates/page-adduser.html b/templates/page-adduser.html index 015dac06..08b6063e 100644 --- a/templates/page-adduser.html +++ b/templates/page-adduser.html @@ -2,16 +2,16 @@ <form class="form-adduser" action="?do=AddUser" method="post"> <h2 class="form-signin-heading">{{lang_createUser}}</h2> <div class="row"> - <div class="col-md-4">{{lang_username}}</div> + <div class="col-md-4">{{lang_username}} *</div> <div class="col-md-4"><input type="text" name="user" value="{{user}}" class="form-control" placeholder="{{lang_username}}" autofocus></div> </div> <div class="row"> - <div class="col-md-4">{{lang_password}}</div> + <div class="col-md-4">{{lang_password}} *</div> <div class="col-md-4"><input type="password" name="pass1" class="form-control" placeholder="{{lang_password}}"></div> <div class="col-md-4"><input type="password" name="pass2" class="form-control" placeholder="{{lang_confirmation}}"></div> </div> <div class="row"> - <div class="col-md-4">{{lang_fullName}}</div> + <div class="col-md-4">{{lang_fullName}} *</div> <div class="col-md-4"><input type="text" name="fullname" value="{{fullname}}" class="form-control" placeholder="{{lang_fullName}}"></div> </div> <div class="row"> diff --git a/templates/page-main-guest.html b/templates/page-main-guest.html index 09fc59b3..8f3051d5 100644 --- a/templates/page-main-guest.html +++ b/templates/page-main-guest.html @@ -1,5 +1,13 @@ <div class="jumbotron"> <h1>{{lang_welcome}}</h1> <p>{{lang_introGuest}}</p> + {{#register}} + <ul class="list-group"> + <li class="list-group-item list-group-item-info"> + {{lang_noExistingAccount}} + <a href="?do=AddUser" class="btn btn-primary btn-lg">{{lang_register}} »</a> + </li> + </ul> + {{/register}} <p><a href="?do=Session&action=login" class="btn btn-primary btn-lg">{{lang_login}} »</a></p> </div> |