Initial commit
This commit is contained in:
63
rss/php/classes/application/user/Auth.php
Normal file
63
rss/php/classes/application/user/Auth.php
Normal file
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
namespace Vor\application\user;
|
||||
|
||||
use Vor\core\Sys;
|
||||
use Vor\core\Main;
|
||||
use Exception;
|
||||
|
||||
class Auth{
|
||||
public $username;
|
||||
public $email;
|
||||
public $password;
|
||||
|
||||
public static function isAuth(){
|
||||
$authData = $_SERVER['VOR_AUTH'] ?? false;
|
||||
|
||||
if(!$authData){
|
||||
return false;
|
||||
}
|
||||
|
||||
return (int)Sys::session('uid') === (int)$authData['uid'];
|
||||
}
|
||||
|
||||
public function login(){
|
||||
if(isset($this->email) && isset($this->password)){
|
||||
$userData = Main::select('users', ['email', 'username', 'password', 'id'], ['email' => trim($this->email)]);
|
||||
if(!$userData){
|
||||
return false;
|
||||
}
|
||||
|
||||
if(password_verify($this->password, $userData['password'])){
|
||||
$sid = bin2hex(random_bytes(16));
|
||||
|
||||
$payload = [
|
||||
'uid' => (int)$userData['id'],
|
||||
'sid' => $sid,
|
||||
'exp' => time() + 86400
|
||||
];
|
||||
|
||||
if(Sys::cookieSet('v_auth', $payload)){
|
||||
Sys::validateSession($sid);
|
||||
|
||||
Sys::session('uid', (int)$userData['id']);
|
||||
Sys::session('logged_in_at', time());
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public function logout(){
|
||||
Sys::cookieClear('v_auth');
|
||||
if(session_status() === PHP_SESSION_ACTIVE){
|
||||
session_unset();
|
||||
session_destroy();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user