| 
									
										
										
										
											2019-02-27 21:39:31 +01:00
										 |  |  | <?php | 
					
						
							|  |  |  | 	error_reporting(E_ALL ^ E_NOTICE); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	include_once('../include/lucidAuth.functions.php'); | 
					
						
							| 
									
										
										
										
											2019-03-04 10:43:08 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-27 21:39:31 +01:00
										 |  |  | 	if (!empty($_COOKIE['JWT'])) { | 
					
						
							|  |  |  | 		$validateTokenResult = validateToken($_COOKIE['JWT']); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if ($validateTokenResult['status'] === "Success") { | 
					
						
							| 
									
										
										
										
											2019-12-06 15:15:38 +00:00
										 |  |  |         if ($_REQUEST['do'] === 'retrievesessions') { | 
					
						
							| 
									
										
										
										
											2019-12-10 15:57:06 +00:00
										 |  |  |             $storedTokens = []; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-12-06 15:15:38 +00:00
										 |  |  |             $pdoQuery = $pdoDB->prepare(' | 
					
						
							|  |  |  |                 SELECT SecureToken.Id, SecureToken.UserId, SecureToken.Value | 
					
						
							|  |  |  |                 FROM SecureToken | 
					
						
							| 
									
										
										
										
											2019-12-10 15:57:06 +00:00
										 |  |  |                 WHERE SecureToken.UserId = :userid | 
					
						
							| 
									
										
										
										
											2019-12-06 15:15:38 +00:00
										 |  |  |             '); | 
					
						
							|  |  |  |             $pdoQuery->execute([ | 
					
						
							|  |  |  |                 ':userid'	=>	(int) $_REQUEST['userid'] | 
					
						
							|  |  |  |             ]); | 
					
						
							|  |  |  |             foreach($pdoQuery->fetchAll(PDO::FETCH_ASSOC) as $row) { | 
					
						
							| 
									
										
										
										
											2019-12-10 15:57:06 +00:00
										 |  |  |                 try { | 
					
						
							|  |  |  |                     $JWTPayload = JWT::decode($row['Value'], base64_decode($settings->JWT['PrivateKey_base64']), $settings->JWT['Algorithm']); | 
					
						
							|  |  |  |                     $storedTokens[] = [ | 
					
						
							| 
									
										
										
										
											2019-12-30 11:44:35 +00:00
										 |  |  |                         'tid'   => $row['Id'], | 
					
						
							| 
									
										
										
										
											2019-12-10 15:57:06 +00:00
										 |  |  |                         'iat'	=> $JWTPayload->iat, | 
					
						
							|  |  |  |                         'iss'	=> $JWTPayload->iss, | 
					
						
							|  |  |  |                         'fp'    => $JWTPayload->fp | 
					
						
							|  |  |  |                     ]; | 
					
						
							|  |  |  |                 } catch (Exception $e) { | 
					
						
							|  |  |  |                     // Invalid token
 | 
					
						
							|  |  |  |                     continue; | 
					
						
							|  |  |  |                 } | 
					
						
							| 
									
										
										
										
											2019-12-06 15:15:38 +00:00
										 |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // Return JSON object
 | 
					
						
							|  |  |  | 			header('Content-Type: application/json'); | 
					
						
							|  |  |  | 			echo json_encode([ | 
					
						
							|  |  |  | 				"Result"       => "Success", | 
					
						
							| 
									
										
										
										
											2019-12-10 15:57:06 +00:00
										 |  |  |                 "SessionCount" => sizeof($storedTokens), | 
					
						
							|  |  |  |                 "UserSessions" => json_encode($storedTokens) | 
					
						
							| 
									
										
										
										
											2019-12-06 15:15:38 +00:00
										 |  |  | 			]); | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             // 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) { | 
					
						
							| 
									
										
										
										
											2019-03-04 10:43:08 +01:00
										 |  |  | // Should really do some actual errorhandling here
 | 
					
						
							| 
									
										
										
										
											2019-12-06 15:15:38 +00:00
										 |  |  |                 throw new Exception($e); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             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>', | 
					
						
							|  |  |  |                     $validateTokenResult['uid'] === $row['Id'] ? ' class="currentuser"': null, | 
					
						
							|  |  |  |                     $row['Id'], | 
					
						
							|  |  |  |                     explode('\\', $row['Username'])[1], | 
					
						
							|  |  |  |                     $row['Rolename'], | 
					
						
							|  |  |  |                     '<button class="bttn-simple bttn-xs bttn-primary session" data-translation="button_sessions">Sessions</button>' . ($validateTokenResult['uid'] === $row['Id'] ? null : ' <button class="bttn-simple bttn-xs bttn-primary delete" data-translation="button_delete">Delete</button>') | 
					
						
							|  |  |  |                 ); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             echo sprintf($pageLayout['full_alt'], | 
					
						
							|  |  |  |                 sprintf($contentLayout['manage']['header'], | 
					
						
							|  |  |  |                     $validateTokenResult['name'] | 
					
						
							|  |  |  |                 ), | 
					
						
							|  |  |  |                 sprintf($contentLayout['manage']['section'], | 
					
						
							|  |  |  |                     implode($tableRows) | 
					
						
							|  |  |  |                 ) | 
					
						
							| 
									
										
										
										
											2019-03-04 10:43:08 +01:00
										 |  |  |             ); | 
					
						
							| 
									
										
										
										
											2019-12-06 15:15:38 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2019-02-27 21:39:31 +01:00
										 |  |  | 	} else { | 
					
						
							|  |  |  | 		// No cookie containing valid authentication token found;
 | 
					
						
							|  |  |  | 		//   explicitly deleting any remaining cookie, then redirecting to loginpage
 | 
					
						
							|  |  |  | 		setcookie('JWT', FALSE); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		header("HTTP/1.1 401 Unauthorized"); | 
					
						
							|  |  |  | 		header("Location: lucidAuth.login.php"); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-25 15:00:32 +01:00
										 |  |  | ?>
 |