378 lines
15 KiB
PHP
378 lines
15 KiB
PHP
<?php
|
|
/*
|
|
### Auth API
|
|
- Functions
|
|
- login x
|
|
- logout
|
|
template function {
|
|
$this->sys_debug();
|
|
try {
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$prm = $this->sys_input;
|
|
|
|
} catch(Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
|
|
}
|
|
*/
|
|
|
|
class Authv3 extends MY_Controller
|
|
{
|
|
var $db_onedev;
|
|
public function index()
|
|
{
|
|
echo "AUTH API";
|
|
}
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->db_onedev = $this->load->database("onedev", true);
|
|
}
|
|
function isLogin()
|
|
{
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
} else {
|
|
$prm = $this->sys_input;
|
|
$data = array(
|
|
"user" => $this->sys_user
|
|
);
|
|
$this->sys_ok($data);
|
|
}
|
|
}
|
|
function login()
|
|
{
|
|
$prm = $this->sys_input;
|
|
try {
|
|
//existing password enc
|
|
$sm_password = md5($this->one_salt . $prm["password"] . $this->one_salt);
|
|
$query = $this->db_onedev->query(
|
|
"SELECT
|
|
M_UserID,M_UserUsername, M_UserGroupDashboard, M_UserDefaultT_SampleStationID,
|
|
M_StaffName, 'N' as is_courier, M_UserM_ApproveLevelID,
|
|
IFNULL(S_SystemsAutoLogoutTime,0) as time_autologout
|
|
FROM m_user
|
|
JOIN m_usergroup ON M_UserM_UserGroupID = M_UserGroupID
|
|
LEFT JOIN m_staff ON M_UserM_StaffID = M_StaffID
|
|
LEFT JOIN conf_systems ON S_SystemsIsActive = 'Y'
|
|
WHERE M_UserUsername = ? AND M_UserPassword = ?
|
|
AND M_UserIsActive = 'Y'",
|
|
array($prm["username"], $sm_password)
|
|
);
|
|
//echo $query;
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
// echo $this->db_onedev->last_query();
|
|
$rows = $query->result_array();
|
|
if (count($rows) > 0) {
|
|
$user = $rows[0];
|
|
|
|
$sql = "SELECT
|
|
M_UserLocationID,
|
|
M_UserLocationM_UserID,
|
|
M_UserLocationFlag,
|
|
M_UserLocationS_RegionalID,
|
|
M_UserLocationM_BranchID,
|
|
IFNULL(S_RegionalName, '') S_RegionalName,
|
|
IFNULL(S_RegionalID, '') S_RegionalID,
|
|
IFNULL(M_BranchName, '') M_BranchName,
|
|
IFNULL(M_BranchID, '0') M_BranchID,
|
|
IFNULL(M_BranchCode, '') M_BranchCode
|
|
FROM m_userlocation
|
|
LEFT JOIN s_regional ON M_UserLocationS_RegionalID = S_RegionalID
|
|
AND S_RegionalIsActive = 'Y'
|
|
LEFT JOIN m_branch ON M_UserLocationM_BranchID = M_BranchID
|
|
AND M_BranchIsActive = 'Y'
|
|
WHERE M_UserLocationM_UserID = ?
|
|
AND M_UserLocationIsActive = 'Y'";
|
|
$qry = $this->db_onedev->query($sql, array($user['M_UserID']));
|
|
if (!$qry) {
|
|
$this->sys_error_db("Error get regional");
|
|
exit;
|
|
}
|
|
$userLocation = $qry->result_array();
|
|
|
|
if (count($userLocation) == 0) {
|
|
$this->sys_error('User belum disetting');
|
|
exit;
|
|
}
|
|
|
|
$location = $userLocation[0];
|
|
$user['M_UserLocationID'] = $location['M_UserLocationID'];
|
|
$user['M_UserLocationFlag'] = $location['M_UserLocationFlag'];
|
|
$user['S_RegionalName'] = $location['S_RegionalName'];
|
|
$user['S_RegionalID'] = $location['S_RegionalID'];
|
|
$user['M_BranchName'] = $location['M_BranchName'];
|
|
$user['M_BranchCode'] = $location['M_BranchCode'];
|
|
$user['M_BranchID'] = $location['M_BranchID'];
|
|
|
|
switch ($location['M_UserLocationFlag']) {
|
|
case 'P':
|
|
$user['S_RegionalName'] = '';
|
|
$user['S_RegionalID'] = 0;
|
|
$user['M_BranchName'] = '';
|
|
$user['M_BranchCode'] = '';
|
|
$user['M_BranchID'] = 0;
|
|
$user['loginLevel'] = 'pusat';
|
|
break;
|
|
case 'R':
|
|
if ($prm['branch'] != '0') {
|
|
$sql = "SELECT
|
|
M_BranchID as branchID,
|
|
M_BranchS_RegionalID as branchRegionalID,
|
|
M_BranchCode as branchCode ,
|
|
M_BranchName as branchName,
|
|
M_BranchCompanyDetailM_BranchCompanyID branchCompanyID
|
|
FROM m_branch JOIN m_branch_companydetail ON M_BranchCode = M_BranchCompanyDetailM_BranchCode
|
|
WHERE M_BranchS_RegionalID = ?
|
|
AND M_BranchCompanyDetailIsActive = 'Y'
|
|
AND M_BranchCompanyDetailM_BranchCompanyID = ?
|
|
AND M_BranchID = ?
|
|
AND M_BranchIsActive = 'Y'";
|
|
$qry = $this->db_onedev->query($sql, array($prm['regional'], $prm['company'], $prm['branch']));
|
|
|
|
if (!$qry) {
|
|
$this->sys_error_db("Error get branch");
|
|
exit;
|
|
}
|
|
$result = $qry->result_array();
|
|
if (count($result) == 0) {
|
|
$this->sys_error('User regional tidak memiliki akses cabang yang dipilih');
|
|
exit;
|
|
}
|
|
$user['M_BranchName'] = $result[0]['branchName'];
|
|
$user['M_BranchCode'] = $result[0]['branchCode'];
|
|
$user['M_BranchID'] = $result[0]['branchID'];
|
|
}
|
|
$user['M_UserLocationFlag'] = 'R';
|
|
$user['loginLevel'] = 'regional';
|
|
break;
|
|
case 'B':
|
|
$user['loginLevel'] = 'branch';
|
|
if ($location['M_UserLocationM_BranchID'] != $prm['branch']) {
|
|
$this->sys_error('User tidak memiliki akses cabang yang dipilih');
|
|
exit;
|
|
}
|
|
break;
|
|
default:
|
|
$this->sys_error('User belum disetting');
|
|
exit;
|
|
}
|
|
|
|
$filterBranch = "";
|
|
if ($location['M_UserLocationFlag'] == 'B') {
|
|
$filterBranch = " AND M_BranchID = {$prm['branch']} ";
|
|
}
|
|
|
|
$sql = "SELECT
|
|
M_BranchCompanyID,
|
|
M_BranchCompanyName,
|
|
M_BranchCompanyDetailM_BranchCode,
|
|
M_branchName
|
|
FROM m_branch_company
|
|
JOIN m_branch_companydetail ON M_BranchCompanyID = M_BranchCompanyDetailM_BranchCompanyID
|
|
AND M_BranchCompanyDetailIsActive = 'Y'
|
|
JOIN m_branch ON M_BranchCompanyDetailM_BranchCode = M_BranchCode
|
|
AND M_BranchIsActive = 'Y'
|
|
AND M_BranchS_RegionalID = ?
|
|
$filterBranch
|
|
WHERE M_BranchCompanyID = ?
|
|
AND M_BranchCompanyDetailIsActive = 'Y'";
|
|
$qry = $this->db_onedev->query($sql, array($prm['regional'], $prm['company']));
|
|
if (!$qry) {
|
|
$this->sys_error_db("Error get company access");
|
|
exit;
|
|
}
|
|
$branchCompany = $qry->result_array();
|
|
if (count($branchCompany) == 0) {
|
|
$this->sys_error_db("Company tidak memiliki akses ke cabang yang dipilih");
|
|
exit;
|
|
}
|
|
$company = $branchCompany[0];
|
|
$user['M_BranchCompanyID'] = $company['M_BranchCompanyID'];
|
|
$user['M_BranchCompanyName'] = $company['M_BranchCompanyName'];
|
|
$user['ip'] = $_SERVER['REMOTE_ADDR'];
|
|
$user['agent'] = $_SERVER['HTTP_USER_AGENT'];
|
|
|
|
//v2
|
|
$user['version'] = 'v2';
|
|
$user['last-login'] = date('Y-m-d H:i:s');
|
|
if (isset($prm['M_SatelliteID'])) {
|
|
$user['M_SatelliteID'] = $prm['M_SatelliteID'];
|
|
} else {
|
|
$user['M_SatelliteID'] = 0;
|
|
}
|
|
$token = JWT::encode($user, $this->SECRET_KEY);
|
|
$data = array(
|
|
"user" => $user,
|
|
"token" => $token
|
|
);
|
|
|
|
$query = $this->db_onedev->query("UPDATE m_user SET
|
|
M_UserIsLoggedIn = 'Y',
|
|
M_UserLastAccess = now(),
|
|
M_UserActiveToken = '{$token}'
|
|
WHERE M_UserID = ?",
|
|
array($user['M_UserID'])
|
|
);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
|
|
$query = $this->db_onedev->query("INSERT INTO acc_one_log.log_login(
|
|
Log_LoginDateTime,
|
|
Log_LoginIP,
|
|
Log_LoginType,
|
|
Log_LoginStatus,
|
|
Log_LoginLogin
|
|
) VALUES (?,?,?,?,?)",
|
|
array(date('Y-m-d H:i:s'), $_SERVER['REMOTE_ADDR'], 'LOGIN', 'SUCCESS', $prm["username"])
|
|
);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
|
|
$this->sys_ok($data);
|
|
exit;
|
|
}
|
|
|
|
$query = $this->db_onedev->query("INSERT INTO acc_one_log.log_login(
|
|
Log_LoginDateTime,
|
|
Log_LoginIP,
|
|
Log_LoginType,
|
|
Log_LoginStatus,
|
|
Log_LoginLogin
|
|
) VALUES (?,?,?,?,?)",
|
|
array(date('Y-m-d H:i:s'), $this->input->ip_address(), 'LOGIN', 'FAILED', $prm["username"])
|
|
);
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
$this->sys_error_db("Invalid UserName / Password");
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
function logout()
|
|
{
|
|
$prm = $this->sys_input;
|
|
try {
|
|
|
|
$query = $this->db_onedev->query(
|
|
"
|
|
UPDATE m_user
|
|
SET M_UserIsLoggedIn = 'N', M_UserActiveToken = null
|
|
WHERE M_UserID = ?",
|
|
array($this->sys_user['M_UserID'])
|
|
);
|
|
|
|
if (!$query) {
|
|
$message = $this->db_onedev->error();
|
|
$this->sys_error($message);
|
|
exit;
|
|
}
|
|
|
|
$this->db_onedev->query("INSERT INTO one_log.log_login(Log_LoginDateTime,Log_LoginIP,Log_LoginType,Log_LoginStatus,Log_LoginLogin) VALUES (?,?,?,?,?)
|
|
", array(date('Y-m-d H:i:s'), $_SERVER['REMOTE_ADDR'], 'LOGOUT', 'SUCCESS', $this->sys_user['M_UserUsername']));
|
|
$this->sys_ok("OK");
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
|
|
function getRegional()
|
|
{
|
|
$prm = $this->sys_input;
|
|
try {
|
|
$sql = "SELECT
|
|
S_RegionalID regionalID,
|
|
S_RegionalName regionalName
|
|
FROM s_regional
|
|
WHERE S_RegionalIsActive = 'Y'";
|
|
$qry = $this->db_onedev->query($sql, array());
|
|
|
|
if (!$qry) {
|
|
// $this->db->trans_rollback();
|
|
$this->sys_error_db("Error get regional");
|
|
exit;
|
|
}
|
|
$result = $qry->result_array();
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
function getBranch($regionalID, $companyID)
|
|
{
|
|
$prm = $this->sys_input;
|
|
try {
|
|
$sql = "SELECT
|
|
M_BranchID as branchID,
|
|
M_BranchS_RegionalID as branchRegionalID,
|
|
M_BranchCode as branchCode ,
|
|
M_BranchName as branchName,
|
|
M_BranchCompanyDetailM_BranchCompanyID branchCompanyID
|
|
FROM m_branch
|
|
JOIN m_branch_companydetail
|
|
ON M_BranchCode = M_BranchCompanyDetailM_BranchCode
|
|
WHERE M_BranchS_RegionalID = ?
|
|
AND M_BranchCompanyDetailIsActive = 'Y'
|
|
AND M_BranchCompanyDetailM_BranchCompanyID = ?
|
|
AND M_BranchIsActive = 'Y'";
|
|
$qry = $this->db_onedev->query($sql, array($regionalID, $companyID));
|
|
|
|
if (!$qry) {
|
|
// $this->db->trans_rollback();
|
|
$this->sys_error_db("Error get branch");
|
|
exit;
|
|
}
|
|
$result = $qry->result_array();
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
function getCompany()
|
|
{
|
|
$prm = $this->sys_input;
|
|
try {
|
|
$sql = "SELECT
|
|
M_BranchCompanyID branchCompanyID,
|
|
M_BranchCompanyName branchCompanyName
|
|
FROM m_branch_company
|
|
WHERE M_BranchCompanyIsActive ='Y'";
|
|
$qry = $this->db_onedev->query($sql, array());
|
|
|
|
if (!$qry) {
|
|
// $this->db->trans_rollback();
|
|
$this->sys_error_db("Error get branch");
|
|
exit;
|
|
}
|
|
$result = $qry->result_array();
|
|
$this->sys_ok($result);
|
|
} catch (Exception $exc) {
|
|
$message = $exc->getMessage();
|
|
$this->sys_error($message);
|
|
}
|
|
}
|
|
}
|