1296 lines
45 KiB
PHP
1296 lines
45 KiB
PHP
<?php
|
|
class Usermenu extends MY_Controller
|
|
{
|
|
var $db;
|
|
public function index()
|
|
{
|
|
echo "Usermenu API";
|
|
}
|
|
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
// $this->db = $this->load->database("default", true);
|
|
$this->db->query("use one_dash");
|
|
}
|
|
|
|
function corss()
|
|
{
|
|
global $_SERVER;
|
|
if (isset($_SERVER["HTTP_ORIGIN"])) {
|
|
header("Access-Control-Allow-Origin: " . $_SERVER["HTTP_ORIGIN"]);
|
|
} else {
|
|
header("Access-Control-Allow-Origin: */*");
|
|
}
|
|
header("Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS");
|
|
header(
|
|
"Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization"
|
|
);
|
|
if (
|
|
isset($_SERVER["REQUEST_METHOD"]) &&
|
|
$_SERVER["REQUEST_METHOD"] == "OPTIONS"
|
|
) {
|
|
http_response_code(200);
|
|
echo json_encode("OK");
|
|
exit();
|
|
}
|
|
}
|
|
|
|
// list user all
|
|
public function get_list_user()
|
|
{
|
|
$this->corss();
|
|
try {
|
|
// PAKE POST DARI FLUTTER
|
|
$param = $this->sys_input;
|
|
$name = "%%";
|
|
if (isset($param['search_user'])) {
|
|
$name = trim($param["search_user"]);
|
|
$name = '%' . $param['search_user'] . '%';
|
|
}
|
|
|
|
$sql_user = "SELECT M_UserID,
|
|
M_UserFullName,
|
|
M_UserIsAdmin,
|
|
M_UserIsLoggedIn
|
|
FROM m_user
|
|
WHERE M_UserIsActive = 'Y'
|
|
AND M_UserFullName LIKE '$name'
|
|
";
|
|
|
|
$qry_user = $this->db->query($sql_user, []);
|
|
if (!$qry_user) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
$last_qry_user = $this->db->last_query();
|
|
$rst_user = $qry_user->result_array();
|
|
|
|
$result = [
|
|
"list_user" => $rst_user,
|
|
"last_qry_user" => $last_qry_user
|
|
];
|
|
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
// list menu all
|
|
public function get_list_menu()
|
|
{
|
|
$this->corss();
|
|
try {
|
|
$sql_menu = "SELECT
|
|
M_MenuID,
|
|
M_MenuName,
|
|
false as isActive
|
|
from m_menu
|
|
where M_MenuIsActive = 'Y'
|
|
";
|
|
|
|
$qry_menu = $this->db->query($sql_menu, []);
|
|
if (!$qry_menu) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
$last_qry_menu = $this->db->last_query();
|
|
$rst_menu = $qry_menu->result_array();
|
|
|
|
// ubah isActive 1 jadi true, jika 0 false
|
|
foreach ($rst_menu as &$item) {
|
|
$item['isActive'] = ($item['isActive'] === '1') ? true : false;
|
|
}
|
|
|
|
$result = [
|
|
"list_menu" => $rst_menu,
|
|
"last_qry_menu" => $last_qry_menu
|
|
];
|
|
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
// list menu by user id
|
|
function list_menu_by_user_id_v1()
|
|
{
|
|
try {
|
|
// if (!$this->isLogin) {
|
|
// $this->sys_error("Invalid Token");
|
|
// exit;
|
|
// }
|
|
$param = $this->sys_input;
|
|
$id = "0";
|
|
if (isset($param['id'])) {
|
|
$id = $param["id"];
|
|
}
|
|
$sql = "select
|
|
M_MenuID,
|
|
M_MenuName
|
|
from m_user_permission
|
|
join m_menu
|
|
ON M_UserPermissionM_MenuID = M_MenuID
|
|
AND M_MenuIsActive = 'Y'
|
|
where M_UserPermissionM_UserID = ?
|
|
AND M_UserPermissionIsActive = 'Y'";
|
|
|
|
$qry = $this->db->query($sql, [$id]);
|
|
if (!$qry) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
$rst = $qry->result_array();
|
|
$this->sys_ok(array("records" => $rst));
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
function list_menu_by_user_id_v2()
|
|
{
|
|
try {
|
|
// if (!$this->isLogin) {
|
|
// $this->sys_error("Invalid Token");
|
|
// exit;
|
|
// }
|
|
$param = $this->sys_input;
|
|
$id = "0";
|
|
if (isset($param['id'])) {
|
|
$id = $param["id"];
|
|
}
|
|
|
|
$sql_menu_active = "select
|
|
M_MenuID,
|
|
M_MenuName,
|
|
true as isActive
|
|
from m_user_permission
|
|
join m_menu
|
|
ON M_UserPermissionM_MenuID = M_MenuID
|
|
AND M_MenuIsActive = 'Y'
|
|
where M_UserPermissionM_UserID = ?
|
|
AND M_UserPermissionIsActive = 'Y'";
|
|
|
|
$qry_menu_active = $this->db->query($sql_menu_active, [$id]);
|
|
if (!$qry_menu_active) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
$rst_menu_active = $qry_menu_active->result_array();
|
|
|
|
// all menu not active
|
|
$sql_menu_not_active = "select
|
|
M_MenuID,
|
|
M_MenuName,
|
|
false as isActive
|
|
from m_menu
|
|
WHERE M_MenuIsActive = 'Y'
|
|
AND M_MenuID Not In(
|
|
select
|
|
M_MenuID
|
|
from m_user_permission
|
|
join m_menu
|
|
ON M_UserPermissionM_MenuID = M_MenuID
|
|
AND M_MenuIsActive = 'Y'
|
|
where M_UserPermissionM_UserID = ?
|
|
AND M_UserPermissionIsActive = 'Y'
|
|
)
|
|
";
|
|
|
|
$qry_menu_not_active = $this->db->query($sql_menu_not_active, [$id]);
|
|
if (!$qry_menu_not_active) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
$last_qry_menu_not_active = $this->db->last_query();
|
|
$rst_menu_not_active = $qry_menu_not_active->result_array();
|
|
|
|
$result = [];
|
|
|
|
// menu active
|
|
if (count($rst_menu_active) > 0) {
|
|
foreach ($rst_menu_active as $key => $vx) {
|
|
$result[] = $vx;
|
|
}
|
|
}
|
|
|
|
// menu not active
|
|
if (count($rst_menu_not_active) > 0) {
|
|
foreach ($rst_menu_not_active as $key => $vx) {
|
|
$result[] = $vx;
|
|
}
|
|
}
|
|
|
|
// ubah isActive 1 jadi true, jika 0 false
|
|
foreach ($result as &$item) {
|
|
$item['isActive'] = ($item['isActive'] === '1') ? true : false;
|
|
}
|
|
|
|
// proses sorting M_MenuID ASC
|
|
$M_MenuID = array_column($result, 'M_MenuID');
|
|
array_multisort($M_MenuID, SORT_ASC, $result);
|
|
|
|
// print_r($result);
|
|
// exit;
|
|
|
|
$this->sys_ok(array("records" => $result));
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
// function list_menu_by_user_id_test()
|
|
// {
|
|
// try {
|
|
// // if (!$this->isLogin) {
|
|
// // $this->sys_error("Invalid Token");
|
|
// // exit;
|
|
// // }
|
|
// $param = $this->sys_input;
|
|
// $id = "0";
|
|
// if (isset($param['id'])) {
|
|
// $id = $param["id"];
|
|
// }
|
|
|
|
|
|
|
|
// $this->sys_ok(array("records" => $result));
|
|
// } catch (Exception $exc) {
|
|
// $message = $exc->getMessage();
|
|
// $this->sys_error($message);
|
|
// }
|
|
// }
|
|
|
|
function list_menu_by_user_id_22_11_2023()
|
|
{
|
|
try {
|
|
// if (!$this->isLogin) {
|
|
// $this->sys_error("Invalid Token");
|
|
// exit;
|
|
// }
|
|
$param = $this->sys_input;
|
|
$id = "0";
|
|
if (isset($param['id'])) {
|
|
$id = $param["id"];
|
|
}
|
|
|
|
$sql_check = "select
|
|
M_MenuID,
|
|
M_MenuName,
|
|
true as isActive
|
|
from m_user_permission
|
|
join m_menu
|
|
ON M_UserPermissionM_MenuID = M_MenuID
|
|
AND M_MenuIsActive = 'Y'
|
|
where M_UserPermissionM_UserID = ?
|
|
AND M_UserPermissionIsActive = 'Y'
|
|
AND M_UserPermissionM_MenuID = 1";
|
|
|
|
$qry_check = $this->db->query($sql_check, [$id]);
|
|
if (!$qry_check) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
$rst_check_isAdminUser = $qry_check->result_array();
|
|
|
|
$result = [];
|
|
|
|
if (count($rst_check_isAdminUser) > 0) {
|
|
$sql_menu_active = "select
|
|
M_MenuID,
|
|
M_MenuName,
|
|
'true' as isActive
|
|
from m_user_permission
|
|
join m_menu
|
|
ON M_UserPermissionM_MenuID = M_MenuID
|
|
AND M_MenuIsActive = 'Y'
|
|
where M_UserPermissionM_UserID = ?
|
|
AND M_UserPermissionIsActive = 'Y'
|
|
AND M_UserPermissionM_MenuID = 1
|
|
|
|
UNION
|
|
|
|
select
|
|
M_MenuID,
|
|
M_MenuName,
|
|
IF(M_UserPermissionIsActive='Y','true','false') as isActive
|
|
from m_user_permission
|
|
join m_menu
|
|
ON M_UserPermissionM_MenuID = M_MenuID
|
|
AND M_MenuIsActive = 'Y'
|
|
WHERE M_MenuIsActive = 'Y'
|
|
AND M_UserPermissionIsActive = 'Y'
|
|
AND M_MenuID Not In(
|
|
select
|
|
M_MenuID
|
|
from m_user_permission
|
|
join m_menu
|
|
ON M_UserPermissionM_MenuID = M_MenuID
|
|
AND M_MenuIsActive = 'Y'
|
|
where M_UserPermissionM_UserID = ?
|
|
AND M_UserPermissionIsActive = 'Y'
|
|
AND M_UserPermissionM_MenuID = 1
|
|
)";
|
|
|
|
$qry_menu_active = $this->db->query($sql_menu_active, [$id, $id]);
|
|
if (!$qry_menu_active) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
$rst_menu_active = $qry_menu_active->result_array();
|
|
|
|
if (count($rst_menu_active) > 0) {
|
|
|
|
foreach ($rst_menu_active as $key => $vx) {
|
|
$result[] = [
|
|
"M_MenuID" => $vx['M_MenuID'],
|
|
"M_MenuName" => $vx['M_MenuName'],
|
|
"isActive" => ($vx['isActive'] == "true") ? true : false
|
|
];
|
|
}
|
|
}
|
|
|
|
// print_r($rst_menu_active);
|
|
// exit;
|
|
|
|
// proses sorting M_MenuID ASC
|
|
$M_MenuID = array_column($result, 'M_MenuID');
|
|
array_multisort($M_MenuID, SORT_ASC, $result);
|
|
} else {
|
|
$sql_menu_active = "select
|
|
M_MenuID,
|
|
M_MenuName,
|
|
true as isActive
|
|
from m_user_permission
|
|
join m_menu
|
|
ON M_UserPermissionM_MenuID = M_MenuID
|
|
AND M_MenuIsActive = 'Y'
|
|
where M_UserPermissionM_UserID = ?
|
|
AND M_UserPermissionIsActive = 'Y'";
|
|
|
|
$qry_menu_active = $this->db->query($sql_menu_active, [$id]);
|
|
if (!$qry_menu_active) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
$rst_menu_active = $qry_menu_active->result_array();
|
|
|
|
// all menu not active
|
|
$sql_menu_not_active = "select
|
|
M_MenuID,
|
|
M_MenuName,
|
|
false as isActive
|
|
from m_menu
|
|
WHERE M_MenuIsActive = 'Y'
|
|
AND M_MenuID Not In(
|
|
select
|
|
M_MenuID
|
|
from m_user_permission
|
|
join m_menu
|
|
ON M_UserPermissionM_MenuID = M_MenuID
|
|
AND M_MenuIsActive = 'Y'
|
|
where M_UserPermissionM_UserID = ?
|
|
AND M_UserPermissionIsActive = 'Y'
|
|
)
|
|
";
|
|
|
|
$qry_menu_not_active = $this->db->query($sql_menu_not_active, [$id]);
|
|
if (!$qry_menu_not_active) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
$last_qry_menu_not_active = $this->db->last_query();
|
|
$rst_menu_not_active = $qry_menu_not_active->result_array();
|
|
|
|
$result = [];
|
|
|
|
// menu active
|
|
if (count($rst_menu_active) > 0) {
|
|
foreach ($rst_menu_active as $key => $vx) {
|
|
$result[] = $vx;
|
|
}
|
|
}
|
|
|
|
// menu not active
|
|
if (count($rst_menu_not_active) > 0) {
|
|
foreach ($rst_menu_not_active as $key => $vx) {
|
|
$result[] = $vx;
|
|
}
|
|
}
|
|
|
|
// ubah isActive 1 jadi true, jika 0 false
|
|
foreach ($result as &$item) {
|
|
$item['isActive'] = ($item['isActive'] === '1') ? true : false;
|
|
}
|
|
|
|
// proses sorting M_MenuID ASC
|
|
$M_MenuID = array_column($result, 'M_MenuID');
|
|
array_multisort($M_MenuID, SORT_ASC, $result);
|
|
}
|
|
|
|
// print_r($result);
|
|
// exit;
|
|
|
|
$this->sys_ok(array("records" => $result));
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
function list_menu_by_user_id()
|
|
{
|
|
try {
|
|
// if (!$this->isLogin) {
|
|
// $this->sys_error("Invalid Token");
|
|
// exit;
|
|
// }
|
|
$param = $this->sys_input;
|
|
$id = "0";
|
|
if (isset($param['id'])) {
|
|
$id = $param["id"];
|
|
}
|
|
|
|
// $sql_check = "select
|
|
// M_MenuID,
|
|
// M_MenuName,
|
|
// true as isActive
|
|
// from m_user_permission
|
|
// join m_menu
|
|
// ON M_UserPermissionM_MenuID = M_MenuID
|
|
// AND M_MenuIsActive = 'Y'
|
|
// where M_UserPermissionM_UserID = ?
|
|
// AND M_UserPermissionIsActive = 'Y'
|
|
// AND M_UserPermissionM_MenuID = 1";
|
|
|
|
$sql_check = "select M_UserIsAdmin
|
|
from m_user
|
|
WHERE M_UserID = ?
|
|
AND M_UserIsActive = 'Y'";
|
|
|
|
$qry_check = $this->db->query($sql_check, [$id]);
|
|
if (!$qry_check) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
$rst_check_isAdminUser = $qry_check->result_array();
|
|
|
|
$result = [];
|
|
|
|
// print_r($rst_check_isAdminUser);
|
|
// exit;
|
|
|
|
$isAdmin = false;
|
|
|
|
if (count($rst_check_isAdminUser) > 0) {
|
|
if ($rst_check_isAdminUser[0]['M_UserIsAdmin'] == "Y") {
|
|
$isAdmin = true;
|
|
}
|
|
}
|
|
|
|
if ($isAdmin == true) {
|
|
|
|
// echo 'admin';
|
|
|
|
$sql_menu_active = "select
|
|
M_MenuID,
|
|
M_MenuName,
|
|
'true' as isActive
|
|
from m_menu
|
|
WHERE M_MenuIsActive = 'Y'
|
|
AND M_MenuID = 1
|
|
|
|
UNION
|
|
|
|
select
|
|
M_MenuID,
|
|
M_MenuName,
|
|
IF(M_UserPermissionIsActive='Y','true','false') as isActive
|
|
from m_menu
|
|
left join m_user_permission
|
|
ON M_MenuID = M_UserPermissionM_MenuID
|
|
AND M_MenuIsActive = 'Y'
|
|
AND M_UserPermissionM_UserID = ?
|
|
";
|
|
|
|
// $sql_menu_active = "select
|
|
// M_MenuID,
|
|
// M_MenuName,
|
|
// IF(M_UserPermissionIsActive='Y','true','false') as isActive
|
|
// from m_user_permission
|
|
// join m_menu
|
|
// ON M_UserPermissionM_MenuID = M_MenuID
|
|
// AND M_MenuIsActive = 'Y'
|
|
// AND M_UserPermissionM_UserID = ?";
|
|
|
|
// $qry_menu_active = $this->db->query($sql_menu_active, [$id, $id]);
|
|
|
|
$qry_menu_active = $this->db->query($sql_menu_active, [$id]);
|
|
if (!$qry_menu_active) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
$rst_menu_active = $qry_menu_active->result_array();
|
|
|
|
if (count($rst_menu_active) > 0) {
|
|
|
|
foreach ($rst_menu_active as $key => $vx) {
|
|
$result[] = [
|
|
"M_MenuID" => $vx['M_MenuID'],
|
|
"M_MenuName" => $vx['M_MenuName'],
|
|
"isActive" => ($vx['isActive'] == "true") ? true : false
|
|
];
|
|
}
|
|
}
|
|
|
|
// print_r($rst_menu_active);
|
|
// exit;
|
|
|
|
// proses sorting M_MenuID ASC
|
|
$M_MenuID = array_column($result, 'M_MenuID');
|
|
array_multisort($M_MenuID, SORT_ASC, $result);
|
|
} else {
|
|
|
|
$sql_menu_active = "select
|
|
M_MenuID,
|
|
M_MenuName,
|
|
'false' as isActive
|
|
from m_menu
|
|
WHERE M_MenuIsActive = 'Y'
|
|
AND M_MenuID = 1
|
|
|
|
UNION
|
|
|
|
select
|
|
M_MenuID,
|
|
M_MenuName,
|
|
IF(M_UserPermissionIsActive='Y','true','false') as isActive
|
|
from m_menu
|
|
left join m_user_permission
|
|
ON M_MenuID = M_UserPermissionM_MenuID
|
|
AND M_MenuIsActive = 'Y'
|
|
AND M_UserPermissionM_UserID = ?
|
|
";
|
|
|
|
// $qry_menu_active = $this->db->query($sql_menu_active, [$id, $id]);
|
|
|
|
$qry_menu_active = $this->db->query($sql_menu_active, [$id]);
|
|
if (!$qry_menu_active) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
$rst_menu_active = $qry_menu_active->result_array();
|
|
|
|
if (count($rst_menu_active) > 0) {
|
|
|
|
foreach ($rst_menu_active as $key => $vx) {
|
|
$result[] = [
|
|
"M_MenuID" => $vx['M_MenuID'],
|
|
"M_MenuName" => $vx['M_MenuName'],
|
|
"isActive" => ($vx['isActive'] == "true") ? true : false
|
|
];
|
|
}
|
|
}
|
|
|
|
// proses sorting M_MenuID ASC
|
|
$M_MenuID = array_column($result, 'M_MenuID');
|
|
array_multisort($M_MenuID, SORT_ASC, $result);
|
|
}
|
|
|
|
// print_r($result);
|
|
// exit;
|
|
|
|
$this->sys_ok(array("records" => $result));
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
// menu permission by user id
|
|
function get_permission_by_user_id()
|
|
{
|
|
try {
|
|
// if (!$this->isLogin) {
|
|
// $this->sys_error("Invalid Token");
|
|
// exit;
|
|
// }
|
|
$param = $this->sys_input;
|
|
$id = "0";
|
|
if (isset($param['id'])) {
|
|
$id = $param["id"];
|
|
}
|
|
$sql = "SELECT M_UserPermissionM_UserID as permissionUserID,
|
|
M_UserPermissionIsNasional as permissionIsNasional,
|
|
M_UserPermissionRegionalJSON as permissionRegionalJSON,
|
|
M_UserPermissionM_MenuID as permissionMenuID
|
|
FROM one_dash.m_user_permission
|
|
WHERE M_UserPermissionIsActive = 'Y'
|
|
AND M_UserPermissionM_UserID = ?";
|
|
|
|
$qry = $this->db->query($sql, [$id]);
|
|
if (!$qry) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
$rst = $qry->result_array();
|
|
$this->sys_ok(array("records" => $rst));
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
// list scope all
|
|
function get_scope()
|
|
{
|
|
try {
|
|
// if (!$this->isLogin) {
|
|
// $this->sys_error("Invalid Token");
|
|
// exit;
|
|
// }
|
|
|
|
// $sql = "SELECT M_BranchID as branchID, M_BranchName as branchName
|
|
// FROM one_dash.m_branch WHERE M_BranchIsActive = 'Y'";
|
|
|
|
// $sql = "
|
|
// SELECT
|
|
// S_RegionalID,
|
|
// S_RegionalName,
|
|
// false as isActive
|
|
// FROM s_regional
|
|
// WHERE S_RegionalIsActive = 'Y'";
|
|
|
|
$sql = "select 0 as S_RegionalID,
|
|
'Nasional' as S_RegionalName,
|
|
false as isActive
|
|
UNION
|
|
SELECT
|
|
S_RegionalID,
|
|
S_RegionalName,
|
|
false as isActive
|
|
FROM s_regional
|
|
WHERE S_RegionalIsActive = 'Y'
|
|
";
|
|
|
|
$qry = $this->db->query($sql, []);
|
|
if (!$qry) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
$rst = $qry->result_array();
|
|
|
|
// ubah isActive 1 jadi true, jika 0 false
|
|
foreach ($rst as &$item) {
|
|
$item['isActive'] = ($item['isActive'] === '1') ? true : false;
|
|
}
|
|
|
|
$this->sys_ok(array("records" => $rst));
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
// list scope by user id and menu id
|
|
function get_permission_scope_by_menu_id_user_id()
|
|
{
|
|
try {
|
|
// if (!$this->isLogin) {
|
|
// $this->sys_error("Invalid Token");
|
|
// exit;
|
|
// }
|
|
$param = $this->sys_input;
|
|
$user_id = "0";
|
|
if (isset($param['user_id'])) {
|
|
$user_id = $param["user_id"];
|
|
}
|
|
$menu_id = "0";
|
|
if (isset($param['menu_id'])) {
|
|
$menu_id = $param["menu_id"];
|
|
}
|
|
|
|
// scope default
|
|
$sql_default = "
|
|
select 0 as S_RegionalID,
|
|
'Nasional' as S_RegionalName,
|
|
false as isActive
|
|
UNION
|
|
SELECT
|
|
S_RegionalID,
|
|
S_RegionalName,
|
|
false as isActive
|
|
FROM s_regional
|
|
WHERE S_RegionalIsActive = 'Y'";
|
|
|
|
$qry_default = $this->db->query($sql_default);
|
|
if (!$qry_default) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
$rst_scope_default = $qry_default->result_array();
|
|
|
|
// ubah isActive 1 jadi true, jika 0 false
|
|
foreach ($rst_scope_default as $item) {
|
|
$item['isActive'] = ($item['isActive'] === '1') ? true : false;
|
|
}
|
|
|
|
// scope nasional
|
|
$sql_isNasional = "
|
|
select 0 as S_RegionalID,
|
|
'Nasional' as S_RegionalName,
|
|
true as isActive
|
|
UNION
|
|
SELECT
|
|
S_RegionalID,
|
|
S_RegionalName,
|
|
false as isActive
|
|
FROM s_regional
|
|
WHERE S_RegionalIsActive = 'Y'";
|
|
|
|
$qry_isNasional = $this->db->query($sql_isNasional);
|
|
if (!$qry_isNasional) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
$rst_scope_isNasional = $qry_isNasional->result_array();
|
|
|
|
// ubah isActive 1 jadi true, jika 0 false
|
|
foreach ($rst_scope_isNasional as $item) {
|
|
$item['isActive'] = ($item['isActive'] === '1') ? true : false;
|
|
}
|
|
|
|
$sql = "SELECT
|
|
M_UserPermissionIsNasional as permissionIsNasional,
|
|
M_UserPermissionRegionalJSON as permissionRegionalJSON
|
|
FROM m_user_permission
|
|
WHERE M_UserPermissionIsActive = 'Y'
|
|
AND M_UserPermissionM_UserID = $user_id
|
|
AND M_UserPermissionM_MenuID = $menu_id";
|
|
|
|
$qry = $this->db->query($sql);
|
|
if (!$qry) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
$rst = $qry->row_array();
|
|
$result = [];
|
|
$result_decode = [];
|
|
$result_x = [];
|
|
|
|
if (!empty($rst['permissionRegionalJSON'])) {
|
|
$newString = str_replace("\\", "", $rst['permissionRegionalJSON']);
|
|
$result_decode = json_decode($newString, true);
|
|
if ($result_decode != null || $result_decode != "null") {
|
|
$result_x = json_decode($newString, true);
|
|
}
|
|
}
|
|
|
|
// klu permissionIsNasional nya N pakai dibawah
|
|
if ($rst['permissionIsNasional'] == "N") {
|
|
// ambil array $result_x hanya menu active
|
|
// compare sama array default
|
|
// jika sama maka ambil yg active, jk tidak ditambahkan
|
|
|
|
for ($i = 0; $i < count($result_x); $i++) {
|
|
$result_x[$i]['isActive'] = ($result_x[$i]['isActive'] === "true") ? true : false;
|
|
}
|
|
|
|
$id_regional = [];
|
|
|
|
foreach ($result_x as $key => $vx) {
|
|
$id_regional[] = $vx['S_RegionalID'];
|
|
}
|
|
|
|
$array_sisa_default = array_filter($rst_scope_default, function ($item) use ($id_regional) {
|
|
$id = $item['S_RegionalID'];
|
|
|
|
return !in_array($id, $id_regional);
|
|
});
|
|
|
|
// print_r($array_sisa_default);
|
|
// exit;
|
|
|
|
foreach ($array_sisa_default as $index => $item) {
|
|
$array_sisa_default[$index]['isActive'] = ($item['isActive'] === '1') ? true : false;
|
|
}
|
|
|
|
$regional = array_merge($result_x, $array_sisa_default);
|
|
|
|
usort($regional, function ($a, $b) {
|
|
if ($a['S_RegionalID'] > $b['S_RegionalID']) {
|
|
return 1;
|
|
}
|
|
if ($a['S_RegionalID'] < $b['S_RegionalID']) {
|
|
return -1;
|
|
}
|
|
return 0;
|
|
});
|
|
|
|
|
|
// // $result = [
|
|
// // "permissionIsNasional" => $rst['permissionIsNasional'],
|
|
// // "permissionRegionalJSON" => $result_x
|
|
// // ];
|
|
|
|
$result = [
|
|
"permissionIsNasional" => $rst['permissionIsNasional'],
|
|
// "permissionRegionalJSON" => $result_n
|
|
"permissionRegionalJSON" => $regional
|
|
];
|
|
}
|
|
|
|
// permissionIsNasional nya Y
|
|
else {
|
|
if ($rst['permissionIsNasional'] == "Y") {
|
|
|
|
for ($i = 0; $i < count($rst_scope_isNasional); $i++) {
|
|
$rst_scope_isNasional[$i]['isActive'] = ($rst_scope_isNasional[$i]['isActive'] === "1") ? true : false;
|
|
}
|
|
|
|
$result = [
|
|
"permissionIsNasional" => $rst['permissionIsNasional'],
|
|
"permissionRegionalJSON" => $rst_scope_isNasional
|
|
];
|
|
} else {
|
|
for ($i = 0; $i < count($rst_scope_default); $i++) {
|
|
$rst_scope_default[$i]['isActive'] = ($rst_scope_default[$i]['isActive'] === "1") ? true : false;
|
|
}
|
|
// tidak ada menu yg user miliki balik ke default
|
|
$result = [
|
|
"permissionIsNasional" => "",
|
|
"permissionRegionalJSON" => $rst_scope_default
|
|
];
|
|
}
|
|
}
|
|
|
|
|
|
// $this->sys_ok(array("records" => $result));
|
|
$this->sys_ok(array("records" => $result));
|
|
|
|
// $this->sys_ok(array("records" => $result));
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
// checked or not menu (middle)
|
|
function add_permission_menu()
|
|
{
|
|
try {
|
|
// if (!$this->isLogin) {
|
|
// $this->sys_error("Invalid Token");
|
|
// exit;
|
|
// }
|
|
$param = $this->sys_input;
|
|
|
|
$user_id = "0";
|
|
|
|
if (isset($param['user_id'])) {
|
|
$user_id = $param["user_id"];
|
|
}
|
|
|
|
$menu_id = "0";
|
|
|
|
if (isset($param['menu_id'])) {
|
|
$menu_id = $param["menu_id"];
|
|
}
|
|
|
|
// $value merupakan isActive atau tidak di flutter
|
|
$value = "0";
|
|
|
|
if (isset($param['value'])) {
|
|
$value = $param["value"];
|
|
}
|
|
|
|
if ($user_id == "0" || $menu_id == "0" || $value == "0") {
|
|
$this->sys_error("User ID, Menu ID & value are mandatory");
|
|
}
|
|
|
|
$active = "N";
|
|
|
|
if ($value == "true") {
|
|
$active = 'Y';
|
|
}
|
|
|
|
$sql_cek = "SELECT *
|
|
FROM one_dash.m_user_permission
|
|
WHERE M_UserPermissionM_UserID = ?
|
|
AND M_UserPermissionM_MenuID = ?";
|
|
|
|
$qry_cek = $this->db->query($sql_cek, [$user_id, $menu_id]);
|
|
if (!$qry_cek) {
|
|
$this->db->trans_rollback();
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
$rst_cek = $qry_cek->result_array();
|
|
|
|
// klu menu nya Admin User
|
|
if ($menu_id == "1") {
|
|
|
|
$sql_update = "UPDATE one_dash.m_user
|
|
SET M_UserIsAdmin =?
|
|
WHERE M_UserID = ?";
|
|
|
|
$qry_update = $this->db->query($sql_update, [$active, $user_id]);
|
|
|
|
if (!$qry_update) {
|
|
$this->db->trans_rollback();
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
|
|
// UPDATE TOKEN USER UNTUK AUTO LOGOUT
|
|
$sql_update_token_user = "UPDATE
|
|
m_user
|
|
SET
|
|
M_UserIsLoggedIn = 'N',
|
|
M_UserLastAccess = now(),
|
|
M_UserActiveToken = NULL
|
|
WHERE M_UserID = ?";
|
|
$qry_update_token = $this->db->query($sql_update_token_user, array($user_id));
|
|
|
|
if (!$qry_update_token) {
|
|
$this->db->trans_rollback();
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
if (count($rst_cek) == 0) {
|
|
//insert menu baru
|
|
$sql_insert = "INSERT INTO one_dash.m_user_permission
|
|
(
|
|
M_UserPermissionIsNasional,
|
|
M_UserPermissionM_UserID,
|
|
M_UserPermissionRegionalJSON,
|
|
M_UserPermissionM_MenuID
|
|
)
|
|
VALUES(?,?,?,?)";
|
|
$qry_insert = $this->db->query($sql_insert, ['N', $user_id, '[]', $menu_id]);
|
|
if (!$qry_insert) {
|
|
$this->db->trans_rollback();
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
|
|
// UPDATE TOKEN USER UNTUK AUTO LOGOUT
|
|
$sql_update_token_user = "UPDATE
|
|
m_user
|
|
SET
|
|
M_UserIsLoggedIn = 'N',
|
|
M_UserLastAccess = now(),
|
|
M_UserActiveToken = NULL
|
|
WHERE M_UserID = ?";
|
|
$qry_update_token = $this->db->query($sql_update_token_user, array($user_id));
|
|
|
|
if (!$qry_update_token) {
|
|
$this->db->trans_rollback();
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
} else {
|
|
// update menu M_UserPermissionRegionalJSON diabaikan
|
|
$sql_update = "UPDATE one_dash.m_user_permission
|
|
SET M_UserPermissionIsActive = '$active'
|
|
WHERE M_UserPermissionM_UserID = $user_id
|
|
AND M_UserPermissionM_MenuID = $menu_id";
|
|
|
|
// echo $sql_update;
|
|
// exit;
|
|
$qry_update = $this->db->query($sql_update);
|
|
if (!$qry_update) {
|
|
$this->db->trans_rollback();
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
|
|
// UPDATE TOKEN USER UNTUK AUTO LOGOUT
|
|
$sql_update_token_user = "UPDATE
|
|
m_user
|
|
SET
|
|
M_UserIsLoggedIn = 'N',
|
|
M_UserLastAccess = now(),
|
|
M_UserActiveToken = NULL
|
|
WHERE M_UserID = ?";
|
|
$qry_update_token = $this->db->query($sql_update_token_user, array($user_id));
|
|
|
|
if (!$qry_update_token) {
|
|
$this->db->trans_rollback();
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
}
|
|
$this->sys_ok("Success");
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
// checked or not scope (right)
|
|
function add_permission_scope()
|
|
{
|
|
try {
|
|
// if (!$this->isLogin) {
|
|
// $this->sys_error("Invalid Token");
|
|
// exit;
|
|
// }
|
|
$param = $this->sys_input;
|
|
$user_id = "0";
|
|
if (isset($param['user_id'])) {
|
|
$user_id = $param["user_id"];
|
|
}
|
|
$menu_id = "0";
|
|
if (isset($param['menu_id'])) {
|
|
$menu_id = $param["menu_id"];
|
|
}
|
|
$json = "0";
|
|
if (isset($param['json'])) {
|
|
|
|
$json = $param["json"];
|
|
}
|
|
$isNasional = "N";
|
|
if (isset($param['is_nasional'])) {
|
|
$isNasional = $param["is_nasional"];
|
|
}
|
|
|
|
if ($user_id == "0" || $menu_id == "0" || $json == "0") {
|
|
$this->sys_error("User ID, Menu ID & json are mandatory");
|
|
}
|
|
$sql_cek = "SELECT * FROM one_dash.m_user_permission
|
|
WHERE M_UserPermissionM_UserID = ?
|
|
AND M_UserPermissionM_MenuID = ?
|
|
AND M_UserPermissionIsActive = 'Y'";
|
|
$qry_cek = $this->db->query($sql_cek, [$user_id, $menu_id]);
|
|
if (!$qry_cek) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
$rst_cek = $qry_cek->result_array();
|
|
if (count($rst_cek) > 0) {
|
|
|
|
$sql_update = "UPDATE one_dash.m_user_permission SET
|
|
M_UserPermissionIsNasional = ?
|
|
WHERE M_UserPermissionM_MenuID = ?
|
|
AND M_UserPermissionM_UserID = ?";
|
|
$qry_update = $this->db->query($sql_update, [$isNasional, $menu_id, $user_id]);
|
|
if (!$qry_update) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
|
|
$sql_update = "UPDATE one_dash.m_user_permission SET
|
|
M_UserPermissionRegionalJSON= ?
|
|
WHERE M_UserPermissionM_MenuID = ?
|
|
AND M_UserPermissionM_UserID = ?";
|
|
$qry_update = $this->db->query($sql_update, [$json, $menu_id, $user_id]);
|
|
if (!$qry_update) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
|
|
// UPDATE TOKEN USER UNTUK AUTO LOGOUT
|
|
$sql_update_token_user = "UPDATE
|
|
m_user
|
|
SET
|
|
M_UserIsLoggedIn = 'N',
|
|
M_UserLastAccess = now(),
|
|
M_UserActiveToken = NULL
|
|
WHERE M_UserID = ?";
|
|
$qry_update_token = $this->db->query($sql_update_token_user, array($user_id));
|
|
|
|
if (!$qry_update_token) {
|
|
$this->db->trans_rollback();
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
$this->sys_ok("Success");
|
|
} else {
|
|
$this->sys_error("No data match");
|
|
}
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
// scope is nasional by user id and menu id
|
|
function get_permission_scope_nasional()
|
|
{
|
|
try {
|
|
// if (!$this->isLogin) {
|
|
// $this->sys_error("Invalid Token");
|
|
// exit;
|
|
// }
|
|
$param = $this->sys_input;
|
|
$user_id = "0";
|
|
if (isset($param['user_id'])) {
|
|
$user_id = $param["user_id"];
|
|
}
|
|
$menu_id = "0";
|
|
if (isset($param['menu_id'])) {
|
|
$menu_id = $param["menu_id"];
|
|
}
|
|
$sql = "SELECT
|
|
M_UserPermissionIsNasional as permissionIsNasional
|
|
FROM m_user_permission
|
|
WHERE M_UserPermissionIsActive = 'Y'
|
|
AND M_UserPermissionM_UserID = $user_id
|
|
AND M_UserPermissionM_MenuID = $menu_id";
|
|
|
|
$qry = $this->db->query($sql);
|
|
if (!$qry) {
|
|
$error = array(
|
|
"message" => $this->db->error()["message"],
|
|
"sql" => $this->db->last_query()
|
|
);
|
|
$this->sys_error_db($error);
|
|
exit;
|
|
}
|
|
$rst = $qry->row_array();
|
|
|
|
$result = [
|
|
"permissionIsNasional" => ""
|
|
];
|
|
|
|
if (count($rst) > 0) {
|
|
// array_push($result, $rst['permissionIsNasional']);
|
|
$result = [
|
|
"permissionIsNasional" => $rst['permissionIsNasional']
|
|
];
|
|
} else {
|
|
$result = [
|
|
"permissionIsNasional" => ""
|
|
];
|
|
}
|
|
|
|
$this->sys_ok(array("records" => [$result]));
|
|
// $this->sys_ok(array("records" => $result));
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
}
|