149 lines
4.3 KiB
PHP
149 lines
4.3 KiB
PHP
<?php
|
|
|
|
|
|
namespace App\Controllers;
|
|
|
|
use CodeIgniter\API\ResponseTrait;
|
|
use Exception;
|
|
use Firebase\JWT\JWT;
|
|
|
|
class DigiFiBVN extends BaseController
|
|
{
|
|
use ResponseTrait;
|
|
// protected $db;
|
|
|
|
var $request;
|
|
|
|
function __construct()
|
|
{
|
|
$this->request = \Config\Services::request();
|
|
}
|
|
|
|
|
|
public function completeBVNVerify(){
|
|
|
|
$data = $this->request->getPost();
|
|
if ($data['bvn'] != ''
|
|
&& $data['verification_id'] !=''
|
|
&& $data['otp'] !=''
|
|
) {
|
|
if ( $data['otp'] !='12345'){
|
|
$response = [
|
|
'message' => 'Invalid account or OTP',
|
|
'call_return' => '0',
|
|
'customer'=> [],
|
|
"token" =>''
|
|
];
|
|
return $this->respond($response, 200);
|
|
}
|
|
|
|
$customer = [];
|
|
// we need OTP verified here to continue
|
|
|
|
$sqlC = "SELECT * FROM bvn_checks WHERE bvn ='".$data['bvn']."' AND uid='".$data['verification_id']."'";
|
|
$query = $this->db->query($sqlC);
|
|
$results = $query->getResultArray();
|
|
if ( count($results) > 0 ){
|
|
$sqlM = "SELECT * FROM customers WHERE bvn = '".$data['bvn']."' ";
|
|
$qu0 = $this->db->query($sqlM);
|
|
$customer = $qu0->getResultArray();
|
|
if ( count( $customer) == 0 ){
|
|
// lets create this USER
|
|
$udata = [
|
|
'bvn' => $data['bvn'],
|
|
'firstname' =>'firstname-'.rand(1,1000),
|
|
'lastname' => 'lastname-'.rand(1,1000)
|
|
];
|
|
$customer = $this->insert_db('customers',$udata);
|
|
}
|
|
}
|
|
|
|
$final_out = $data;
|
|
$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" => "Subject of the JWT",
|
|
"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' => 'Account Verified',
|
|
'call_return' => '100',
|
|
'customer'=> $customer,
|
|
"token" =>$token
|
|
];
|
|
|
|
return $this->respond($response, 200);
|
|
} else {
|
|
$response = [
|
|
'message' => 'Invalid account found',
|
|
'call_return' => '100',
|
|
'token' => ''
|
|
];
|
|
return $this->fail($response, 409);
|
|
}
|
|
}
|
|
|
|
/*
|
|
"uid" => "3119b744-42ad-4834-bb83-b737588754ca",
|
|
"firstname"=>'Firstname',
|
|
"lastname"=>'lastname',
|
|
"last_login"=> "2024-04-26 13:35:19.750027",
|
|
"test" => $results,
|
|
*/
|
|
public function startBVNVerify()
|
|
{
|
|
$data = $this->request->getPost();
|
|
|
|
if ($data['bvn'] != '') {
|
|
|
|
$bvnData = $this->APIcall("POST", "http://10.10.10.48:6332/api/verify/bvn", json_encode($data));
|
|
|
|
|
|
$udata = [
|
|
'bvn' => $data['bvn']
|
|
];
|
|
$addedData = $this->insert_db('bvn_checks',$udata);
|
|
|
|
if( $addedData["uid"] ==''){
|
|
$response = [
|
|
'message' => 'Failure',
|
|
'call_return' => '100',
|
|
'token' => '',
|
|
'test_bvn' => $bvnData
|
|
];
|
|
return $this->fail($response, 500);
|
|
}
|
|
|
|
$response = [
|
|
'message' => 'Verification text sent to user',
|
|
'call_return' => '100',
|
|
'verification_id' => $addedData["uid"],
|
|
'status' => $bvnData["res"]["status"],
|
|
'test_bvn' => $bvnData["res"]["data"]
|
|
];
|
|
|
|
return $this->respond($response, 200);
|
|
} else {
|
|
$response = [
|
|
'message' => 'Failure',
|
|
'call_return' => '100',
|
|
'token' => ''
|
|
];
|
|
return $this->fail($response, 409);
|
|
}
|
|
|
|
|
|
//return json_encode( $response );
|
|
|
|
}
|
|
}
|