-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDashboard.php
More file actions
98 lines (84 loc) · 4.61 KB
/
Copy pathDashboard.php
File metadata and controls
98 lines (84 loc) · 4.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?php
public function app($base_token = '', $sso_token = '')
{
$this->_log_app_access($base_token, $sso_token);
$this->session->set_flashdata('pesan', 'Silahkan Login terlebih dahulu');
redirect($this->app->server_portal());
}
private function _log_app_access($base_token = '', $sso_token = '')
{
$ip_ci = $this->input->ip_address();
$ip_forwarded = isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : 'N/A';
$ip_client = isset($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : 'N/A';
$ip_real = isset($_SERVER['HTTP_X_REAL_IP']) ? $_SERVER['HTTP_X_REAL_IP'] : 'N/A';
$remote_addr = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : 'N/A';
$user_agent = $this->input->user_agent() ? $this->input->user_agent() : (isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'N/A');
$request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : uri_string();
$http_method = $this->input->method(TRUE);
$referer = $this->input->server('HTTP_REFERER') ? $this->input->server('HTTP_REFERER') : 'N/A';
$session_id = session_id();
$session_data = json_encode($this->session->userdata());
$log_message = "[SECURITY AUDIT - DEPRECATED APP ACCESS] "
. "Timestamp: " . date('Y-m-d H:i:s') . " | "
. "IP Public (CI): {$ip_ci} | "
. "X-Forwarded-For: {$ip_forwarded} | "
. "Client-IP: {$ip_client} | "
. "X-Real-IP: {$ip_real} | "
. "Remote Addr: {$remote_addr} | "
. "User Agent: {$user_agent} | "
. "Method: {$http_method} | "
. "URI: {$request_uri} | "
. "Referer: {$referer} | "
. "Base Token: {$base_token} | "
. "SSO Token: {$sso_token} | "
. "GET: " . json_encode($this->input->get()) . " | "
. "POST: " . json_encode($this->input->post()) . " | "
. "Session ID: {$session_id} ";
log_message('error', $log_message);
// Guaranteed direct file write fallback to application/logs/
$log_dir = APPPATH . 'logs/';
if (!is_dir($log_dir)) {
@mkdir($log_dir, 0755, true);
}
$ci_log_file = $log_dir . 'log-' . date('Y-m-d') . '.php';
$file_exists = file_exists($ci_log_file);
$entry = '';
if (!$file_exists) {
$entry .= "<?php defined('BASEPATH') OR exit('No direct script access allowed'); ?>\n\n";
}
$entry .= 'ERROR - ' . date('Y-m-d H:i:s') . ' --> ' . $log_message . "\n";
@file_put_contents($ci_log_file, $entry, FILE_APPEND | LOCK_EX);
// Dedicated audit access log file fallback
$audit_log_file = $log_dir . 'audit_app_access.log';
$audit_entry = '[' . date('Y-m-d H:i:s') . '] ' . $log_message . "\n";
@file_put_contents($audit_log_file, $audit_entry, FILE_APPEND | LOCK_EX);
}
public function cek_akses_otp_validation($base_token = '', $sso_token = '', $rx = '', $jwt_otp = '')
{
$data = array();
if (empty($base_token) or empty($sso_token)) {
$this->session->set_flashdata('pesan', 'Silahkan Login terlebih dahulu');
redirect($this->app->server_portal());
}
// Validasi OTP
$cek_otp = $this->validasi_otp($jwt_otp);
if (empty($cek_otp) || (isset($cek_otp['status']) && $cek_otp['status'] != '200') || (isset($cek_otp['result']['valid']) && $cek_otp['result']['valid'] !== true)) {
$pesan_err = isset($cek_otp['message']) ? $cek_otp['message'] : 'Validasi OTP gagal / Token OTP kadaluarsa';
$this->session->set_flashdata('pesan', $pesan_err);
return redirect($this->app->server_portal());
}
$bt = $this->cek_base_token($base_token);
// return print_r($bt);
if ($bt['result']['id_app'] == $this->app->id_aplikasi()) {
$this->session->set_userdata(array('sso_token' => $sso_token));
$this->session->set_userdata(array('base_token' => $base_token));
return redirect(base_url() . 'app/routes/' . $bt['result']['id_app'] . '/' . $bt['result']['level_key']);
}
$this->session->set_flashdata('pesan', 'Silahkan Login terlebih dahulu');
redirect($this->app->server_portal());
}
public function validasi_otp($jwt_otp = '')
{
$json_data = json_encode(array('jwt_otp' => $jwt_otp));
return json_decode($this->curl->request_manual_tkn('POST', $this->app->server_sso() . 'api/otp/validate', $jwt_otp, $json_data), true);
}