summaryrefslogtreecommitdiffstats
path: root/modules-available/session/page.inc.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules-available/session/page.inc.php')
-rw-r--r--modules-available/session/page.inc.php33
1 files changed, 26 insertions, 7 deletions
diff --git a/modules-available/session/page.inc.php b/modules-available/session/page.inc.php
index 0a6eac77..5f5e5d28 100644
--- a/modules-available/session/page.inc.php
+++ b/modules-available/session/page.inc.php
@@ -12,18 +12,18 @@ class Page_Session extends Page
if (User::isLoggedIn()) // and then just redirect
Util::redirect('?do=main');
// Else, try to log in
- if (User::login(Request::post('user'), Request::post('pass')))
+ if (User::login(Request::post('user'),
+ Request::post('pass'),
+ Request::post('fixedip', false, 'bool'))) {
Util::redirect('?do=main');
+ }
// Login credentials wrong - delay and show error message
sleep(1);
Message::addError('loginfail');
- }
- if ($action === 'logout') {
+ } elseif ($action === 'logout') {
// Log user out (or do nothing if not logged in)
User::logout();
- Util::redirect('?do=main');
- }
- if ($action === 'changepw') {
+ } elseif ($action === 'changepw') {
if (!User::isLoggedIn()) {
Util::redirect('?do=main');
}
@@ -47,19 +47,38 @@ class Page_Session extends Page
Message::addError('adduser.password-mismatch');
Util::redirect('?do=session');
}
+ if (Request::post('kill-other-sessions', false, 'bool')) {
+ Session::deleteAllButCurrent();
+ }
if (User::updatePassword($new)) {
Message::addSuccess('password-changed');
} else {
Message::addWarning('password-unchanged');
}
Util::redirect('?do=session');
+ } else {
+ // No action, change title to session list
+ Render::setTitle(Dictionary::translate('page-title-session-list'));
}
}
protected function doRender()
{
if (User::isLoggedIn()) {
- Render::addTemplate('change-password');
+ $res = Database::simpleQuery("SELECT u.login, s.userid, s.dateline, s.lastip, s.fixedip
+ FROM session s
+ INNER JOIN user u USING (userid)
+ ORDER BY dateline DESC");
+ $sessions = [];
+ $perm = User::hasPermission('.adduser.user.*');
+ foreach ($res as $row) {
+ if ($perm || $row['userid'] == User::getId()) {
+ $row['dateline_s'] = Util::prettyTime($row['dateline']);
+ $sessions[] = $row;
+ }
+ }
+ Render::addTemplate('change-password', ['sessions' => $sessions,
+ 'link' => User::hasPermission('.adduser.user.edit')]);
} else {
Render::addTemplate('page-login');
}