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
*
* @param intger $userId User id to delete
*
* @return boolen Indicates successful delete
*/
public function deleteUser(int $userId)
{
@ -380,7 +383,7 @@ class Aauth
'id' => $user['id'],
'username' => $user['username'],
'email' => $user['email'],
'loggedin' => true
'loggedIn' => true
];
$this->session->set($data);
@ -395,13 +398,13 @@ class Aauth
$cookieData = [
'name' => 'remember',
'value' => $userId.';'.$randomString.';'.$selectorString,
'expire' => (strtotime($expire)-strtotime("now")),
'expire' => YEAR,
];
$tokenData = [
'user_id' => $user['id'],
'random_hash' => password_hash($randomString, 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);
@ -409,7 +412,6 @@ class Aauth
}
$userModel->updateLastLogin($user['id']);
$userModel->updateLastActivity($user['id']);
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

Loading…
Cancel
Save