public function login()
{
$request = service('request');
if ($request->isAJAX()) {
$rules = [
'email' => [
'label' => 'E-mail',
'rules' => 'required|max_length[254]|valid_email',
],
'password' => [
'label' => 'Password',
'rules' => 'required',
],
];
if (! $this->validate($rules)) {
return $this->fail($this->validator->getErrors());
}
$model = new UserModel();
$user = $model->where('email', $this->request->getPost('email'))->first();
if (!$user || !password_verify($this->request->getPost('password'), $user['password'])) {
return $this->failUnauthorized('Invalid email and/or password.');
}
else {
$session = service('session');
$sessionData = [
'id' => $user['id'],
'name' => $user['name'],
'surname' => $user['surname'],
'gender' => $user['gender'],
'email' => $user['email'],
'isLoggedIn' => TRUE
];
log_message('debug', 'Initial session status: ' . json_encode($session->get()));
$session->set($sessionData);
log_message('debug', 'Session status after set: ' . json_encode($session->get()));
if ($session->get('isLoggedIn')) {
return $this->respond([
'message' => 'Hi ' . $user['name'],
'success' => true,
'userdata' => [
'id' => $user['id'],
'name' => $user['name'],
'surname' => $user['surname'],
'gender' => $user['gender'],
'email' => $user['email'],
]
]);
}
else
{
return $this->failUnauthorized('Session not setting');
}
}
}
else
{
return $this->failUnauthorized('Error AJAX.');
}
}