You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
338 lines
11 KiB
PHP
338 lines
11 KiB
PHP
<?php
|
|
|
|
use NN\Route;
|
|
use NN\Session;
|
|
use NN\Module\DB;
|
|
use NN\Module\DD;
|
|
use NN\Link;
|
|
use NN\Files;
|
|
use NN\load;
|
|
use NN\Module\View;
|
|
use NN\Module\Uuid as id;
|
|
use NN\Webs;
|
|
use NN\Bug;
|
|
use NN\Module\crontab;
|
|
use NN\Module\Help;
|
|
use NN\Module\Datatable;
|
|
use NN\Enc;
|
|
use NN\Post;
|
|
|
|
class Api_googlink {
|
|
private $link = [];
|
|
|
|
public function addLink($url, $callback){
|
|
$url = preg_replace('/\{([^}]+)\}/', '([^/]+)', $url);
|
|
$this->link[$url] = $callback;
|
|
}
|
|
public function run($link = ""){
|
|
foreach($this->link as $pattern => $callback){
|
|
$pattern = '#^' . $pattern . '$#';
|
|
if(preg_match($pattern, $link, $matches)){
|
|
header('Content-Type: application/json');
|
|
try {
|
|
array_shift($matches);
|
|
call_user_func_array($callback, $matches);
|
|
} catch (\Exception $e) {
|
|
echo json_encode([
|
|
"status" => "error",
|
|
"message" => $e->getMessage()
|
|
]);
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
echo json_encode([
|
|
"status" => "error",
|
|
"message" => "no action"
|
|
]);
|
|
}
|
|
}
|
|
|
|
$api = new Api_googlink();
|
|
|
|
$api->addLink('/cooperatives/getcooperativedetail/{id}', function($id=""){
|
|
if($id == "888"){
|
|
echo json_encode([
|
|
"id" => 1,
|
|
"no" => 1,
|
|
"code" => "001",
|
|
"special_code" => "888",
|
|
"name" => "WARPEKAMART",
|
|
"description" => "WARPEKAMART merupakan koperasi yang berdiri sejak tahun 1996 dengan nomor badan hukum 4344/BH-II/1996. Koperasi ini dipimpin oleh Drs. H. Nadlif, M.Si sebagai ketua dan H. Suwanto, M.Pd sebagai bendahara, serta diawasi oleh Sholikh, S.Pd., M.PdI.",
|
|
"type" => "Konsumen",
|
|
"created_date" => "1996-09-27",
|
|
"address" => "JL. ARIF RAHMAN HAKIM NO. 108 GRESIK",
|
|
"latitude" => -7.1635451,
|
|
"longitude" => 112.646249,
|
|
"phone" => "(031) 3973837",
|
|
"email" => "warpekamart@gmail.com",
|
|
"photo_file" => "/images/koperasi.png",
|
|
"logo_file" => "/images/koperasi.png",
|
|
"database_name" => null,
|
|
"database_created" => 1,
|
|
"app_folder" => null,
|
|
"app_created" => 1,
|
|
"url_profile" => null,
|
|
"dividend_percentage" => 30,
|
|
"version_app" => "01.00.01",
|
|
"postal_code" => "61122",
|
|
"city" => "GRESIK",
|
|
"admin" => "Ika Novita Sari",
|
|
"cashier" => "Aulia Sukmana Pasi",
|
|
"shu_usp" => 146267177,
|
|
"shu_induk" => 643749331,
|
|
"shu_blusp" => 315201,
|
|
"shu_blinduk" => 315101,
|
|
"ppn_sl" => 0,
|
|
"ppn_rate" => 0,
|
|
"online_shop" => 1,
|
|
"created_at" => "2023-01-16T05:48:39.000000Z",
|
|
"updated_at" => "2023-01-16T05:48:39.000000Z"
|
|
]);
|
|
}else{
|
|
echo json_encode([
|
|
"status" => "error",
|
|
"message" => "data not found"
|
|
]);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
$api->addLink('/auth/pin', function(){
|
|
$accept = $_SERVER['HTTP_ACCEPT'];
|
|
$authorization = $_SERVER['HTTP_AUTHORIZATION'];
|
|
header("Content-Type: $accept");
|
|
$token = explode(" ", $authorization)[1];
|
|
|
|
$memberid = $_POST['member_id'];
|
|
$pin = $_POST['pin'];
|
|
|
|
// cek barier token
|
|
$cek = DB::query_result_object_row("SELECT * FROM login WHERE token = '$token' AND memberid = '$memberid'");
|
|
|
|
if($cek != null){
|
|
$pin_exist = DB::query_result_object_row("SELECT pin FROM anggota WHERE kode = '$memberid' AND pin = '$pin'");
|
|
if($pin_exist != null){
|
|
echo json_encode([
|
|
'success' => true,
|
|
'message' => 'Successfully you can access this page'
|
|
]);
|
|
return;
|
|
}else{
|
|
echo json_encode([
|
|
'success' => false,
|
|
'message' => 'Failed pin',
|
|
]);
|
|
return;
|
|
}
|
|
}else{
|
|
echo json_encode([
|
|
'success' => false,
|
|
'message' => 'pin not corect',
|
|
]);
|
|
return;
|
|
}
|
|
});
|
|
|
|
$api->addLink('/logout', function(){
|
|
$accept = $_SERVER['HTTP_ACCEPT'];
|
|
$authorization = $_SERVER['HTTP_AUTHORIZATION'];
|
|
header("Content-Type: $accept");
|
|
$token = explode(" ", $authorization)[1];
|
|
|
|
$memberid = $_POST['id'];
|
|
|
|
// cek barier token
|
|
$cek = DB::query_result_object_row("SELECT * FROM login WHERE token = '$token' AND memberid = '$memberid'");
|
|
|
|
if($cek != null){
|
|
DB::query("DELETE FROM login WHERE token = '$token' AND memberid = '$memberid'");
|
|
echo json_encode([
|
|
'status' => 'success',
|
|
'message' => 'Logged out successfully'
|
|
]);
|
|
return;
|
|
}else{
|
|
echo json_encode([
|
|
'status' => 'error',
|
|
'message' => 'Failed to logout',
|
|
'error' => $memberid
|
|
]);
|
|
return;
|
|
}
|
|
});
|
|
|
|
$api->addLink('/login', function($id=""){
|
|
|
|
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
|
echo json_encode([
|
|
'status' => 'error',
|
|
'message' => 'Method not allowed'
|
|
]);
|
|
return;
|
|
}
|
|
|
|
$accept = $_SERVER['HTTP_ACCEPT'];
|
|
|
|
$mobile_phone = $_POST['mobile_phone'];
|
|
$password = $_POST['password'];
|
|
$device_token_id = $_POST['device_token_id'];
|
|
$android_id = $_POST['android_id'];
|
|
|
|
// Generate random prefix number between 1000-9999
|
|
$prefix = rand(1000, 9999);
|
|
|
|
// Generate random string for token
|
|
$length = 40;
|
|
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
$token = '';
|
|
|
|
for ($i = 0; $i < $length; $i++) {
|
|
$token .= $characters[rand(0, strlen($characters) - 1)];
|
|
}
|
|
|
|
// Combine prefix and token with pipe separator
|
|
$final_token = $prefix . '|' . $token;
|
|
|
|
|
|
$response = DB::query_result_object_row("SELECT * FROM anggota where telp = '$mobile_phone' AND password = '$password'");
|
|
|
|
|
|
if($response != null){
|
|
$totable = [
|
|
"android_id" => $android_id,
|
|
"device_token_id" => $device_token_id,
|
|
"member_id" => $response->kode,
|
|
"anggota" => $response->nama,
|
|
"login_time" => date("Y-m-d H:i:s"),
|
|
"token" => $final_token
|
|
];
|
|
$table = "login";
|
|
|
|
$query = "INSERT INTO $table (android_id, device_token_id, memberid, anggota, login_time, token)
|
|
SELECT * FROM (SELECT '$android_id', '$device_token_id', '$response->kode', '$response->nama', '".date("Y-m-d H:i:s")."', '$final_token') AS tmp
|
|
WHERE NOT EXISTS (
|
|
SELECT android_id, device_token_id FROM $table
|
|
WHERE android_id = '$android_id' AND device_token_id = '$device_token_id'
|
|
) LIMIT 1";
|
|
|
|
DB::query($query);
|
|
|
|
echo json_encode([
|
|
"success" => true,
|
|
"message" => "login berhasil",
|
|
"token" => $final_token,
|
|
"data" => [
|
|
"id" => $response->kode,
|
|
"cooperative_id" => 1,
|
|
"branch_id" => 1,
|
|
"ring_id" => 2,
|
|
"bto_biz_id" => 1,
|
|
"bto_cell_id" => 1,
|
|
"perks_level_id" => 1,
|
|
"member_no" => "1145",
|
|
"account_counter" => 4,
|
|
"name" => $response->nama,
|
|
"mobile_phone" => $response->telp,
|
|
"mobile_phone_verified" => 1,
|
|
"email" => "-",
|
|
"email_verified_at" => null,
|
|
"photo_profile_file" => "/assets/images/profile.png",
|
|
"pin" => "$2y$10$9PLwq79saFGP7/Jy3KTBFeLY.bB89vI4z.Mm/bd.XCWmtz3kcGVLe",
|
|
"referral_code" => "888GUG274",
|
|
"bank_name" => null,
|
|
"bank_account_name" => null,
|
|
"bank_account_number" => null,
|
|
"virtual_account" => null,
|
|
"token" => null,
|
|
"android_id" => $android_id,
|
|
"device_token_id" => $device_token_id,
|
|
"login_status" => 1,
|
|
"dantar_android_id" => null,
|
|
"dantar_device_token_id" => null,
|
|
"dantar_login_status" => 0,
|
|
"dantar_driver_android_id" => null,
|
|
"dantar_driver_device_token_id" => null,
|
|
"dantar_driver_login_status" => 0,
|
|
"dantar_admin_android_id" => null,
|
|
"dantar_admin_device_token_id" => null,
|
|
"dantar_admin_login_status" => 0,
|
|
"shop_device_token_id" => null,
|
|
"shop_login_status" => 0,
|
|
"time_registered" => $response->masuk,
|
|
"data_verified" => 1,
|
|
"data_verified_date" => "2024-11-12 12:22:17",
|
|
"initial_obligation" => 1,
|
|
"initial_obligation_verified" => 0,
|
|
"initial_obligation_verified_date" => null,
|
|
"active" => 0,
|
|
"terminate" => 0,
|
|
"deleted" => 0,
|
|
"created_at" => "2024-10-08T06:19:56.000000Z",
|
|
"updated_at" => "2024-12-15T07:26:19.000000Z",
|
|
"data_personal_status" => true,
|
|
"data_family_status" => true,
|
|
"data_document_status" => true,
|
|
"nip" => "",
|
|
"ktp" => "",
|
|
"dept" => "A",
|
|
"unit" => null,
|
|
"unitkerja" => "Kepala Dispendik Kab. Gresik",
|
|
"bagian" => null,
|
|
"status" => "0",
|
|
"golkar" => null,
|
|
"gaji" => "0",
|
|
"kota" => "Gresik",
|
|
"pokok" => "0",
|
|
"wajib" => "80000",
|
|
"manasuka" => "20000",
|
|
"bw" => "200000",
|
|
"tk" => "200000",
|
|
"swp" => "0",
|
|
"uang" => null,
|
|
"spuang" => null,
|
|
"spbank" => null,
|
|
"spbarang" => null,
|
|
"kunci" => null,
|
|
"nomor" => null,
|
|
"keluar" => null,
|
|
"dk" => null,
|
|
"batas" => "",
|
|
"idcard" => null,
|
|
"idlog" => null,
|
|
"kdpos" => "",
|
|
"tgllahir" => "1972-04-22",
|
|
"jk" => "L",
|
|
"prima" => "1",
|
|
"jurubayar" => "Kab",
|
|
"rekapgol" => "DINAS KAB",
|
|
"laporan" => "1",
|
|
]
|
|
]);
|
|
}else{
|
|
echo json_encode([
|
|
"success" => false,
|
|
"message" => "login gagal",
|
|
]);
|
|
}
|
|
});
|
|
|
|
foreach(Webs::map(SETUP_PATH.'web/android/') as $pathLoad){
|
|
try{
|
|
include_once $pathLoad;
|
|
}catch(Exception $e){
|
|
// throw error
|
|
}
|
|
};
|
|
|
|
$route->add('/api', function() use ($api){
|
|
global $_GET;
|
|
$api->run($_GET['u']);
|
|
})
|
|
->use('vendor/autoload.php')
|
|
->use('module/db.php')
|
|
->use('module/dd.php')
|
|
->use('module/perusahaan.php');
|
|
|