New Api autentication token
This commit is contained in:
parent
e22d98cf6a
commit
a1337d795d
4
Docs_api.txt
Normal file
4
Docs_api.txt
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
Login
|
||||||
|
https://dev.steelants.cz/vasek/home/apiFront.php
|
||||||
|
```json
|
||||||
|
{"username":"username","password":"password"}```
|
59
apiFront.php
59
apiFront.php
@ -38,6 +38,61 @@ if (API_DEBUGMOD == 1) {
|
|||||||
$apiLogManager->write("[API] request body\n" . json_encode($obj, JSON_PRETTY_PRINT), LogRecordType::INFO);
|
$apiLogManager->write("[API] request body\n" . json_encode($obj, JSON_PRETTY_PRINT), LogRecordType::INFO);
|
||||||
}
|
}
|
||||||
|
|
||||||
unset($logManager);
|
$apiManager = new ApiManager();
|
||||||
Db::disconect();
|
echo $apiManager->generateToken($obj['username'],$obj['password']);
|
||||||
die();
|
die();
|
||||||
|
|
||||||
|
/*
|
||||||
|
if (
|
||||||
|
isset($obj['username']) &&
|
||||||
|
$obj['username'] != '' &&
|
||||||
|
isset($obj['password']) &&
|
||||||
|
$obj['password'] != ''
|
||||||
|
){
|
||||||
|
$ota = false;
|
||||||
|
$userName = $_POST['username'];
|
||||||
|
$userPassword = $_POST['password'];
|
||||||
|
$rememberMe = (isset ($_POST['remember']) ? $_POST['remember'] : "");
|
||||||
|
$ota = $userManager->haveOtaEnabled($userName);
|
||||||
|
if ($ota == "") {
|
||||||
|
$landingPage = $userManager->login($userName, $userPassword, $rememberMe);
|
||||||
|
header('Location: ' . BASEDIR . $landingPage);
|
||||||
|
die();
|
||||||
|
}
|
||||||
|
|
||||||
|
$_SESSION['USERNAME'] = $userName;
|
||||||
|
$_SESSION['PASSWORD'] = $userPassword;
|
||||||
|
$_SESSION['REMEMBER'] = $rememberMe;
|
||||||
|
$_SESSION['OTA'] = $ota;
|
||||||
|
} else if (
|
||||||
|
isset($_POST['otaCode']) &&
|
||||||
|
$_POST['otaCode'] != ''
|
||||||
|
) {
|
||||||
|
|
||||||
|
$otaCode = $_POST['otaCode'];
|
||||||
|
$otaSecret = $_POST['otaSecret'];
|
||||||
|
|
||||||
|
$ga = new PHPGangsta_GoogleAuthenticator();
|
||||||
|
$ota = $_SESSION['OTA'];
|
||||||
|
$userName = $_SESSION['USERNAME'];
|
||||||
|
$userPassword = $_SESSION['PASSWORD'];
|
||||||
|
$rememberMe = $_SESSION['REMEMBER'];
|
||||||
|
unset($_SESSION['OTA']);
|
||||||
|
$checkResult = $ga->verifyCode($otaSecret, $otaCode, 2); // 2 = 2*30sec clock tolerance
|
||||||
|
if ($checkResult) {
|
||||||
|
$landingPage = $userManager->login($userName, $userPassword, $rememberMe);
|
||||||
|
header('Location: ' . BASEDIR . $landingPage);
|
||||||
|
echo 'OK';
|
||||||
|
} else {
|
||||||
|
echo 'FAILED';
|
||||||
|
}
|
||||||
|
//TODO: upravi a ověřit jeslti ja zabezpečené
|
||||||
|
//TODO:
|
||||||
|
die();
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*unset($logManager);
|
||||||
|
Db::disconect();
|
||||||
|
die();*/
|
||||||
|
30
app/class/ApiManager.php
Normal file
30
app/class/ApiManager.php
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class ApiManager {
|
||||||
|
public function generateToken($username, $password){
|
||||||
|
$userManager = new UserManager();
|
||||||
|
if ($username != '' || $password != ''){
|
||||||
|
$userLogedIn = $userManager->loginNew($username, $password);
|
||||||
|
|
||||||
|
if ($userLogedIn != false){
|
||||||
|
// Create token header as a JSON string
|
||||||
|
$header = json_encode(['typ' => 'JWT', 'alg' => 'HS256']);
|
||||||
|
// Create token payload as a JSON string
|
||||||
|
$payload = json_encode(['user_id' => $userLogedIn]);
|
||||||
|
// Encode Header to Base64Url String
|
||||||
|
$base64UrlHeader = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($header));
|
||||||
|
// Encode Payload to Base64Url String
|
||||||
|
$base64UrlPayload = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($payload));
|
||||||
|
// Create Signature Hash
|
||||||
|
$signature = hash_hmac('sha256', $base64UrlHeader . "." . $base64UrlPayload, 'abC123!', true);
|
||||||
|
// Encode Signature to Base64Url String
|
||||||
|
$base64UrlSignature = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($signature));
|
||||||
|
// Create JWT
|
||||||
|
$jwt = $base64UrlHeader . "." . $base64UrlPayload . "." . $base64UrlSignature;
|
||||||
|
|
||||||
|
return $jwt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
@ -65,6 +65,24 @@ class UserManager
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function loginNew ($username, $password) {
|
||||||
|
try {
|
||||||
|
if ($user = Db::loadOne ('SELECT * FROM users WHERE LOWER(username)=LOWER(?)', array ($username))) {
|
||||||
|
if ($user['password'] == UserManager::getHashPassword($password)) {
|
||||||
|
echo "user loged in";
|
||||||
|
return $user['user_id'];
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} catch(PDOException $error) {
|
||||||
|
echo $error->getMessage();
|
||||||
|
die();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function isLogin () {
|
public function isLogin () {
|
||||||
if (isset ($_SESSION['user']) && isset($_SESSION['user']['id'])) {
|
if (isset ($_SESSION['user']) && isset($_SESSION['user']['id'])) {
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
Reference in New Issue
Block a user