31 lines
1.4 KiB
PHP
31 lines
1.4 KiB
PHP
<?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;
|
|
}
|
|
}
|