2019-06-06 20:09:27 +00:00
|
|
|
<?php
|
2019-09-28 22:43:51 +00:00
|
|
|
namespace Misuzu;
|
|
|
|
|
2019-06-06 20:09:27 +00:00
|
|
|
require_once '../../misuzu.php';
|
|
|
|
|
|
|
|
if(!user_session_active()) {
|
|
|
|
echo render_error(401);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
$errors = [];
|
|
|
|
$currentUserId = user_session_current('user_id');
|
|
|
|
$sessionActive = user_session_current('session_id');
|
|
|
|
|
2019-06-10 15:21:53 +00:00
|
|
|
if(!empty($_POST['session']) && csrf_verify_request()) {
|
2019-06-06 20:09:27 +00:00
|
|
|
$currentSessionKilled = false;
|
|
|
|
|
|
|
|
if(is_array($_POST['session'])) {
|
|
|
|
foreach($_POST['session'] as $sessionId) {
|
|
|
|
$sessionId = intval($sessionId);
|
|
|
|
$session = user_session_find($sessionId);
|
|
|
|
|
2019-06-10 17:04:53 +00:00
|
|
|
if(!$session || (int)$session['user_id'] !== $currentUserId) {
|
2019-06-06 20:09:27 +00:00
|
|
|
$errors[] = "Session #{$sessionId} does not exist.";
|
|
|
|
continue;
|
|
|
|
} elseif((int)$session['session_id'] === $sessionActive) {
|
|
|
|
$currentSessionKilled = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
user_session_delete($session['session_id']);
|
|
|
|
audit_log(MSZ_AUDIT_PERSONAL_SESSION_DESTROY, $currentUserId, [
|
|
|
|
$session['session_id'],
|
|
|
|
]);
|
|
|
|
}
|
|
|
|
} elseif($_POST['session'] === 'all') {
|
|
|
|
$currentSessionKilled = true;
|
|
|
|
user_session_purge_all($currentUserId);
|
|
|
|
audit_log(MSZ_AUDIT_PERSONAL_SESSION_DESTROY_ALL, $currentUserId);
|
|
|
|
}
|
|
|
|
|
|
|
|
if($currentSessionKilled) {
|
2019-06-08 21:46:24 +00:00
|
|
|
url_redirect('index');
|
2019-06-06 20:09:27 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-12-06 01:04:10 +00:00
|
|
|
$sessionPagination = new Pagination(user_session_count($currentUserId), 15);
|
2019-06-06 20:09:27 +00:00
|
|
|
|
|
|
|
$sessionList = user_session_list(
|
2019-12-06 01:04:10 +00:00
|
|
|
$sessionPagination->getOffset(),
|
|
|
|
$sessionPagination->getRange(),
|
2019-06-06 20:09:27 +00:00
|
|
|
$currentUserId
|
|
|
|
);
|
|
|
|
|
2019-12-04 18:16:22 +00:00
|
|
|
Template::render('settings.sessions', [
|
2019-06-06 20:09:27 +00:00
|
|
|
'errors' => $errors,
|
|
|
|
'session_list' => $sessionList,
|
|
|
|
'session_active_id' => $sessionActive,
|
|
|
|
'session_pagination' => $sessionPagination,
|
|
|
|
]);
|