First draft of session management for admins

This commit is contained in:
Danny Bessems 2019-12-06 15:15:38 +00:00
parent 160784c912
commit 6f53abf521
2 changed files with 65 additions and 28 deletions

View File

@ -8,37 +8,59 @@
} }
if ($validateTokenResult['status'] === "Success") { if ($validateTokenResult['status'] === "Success") {
include_once('../include/lucidAuth.template.php'); if ($_REQUEST['do'] === 'retrievesessions') {
$pdoQuery = $pdoDB->prepare('
SELECT SecureToken.Id, SecureToken.UserId, SecureToken.Value
FROM SecureToken
WHERE SecureToken.Id = :userid
');
$pdoQuery->execute([
':userid' => (int) $_REQUEST['userid']
]);
foreach($pdoQuery->fetchAll(PDO::FETCH_ASSOC) as $row) {
//bla
}
try { // Return JSON object
$allUsers = $pdoDB->query(' header('Content-Type: application/json');
SELECT User.Id, User.Username, Role.Rolename echo json_encode([
FROM User "Result" => "Success",
LEFT JOIN Role "UserSessions" => json_encode( $moo )
ON (Role.Id = User.RoleId) ]);
')->fetchAll(PDO::FETCH_ASSOC); } else {
} catch (Exception $e) { // No action requested, default action
include_once('../include/lucidAuth.template.php');
try {
$allUsers = $pdoDB->query('
SELECT User.Id, User.Username, Role.Rolename
FROM User
LEFT JOIN Role
ON (Role.Id = User.RoleId)
')->fetchAll(PDO::FETCH_ASSOC);
} catch (Exception $e) {
// Should really do some actual errorhandling here // Should really do some actual errorhandling here
throw new Exception($e); throw new Exception($e);
} }
foreach($allUsers as $row) { foreach($allUsers as $row) {
$tableRows[] = sprintf('<tr%1$s><td data-userid="%2$s">%3$s</td><td>%4$s</td><td class="immutable">%5$s</td></tr>', $tableRows[] = sprintf('<tr%1$s><td data-userid="%2$s">%3$s</td><td>%4$s</td><td class="immutable">%5$s</td></tr>',
$validateTokenResult['uid'] === $row['Id'] ? ' class="currentuser"': null, $validateTokenResult['uid'] === $row['Id'] ? ' class="currentuser"': null,
$row['Id'], $row['Id'],
explode('\\', $row['Username'])[1], explode('\\', $row['Username'])[1],
$row['Rolename'], $row['Rolename'],
'<button class="bttn-simple bttn-xs bttn-primary" data-translation="button_sessions">Sessions</button>' . ($validateTokenResult['uid'] === $row['Id'] ? null : '&nbsp;<button class="bttn-simple bttn-xs bttn-primary delete" data-translation="button_delete">Delete</button>') '<button class="bttn-simple bttn-xs bttn-primary session" data-translation="button_sessions">Sessions</button>' . ($validateTokenResult['uid'] === $row['Id'] ? null : '&nbsp;<button class="bttn-simple bttn-xs bttn-primary delete" data-translation="button_delete">Delete</button>')
); );
} }
echo sprintf($pageLayout['full_alt'], echo sprintf($pageLayout['full_alt'],
sprintf($contentLayout['manage']['header'], sprintf($contentLayout['manage']['header'],
$validateTokenResult['name'] $validateTokenResult['name']
), ),
sprintf($contentLayout['manage']['section'], sprintf($contentLayout['manage']['section'],
implode($tableRows) implode($tableRows)
) )
); );
}
} else { } else {
// No cookie containing valid authentication token found; // No cookie containing valid authentication token found;
// explicitly deleting any remaining cookie, then redirecting to loginpage // explicitly deleting any remaining cookie, then redirecting to loginpage

View File

@ -2,6 +2,18 @@ $(document).ready(function(){
// Initialize the editable-table functionality // Initialize the editable-table functionality
$('#usertable').editableTableWidget(); $('#usertable').editableTableWidget();
// Add eventhandlers to buttons
$('#usertable button.session').click(function() {
$.post("lucidAuth.manage.php", {
do: "retrievesessions",
userid: $(this).closest('tr').find('td:nth-child(1)').data('userid')
})
.done(function(data,_status) {
if (data.Result === 'Success') {
} else {
}
});
});
$('#usertable button.delete').click(function() { $('#usertable button.delete').click(function() {
$(this).closest('tr').addClass('removed'); $(this).closest('tr').addClass('removed');
}); });
@ -32,6 +44,9 @@ $(document).ready(function(){
// To prevent recreating multiple new editors; reference the already existing `<input>` // To prevent recreating multiple new editors; reference the already existing `<input>`
$('#usertable').editableTableWidget({editor: $('#editor')}); $('#usertable').editableTableWidget({editor: $('#editor')});
// Add eventhandlers to buttons of newly added `<tr>` // Add eventhandlers to buttons of newly added `<tr>`
$('#usertable .new button.session').unbind().click(function() {
console.log('New user, unlikely to have sessions already, lets do nothing for now');
});
$('#usertable .new button.delete').unbind().click(function() { $('#usertable .new button.delete').unbind().click(function() {
$(this).closest('tr').remove(); $(this).closest('tr').remove();
}); });