101 lines
2.9 KiB
PHP
101 lines
2.9 KiB
PHP
<?php
|
|
|
|
|
|
namespace App\Controllers;
|
|
use CodeIgniter\API\ResponseTrait;
|
|
use Firebase\JWT\JWT;
|
|
|
|
class DigiFiAuth extends BaseController
|
|
{
|
|
use ResponseTrait;
|
|
|
|
var $request;
|
|
function __construct() {
|
|
$this->request = \Config\Services::request();
|
|
}
|
|
public function index(): string
|
|
{
|
|
return '';
|
|
}
|
|
|
|
public function verifyGetBkoToken(){
|
|
$data = $this->request->getGet();
|
|
return $this->verifyBkoToken($data);
|
|
}
|
|
public function verifyPostBkoToken(){
|
|
$data = $this->request->getPost();
|
|
return $this->verifyBkoToken($data);
|
|
}
|
|
|
|
private function verifyBkoToken($data){
|
|
//$data = $this->request->getGet();
|
|
return $this->respond($data, 200);
|
|
}
|
|
public function startBkoToken()
|
|
{
|
|
$data = $this->request->getPost();
|
|
if ( $data['username'] == '' || $data['pass'] == '' ){
|
|
return $this->fail([] , 409);
|
|
}
|
|
|
|
$username = $data['username'];
|
|
$pass = $data['pass'];
|
|
$sqlC = "SELECT * FROM bko_users WHERE username ='".$username."' AND pass = md5('".$pass."')";
|
|
$query = $this->db->query($sqlC);
|
|
$resV = $query->getResultArray();
|
|
$results = [];
|
|
if (count($resV)> 0){
|
|
$results = $resV[0];
|
|
}
|
|
|
|
// var_dump($results);
|
|
|
|
if ( count($results) > 0
|
|
&& $results['uid'] != ''
|
|
&& $results['updated'] != '' ){
|
|
|
|
$final_out = $results;
|
|
|
|
$key = getenv('JWT_SECRET');
|
|
$iat = time(); // current timestamp value
|
|
$exp = $iat + 3600;
|
|
|
|
$payload = array(
|
|
"iss" => "Issuer of the JWT",
|
|
"aud" => "Audience that the JWT",
|
|
"sub" => "Backoffice VerifiedT",
|
|
"iat" => $iat, //Time the JWT issued at
|
|
"exp" => $exp, // Expiration time of token
|
|
"user_detail" =>$final_out,
|
|
);
|
|
|
|
$token = JWT::encode($payload, $key, 'HS256');
|
|
|
|
$response = [
|
|
'message' => 'Login was successful',
|
|
'call_return' => '100',
|
|
'username' => $data['username'],
|
|
'token' => $token,
|
|
"id" => 1,
|
|
"first_name" => $results['firstname'],
|
|
"last_name" => $results['lastname'],
|
|
"email" => $results['email'],
|
|
"email_verified_at" => "2023-07-12T13:39:04.000000Z",
|
|
"created_at" => $results['added'],
|
|
"updated_at" => $results['updated'],
|
|
"api_token" => $token
|
|
];
|
|
|
|
return $this->respond($response, 200);
|
|
}
|
|
else{
|
|
$response = [
|
|
'message' => 'Login failed',
|
|
'call_return' => '100',
|
|
'token' => ''
|
|
];
|
|
return $this->fail($response , 409);
|
|
}
|
|
}
|
|
}
|