summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--inc/eventlog.inc.php23
-rw-r--r--lang/de/templates/page-main-guest.json2
-rw-r--r--lang/en/templates/page-main-guest.json2
-rw-r--r--modules/adduser.inc.php20
-rw-r--r--modules/main.inc.php4
-rw-r--r--templates/page-adduser.html6
-rw-r--r--templates/page-main-guest.html8
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}} &raquo;</a>
+ </li>
+ </ul>
+ {{/register}}
<p><a href="?do=Session&amp;action=login" class="btn btn-primary btn-lg">{{lang_login}} &raquo;</a></p>
</div>