76 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
global $userManager;
 | 
						|
 | 
						|
 | 
						|
if (
 | 
						|
	isset($_POST['username']) &&
 | 
						|
	$_POST['username'] != '' &&
 | 
						|
	isset($_POST['password']) &&
 | 
						|
	$_POST['password'] != ''
 | 
						|
){
 | 
						|
	$ota = false;
 | 
						|
	$userName = $_POST['username'];
 | 
						|
	$userPassword = $_POST['password'];
 | 
						|
	$state = $_POST["state"];
 | 
						|
	$clientId = $_POST["clientId"];
 | 
						|
	$ota = $userManager->haveOtaEnabled($userName);
 | 
						|
	if ($ota == "") {
 | 
						|
		$token = (new AuthManager)->getToken($userName,$userPassword, $clientId);
 | 
						|
		if (!$token) {
 | 
						|
			throw new Exception("Auth failed", 401);
 | 
						|
		}
 | 
						|
 | 
						|
		$get = [
 | 
						|
			"access_token"=>$token,
 | 
						|
			"token_type"=>"Bearer",
 | 
						|
			"state"=>$state,
 | 
						|
		];
 | 
						|
 | 
						|
		header('Location: ' . $_POST["redirectUrl"] . '#' . http_build_query($get));
 | 
						|
		die();
 | 
						|
	}
 | 
						|
 | 
						|
	$_SESSION['USERNAME'] = $userName;
 | 
						|
	$_SESSION['PASSWORD'] = $userPassword;
 | 
						|
	$_SESSION['OTA'] = $ota;
 | 
						|
	$_SESSION['STATE'] = $state;
 | 
						|
	$_SESSION['REDIRECT'] = $_POST["redirectUrl"];
 | 
						|
	$_SESSION['CLIENT'] = $clientId;
 | 
						|
 | 
						|
 | 
						|
} else if (
 | 
						|
	isset($_POST['otaCode']) &&
 | 
						|
	$_POST['otaCode'] != ''
 | 
						|
) {
 | 
						|
	$otaCode = $_POST['otaCode'];
 | 
						|
	$otaSecret = $_POST['otaSecret'];
 | 
						|
 | 
						|
	$userName = $_SESSION['USERNAME'];
 | 
						|
	$userPassword = $_SESSION['PASSWORD'];
 | 
						|
	$ota = $_SESSION['OTA'];
 | 
						|
	$oauthState = $_SESSION['STATE'];
 | 
						|
	$oauthRedirect = $_SESSION['REDIRECT'];
 | 
						|
	$oauthClientId = $_SESSION['CLIENT'];
 | 
						|
 | 
						|
	$ga = new PHPGangsta_GoogleAuthenticator();
 | 
						|
	$checkResult = $ga->verifyCode($otaSecret, $otaCode, 2);    // 2 = 2*30sec clock tolerance
 | 
						|
	if ($checkResult) {
 | 
						|
		$token = (new AuthManager)->getToken($userName,$userPassword, $oauthClientId);
 | 
						|
		if (!$token) {
 | 
						|
			throw new Exception("Auth failed", 401);
 | 
						|
		}
 | 
						|
 | 
						|
		$get = [
 | 
						|
			"access_token"=>$token,
 | 
						|
			"token_type"=>"Bearer",
 | 
						|
			"state"=>$oauthState,
 | 
						|
		];
 | 
						|
 | 
						|
		header('Location: ' . $oauthRedirect . '#' . http_build_query($get));
 | 
						|
		echo 'OK';
 | 
						|
	} else {
 | 
						|
		echo 'FAILED';
 | 
						|
	}
 | 
						|
	die();
 | 
						|
}
 |