Browse Source

update Libraries/Aauth

- fixed docs
- updated login()
- added loginFast() & isLoggedIn()
v3-dev
REJack 7 years ago
parent
commit
4e9e6093db
  1. 90
      application/Libraries/Aauth.php

90
application/Libraries/Aauth.php

@ -184,6 +184,9 @@ class Aauth
/** /**
* Delete user * Delete user
* *
* @param intger $userId User id to delete
*
* @return boolen Indicates successful delete
*/ */
public function deleteUser(int $userId) public function deleteUser(int $userId)
{ {
@ -380,7 +383,7 @@ class Aauth
'id' => $user['id'], 'id' => $user['id'],
'username' => $user['username'], 'username' => $user['username'],
'email' => $user['email'], 'email' => $user['email'],
'loggedin' => true 'loggedIn' => true
]; ];
$this->session->set($data); $this->session->set($data);
@ -395,13 +398,13 @@ class Aauth
$cookieData = [ $cookieData = [
'name' => 'remember', 'name' => 'remember',
'value' => $userId.';'.$randomString.';'.$selectorString, 'value' => $userId.';'.$randomString.';'.$selectorString,
'expire' => (strtotime($expire)-strtotime("now")), 'expire' => YEAR,
]; ];
$tokenData = [ $tokenData = [
'user_id' => $user['id'], 'user_id' => $user['id'],
'random_hash' => password_hash($randomString, PASSWORD_DEFAULT), 'random_hash' => password_hash($randomString, PASSWORD_DEFAULT),
'selector_hash' => password_hash($selectorString, PASSWORD_DEFAULT), 'selector_hash' => password_hash($selectorString, PASSWORD_DEFAULT),
'expires_at' => date("Y-m-d", strtotime($expire)), 'expires_at' => date("Y-m-d H:i:s", strtotime($expire)),
]; ];
$loginTokenModel->insert($tokenData); $loginTokenModel->insert($tokenData);
@ -409,7 +412,6 @@ class Aauth
} }
$userModel->updateLastLogin($user['id']); $userModel->updateLastLogin($user['id']);
$userModel->updateLastActivity($user['id']);
if ($this->config->loginAttemptRemoveSuccessful) if ($this->config->loginAttemptRemoveSuccessful)
{ {
@ -425,6 +427,86 @@ class Aauth
} }
} }
/**
* Fast login
*
* Login with just a user id
*
* @param int $userId User id to log in
*
* @return bool TRUE if login successful.
*/
private function loginFast($userId)
{
$userModel = new UserModel();
$userModel->select('id, email, username');
$userModel->where('id', $userId);
$userModel->where('banned', 0);
if ($user = $userModel->get()->getFirstRow())
{
$this->session->set([
'id' => $user->id,
'username' => $user->username,
'email' => $user->email,
'loggedIn' => true,
]);
return true;
}
return false;
}
/**
* Check user login
* Checks if user logged in, also checks remember.
* @return bool
*/
public function isLoggedIn()
{
helper('cookie');
if (session('loggedIn'))
{
return true;
}
else if ($cookie = get_cookie('remember'))
{
$cookie = explode(';', $cookie);
$cookie[0] = base64_decode($cookie[0]);
if ( ! is_numeric($cookie[0]) OR strlen($cookie[1]) != 32 OR strlen($cookie[2]) != 16)
{
return false;
}
else
{
$loginTokenModel = new LoginTokenModel();
$loginTokens = $loginTokenModel->getAllByUserId($cookie[0]);
foreach ($loginTokens as $loginToken)
{
if (password_verify($cookie[1], $loginToken['random_hash']) && password_verify($cookie[2], $loginToken['selector_hash']))
{
if (strtotime($loginToken['expires_at']) > strtotime("now"))
{
$loginTokenModel->update($loginToken['id']);
return $this->loginFast($loginToken['user_id']);
}
else
{
$loginTokenModel->delete($cookie[0]);
delete_cookie('remember');
}
}
}
}
}
return false;
}
/** /**
* Error * Error

Loading…
Cancel
Save