Periodic merge upstream #1
| @@ -135,10 +135,13 @@ function validateToken (string $secureToken) { | ||||
| 	if (!empty($storedTokens) && sizeof(array_filter($storedTokens, function ($value) use ($jwtPayload) { | ||||
| 		return $value->iat === $jwtPayload->iat; | ||||
| 	})) === 1) { | ||||
| 		return ['status' => 'Success']; | ||||
| 		return [ | ||||
| 			'status'	=> 'Success', | ||||
| 			'name'		=> $jwtPayload->name | ||||
| 		]; | ||||
| 	} else { | ||||
| 		if ($settings->Debug['LogToFile']) { | ||||
| 			file_put_contents('../validateToken.log', (new DateTime())->format('Y-m-d\TH:i:s.u') . ' --- No matching token in database' . PHP_EOL, FILE_APPEND); | ||||
| 			file_put_contents('../validateToken.log', (new DateTime())->format('Y-m-d\TH:i:s.u') . ' --- Either no matching token or multiple matching tokens found in database' . PHP_EOL, FILE_APPEND); | ||||
| 		} | ||||
| 		return ['status' => 'Fail', 'reason' => '2']; | ||||
| 	} | ||||
|   | ||||
| @@ -9,7 +9,7 @@ $pageLayout['full'] = <<<'FULL' | ||||
|     <meta charset="utf-8" /> | ||||
|     <title>lucidAuth</title> | ||||
| 	<meta name="application-name" content="lucidAuth" /> | ||||
| 	<meta name="theme-color" content="#B50000" /> | ||||
| 	<meta name="theme-color" content="#003399" /> | ||||
| 	<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" /> | ||||
| 	<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" /> | ||||
| 	<link rel="manifest" href="/manifest.json" /> | ||||
| @@ -52,7 +52,7 @@ $pageLayout['bare'] = <<<'BARE' | ||||
| </html> | ||||
| BARE; | ||||
|  | ||||
| $contentLayout['login'] = <<<LOGIN | ||||
| $contentLayout['login'] = <<<'LOGIN' | ||||
| 		  <script src="misc/script.index.js"></script> | ||||
|           <fieldset> | ||||
|             <legend>Login Details</legend> | ||||
| @@ -67,7 +67,7 @@ $contentLayout['login'] = <<<LOGIN | ||||
|                 <input type="password" id="password" name="password" tabindex="200" /> | ||||
|               </li> | ||||
|               <li> | ||||
| 				<input type="hidden" id="ref" name="ref" value="{$_GET['ref']}" /> | ||||
| 				<input type="hidden" id="ref" name="ref" value="%1$s" /> | ||||
| 				<button id="btnlogin" class="bttn-simple bttn-xs bttn-primary" tabindex="300" data-translation="button_login">login</button> | ||||
|               </li> | ||||
|               <li class="misc"> | ||||
| @@ -83,9 +83,9 @@ LOGIN; | ||||
|  | ||||
| $contentLayout['manage'] = <<<'MANAGE' | ||||
| 		  <script src="misc/script.manage.js"></script> | ||||
|           <span id="user"><span data-translation="span_loggedinas">Ingelogd als</span> {$_SESSION['fullname']} --- [<a id="linkplugindialog" tabindex="600" data-translation="link_plugin">Browser plugin</a><div id="pluginlogos"><span data-translation="label_selectbrowser" style="float: left; margin-left: 5px;">Select browser:</span><span style="font-size: 8px; float: right; margin-right: 5px; margin-top: 2px;">[v0.2.122.4]</span><br /><img id="linkpluginchrome" src="images/chrome_256x256.png" /><img id="linkpluginfirefox" src="images/firefox_256x256.png" /><img id="linkpluginopera" src="images/opera_256x256.png" /></div>] [<a id="linklanguage-en" href="#" tabindex="700">EN</a> <a id="linklanguage-nl" class="current" href="#" tabindex="700">NL</a>] [<a href="index.php?do=logout" tabindex="800" data-translation="link_logout">Log uit</a>]</span> | ||||
| <!--          <fieldset style="clear: both;"> | ||||
|             <legend>Beheer Account</legend> | ||||
|           <span id="user"><span data-translation="span_loggedinas">Ingelogd als</span> %1$s --- [<a id="linklanguage-en" href="#" tabindex="700">EN</a> <a id="linklanguage-nl" class="current" href="#" tabindex="700">NL</a>] [<a href="#" tabindex="800" data-translation="link_logout">Log uit</a>]</span> | ||||
|           <fieldset style="clear: both;"> | ||||
|             <legend>Beheer Gebruikers</legend> | ||||
|             <ul> | ||||
|               <li> | ||||
|               </li> | ||||
| @@ -105,18 +105,6 @@ $contentLayout['manage'] = <<<'MANAGE' | ||||
|               </li> | ||||
|             </ul> | ||||
|           </fieldset> | ||||
|           --> | ||||
| MANAGE; | ||||
|  | ||||
| $contentLayout['dialog'] = <<<DIALOG | ||||
|           <ul class="dialog"> | ||||
|             <li> | ||||
|               <!--REPL_DIALOGDESC--> | ||||
|             </li> | ||||
|             <li> | ||||
| 			  <button id="btnhome" class="bttn-simple bttn-xs bttn-primary" tabindex="400" data-translation="button_home">ga naar startpagina</button> | ||||
|             </li> | ||||
|           </ul> | ||||
| DIALOG; | ||||
|  | ||||
| ?> | ||||
							
								
								
									
										27
									
								
								public/example.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								public/example.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| <?php | ||||
|  | ||||
| // Basic example of PHP script to handle with jQuery-Tabledit plug-in. | ||||
| // Note that is just an example. Should take precautions such as filtering the input data. | ||||
|  | ||||
| header('Content-Type: application/json'); | ||||
|  | ||||
| $input = filter_input_array(INPUT_POST); | ||||
|  | ||||
| $mysqli = new mysqli('localhost', 'user', 'password', 'database'); | ||||
|  | ||||
| if (mysqli_connect_errno()) { | ||||
|   echo json_encode(array('mysqli' => 'Failed to connect to MySQL: ' . mysqli_connect_error())); | ||||
|   exit; | ||||
| } | ||||
|  | ||||
| if ($input['action'] === 'edit') { | ||||
|     $mysqli->query("UPDATE users SET username='" . $input['username'] . "', email='" . $input['email'] . "', avatar='" . $input['avatar'] . "' WHERE id='" . $input['id'] . "'"); | ||||
| } else if ($input['action'] === 'delete') { | ||||
|     $mysqli->query("UPDATE users SET deleted=1 WHERE id='" . $input['id'] . "'"); | ||||
| } else if ($input['action'] === 'restore') { | ||||
|     $mysqli->query("UPDATE users SET deleted=0 WHERE id='" . $input['id'] . "'"); | ||||
| } | ||||
|  | ||||
| mysqli_close($mysqli); | ||||
|  | ||||
| echo json_encode($input); | ||||
| @@ -8,8 +8,13 @@ | ||||
| 		if ($result['status'] === 'Success') { | ||||
| 			// Store authentication token; in database serverside & in cookie clientside | ||||
| 			if (storeToken($result['token'], $settings->LDAP['Domain'] . '\\' . $_POST['username'], $_SERVER['HTTP_HOST'])['status'] !== 'Success') { | ||||
| 				// Since this action is only ever called through an AJAX-request; return JSON object | ||||
| 				echo '{"Result":"Fail","Reason":"Failed storing authentication token in database and/or cookie"}' . PHP_EOL; | ||||
| 				// Return JSON object | ||||
| 				header('Content-Type: application/json'); | ||||
| 				echo json_encode([ | ||||
| 					"Result"			=>	"Failure", | ||||
| 					"Reason"			=>	"Failed storing authentication token in database and/or cookie" | ||||
| 				]); | ||||
| #				echo '{"Result":"Fail","Reason":"Failed storing authentication token in database and/or cookie"}' . PHP_EOL; | ||||
| 				exit; | ||||
| 			} | ||||
|              | ||||
| @@ -19,13 +24,18 @@ | ||||
| 				$proxyHeaders = json_decode(base64_decode($_POST['ref']), JSON_OBJECT_AS_ARRAY); | ||||
| 			} | ||||
| 			catch (Exception $e) { | ||||
| 				// Since this action is only ever called through an AJAX-request; return JSON object | ||||
| 				echo '{"Result":"Fail","Reason":"Original request URI lost in transition"}' . PHP_EOL; | ||||
| 				// Return JSON object | ||||
| 				header('Content-Type: application/json'); | ||||
| 				echo json_encode([ | ||||
| 					"Result"			=>	"Failure", | ||||
| 					"Reason"			=>	"Original request-URI lost in transition" | ||||
| 				]); | ||||
| #				echo '{"Result":"Fail","Reason":"Original request URI lost in transition"}' . PHP_EOL; | ||||
| 				exit; | ||||
| 			} | ||||
| 			$originalUri = !empty($proxyHeaders) ? $proxyHeaders['XForwardedProto'] . '://' . $proxyHeaders['XForwardedHost'] . $proxyHeaders['XForwardedUri'] : 'lucidAuth.manage.php'; | ||||
|  | ||||
| 			// Since this request is only ever called through an AJAX-request; return JSON object | ||||
| 			// Return JSON object | ||||
| 			header('Content-Type: application/json'); | ||||
| 			echo json_encode([ | ||||
| 				"Result"			=>	"Success", | ||||
| @@ -40,7 +50,6 @@ | ||||
| 						"Result"	=>	"Failure", | ||||
| 						"Reason"	=>	"Invalid username and/or password" | ||||
| 					]); | ||||
| #					echo '{"Result":"Fail","Reason":"Invalid username and/or password"}' . PHP_EOL; | ||||
| 					break; | ||||
| 				default: | ||||
| 					header('Content-Type: application/json'); | ||||
| @@ -48,14 +57,17 @@ | ||||
| 						"Result"	=>	"Failure", | ||||
| 						"Reason"	=>	"Uncaught error" | ||||
| 					]); | ||||
| #					echo '{"Result":"Fail","Reason":"Uncaught error"}' . PHP_EOL; | ||||
| 					break; | ||||
| 			} | ||||
| 		} | ||||
| 	} else { | ||||
| 		include_once('../include/lucidAuth.template.php'); | ||||
|  | ||||
| 		echo sprintf($pageLayout['full'], $contentLayout['login']); | ||||
| 		echo sprintf($pageLayout['full'],  | ||||
| 			sprintf($contentLayout['login'],  | ||||
| 				$_GET['ref'] | ||||
| 			) | ||||
| 		); | ||||
| 	} | ||||
|  | ||||
| ?> | ||||
| @@ -3,10 +3,18 @@ | ||||
|  | ||||
| 	include_once('../include/lucidAuth.functions.php'); | ||||
| 	 | ||||
| 	if (!empty($_COOKIE['JWT']) && validateToken($_COOKIE['JWT'])['status'] === "Success") { | ||||
| 	if (!empty($_COOKIE['JWT'])) { | ||||
| 		$validateTokenResult = validateToken($_COOKIE['JWT']); | ||||
| 	} | ||||
|  | ||||
| 	if ($validateTokenResult['status'] === "Success") { | ||||
| 		include_once('../include/lucidAuth.template.php'); | ||||
|  | ||||
| 		echo sprintf($pageLayout['full'], $contentLayout['manage']); | ||||
| 		echo sprintf($pageLayout['full'],  | ||||
| 			sprintf($contentLayout['manage'], | ||||
| 				$validateTokenResult['name'] | ||||
| 			) | ||||
| 		); | ||||
| 	} else { | ||||
| 		// No cookie containing valid authentication token found; | ||||
| 		//   explicitly deleting any remaining cookie, then redirecting to loginpage | ||||
|   | ||||
| @@ -18,7 +18,7 @@ | ||||
|  | ||||
| 	include_once('../include/lucidAuth.template.php'); | ||||
|  | ||||
| 	echo sprintf($pageLayout['bare', | ||||
| 	echo sprintf($pageLayout['bare'], | ||||
| 		'// iFrames go here' | ||||
| 	); | ||||
| ?> | ||||
							
								
								
									
										6
									
								
								public/misc/script.table.min.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								public/misc/script.table.min.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @@ -8,13 +8,9 @@ var locales = { | ||||
| 		heading_error:				"ERROR!", | ||||
| 		label_password:				"Password:", | ||||
| 		label_username:				"Username:", | ||||
| 		label_selectbrowser:	"Select browser:", | ||||
| 		link_install:				"Install!", | ||||
| 		link_logout:				"Logout", | ||||
| 		link_plugin:				"Browser plugin", | ||||
| 		span_credentialsavailable:	"Login credentials available upon request!", | ||||
| 		span_loggedinas:			"Logged in as", | ||||
| 		span_plugin:				"Browser plugin?" | ||||
| 		span_loggedinas:			"Logged in as" | ||||
| 	}, | ||||
| 	nl: { | ||||
| 		button_add:					"voeg toe", | ||||
| @@ -25,13 +21,9 @@ var locales = { | ||||
| 		heading_error:				"FOUT!", | ||||
| 		label_password:				"Wachtwoord:", | ||||
| 		label_username:				"Gebruikersnaam:", | ||||
| 		label_selectbrowser:	"Selecteer browser:", | ||||
| 		link_install:				"Installeer!", | ||||
| 		link_logout:				"Log uit", | ||||
| 		link_plugin:				"Browser plugin", | ||||
| 		span_credentialsavailable:	"Inloggegevens verkrijgbaar op aanvraag!", | ||||
| 		span_loggedinas:			"Ingelogd als", | ||||
| 		span_plugin:				"Browser plugin?" | ||||
| 		span_loggedinas:			"Ingelogd als" | ||||
| 	} // ... etc. | ||||
| }; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user