update HR dan Payroll
This commit is contained in:
@@ -3,18 +3,20 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
|
||||
class Auth extends CI_Controller {
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->load->library('UserSessionService');
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
if ($this->session->userdata('logged_in')) {
|
||||
redirect('dashboard');
|
||||
}
|
||||
|
||||
$this->load->view('auth/login');
|
||||
public function index()
|
||||
{
|
||||
if ($this->session->userdata('logged_in')) {
|
||||
redirect('dashboard');
|
||||
}
|
||||
$notices=array('expired'=>'Masa login Anda telah berakhir. Silakan login kembali.','revoked'=>'Session perangkat telah diakhiri. Silakan login kembali.','device_limit'=>'Login ditolak karena batas perangkat aktif telah tercapai.');
|
||||
$key=(string)$this->input->get('notice',true);
|
||||
$this->load->view('auth/login',array('auth_notice'=>$notices[$key]??''));
|
||||
}
|
||||
|
||||
public function process_login()
|
||||
@@ -40,11 +42,25 @@ class Auth extends CI_Controller {
|
||||
return;
|
||||
}
|
||||
|
||||
$user = $this->db->get_where('v_users', ['username' => $username])->row();
|
||||
|
||||
$user = $this->db->get_where('v_users', ['username' => $username])->row();
|
||||
$account = $user ? $this->db->get_where('users', array('id' => (int)$user->id))->row() : null;
|
||||
|
||||
if ($user && (int)$user->role_is_active === 1 && password_verify($password, $user->password)) {
|
||||
|
||||
$this->session->sess_regenerate(true);
|
||||
try {
|
||||
$loginSecurity = $this->usersessionservice->begin($account ?: $user);
|
||||
} catch (Throwable $exception) {
|
||||
log_message('error', 'Pencatatan session login gagal: ' . $exception->getMessage());
|
||||
$this->session->set_flashdata('error', 'Login belum dapat diproses karena pencatatan keamanan session gagal.');
|
||||
redirect('auth');
|
||||
return;
|
||||
}
|
||||
if (!$loginSecurity['allowed']) {
|
||||
$this->session->set_flashdata('error', $loginSecurity['message']);
|
||||
redirect('auth');
|
||||
return;
|
||||
}
|
||||
$this->session->unset_userdata(array('login_attempts', 'login_locked_until'));
|
||||
|
||||
// Decode permissions
|
||||
@@ -62,7 +78,12 @@ class Auth extends CI_Controller {
|
||||
'role_id' => (int) $user->role_id,
|
||||
'is_super_admin'=> $role && (int)$role->is_super_admin === 1,
|
||||
'permissions' => $permissions,
|
||||
'logged_in' => TRUE
|
||||
'logged_in' => TRUE,
|
||||
'email' => $account->email ?? null,
|
||||
'profile_photo' => $account->profile_photo ?? null,
|
||||
'auth_login_key'=> $loginSecurity['login_key'],
|
||||
'auth_started_at'=> $loginSecurity['login_at'],
|
||||
'auth_expires_at'=> $loginSecurity['expires_at']
|
||||
];
|
||||
|
||||
$this->session->set_userdata($session_data);
|
||||
@@ -79,6 +100,8 @@ class Auth extends CI_Controller {
|
||||
|
||||
} else {
|
||||
|
||||
$this->usersessionservice->recordInvalid($account, $username);
|
||||
|
||||
$attempts = (int) $this->session->userdata('login_attempts') + 1;
|
||||
$this->session->set_userdata('login_attempts', $attempts);
|
||||
|
||||
@@ -102,9 +125,9 @@ class Auth extends CI_Controller {
|
||||
}
|
||||
}
|
||||
|
||||
public function logout()
|
||||
{
|
||||
$username = $this->session->userdata('username');
|
||||
public function logout()
|
||||
{
|
||||
$username = $this->session->userdata('username');
|
||||
|
||||
// 🔥 LOG LOGOUT (SEBELUM DESTROY SESSION)
|
||||
log_activity(
|
||||
@@ -114,7 +137,8 @@ class Auth extends CI_Controller {
|
||||
'success'
|
||||
);
|
||||
|
||||
$this->session->sess_destroy();
|
||||
$this->usersessionservice->endCurrent('logged_out', 'Logout oleh pengguna.');
|
||||
$this->session->sess_destroy();
|
||||
redirect('auth');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user