91 lines
2.3 KiB
PHP
91 lines
2.3 KiB
PHP
<?php
|
|
|
|
require_once('UserDataSet.php');
|
|
class User {
|
|
protected $_username, $_loggedIn, $_userId, $_accessLevel;
|
|
|
|
public function getUsername() {
|
|
return $this->_username;
|
|
}
|
|
public function getUserId() {
|
|
return $this->_userId;
|
|
}
|
|
|
|
/**
|
|
* Open session, set field variables
|
|
*/
|
|
public function __construct() {
|
|
session_start();
|
|
|
|
$this->_username = "None";
|
|
$this->_loggedIn = false;
|
|
$this->_userId = "0";
|
|
$this->_accessLevel = null;
|
|
// if user logged in, set variables.
|
|
if(isset($_SESSION['login'])) {
|
|
$this->_username = $_SESSION['login'];
|
|
$this->_userId = $_SESSION['uid'];
|
|
$this->_loggedIn = true;
|
|
$this->_accessLevel = $_SESSION['accessLevel'];
|
|
}
|
|
}
|
|
|
|
private function setAccessLevel($level) {
|
|
$this->_accessLevel = $level;
|
|
$_SESSION['accessLevel'] = $level;
|
|
}
|
|
public function getAccessLevel() {
|
|
return $this->_accessLevel;
|
|
}
|
|
|
|
/**
|
|
* @param $username
|
|
* @param $password
|
|
* @return bool
|
|
* Using a username and password, authenticate a user and assign variables from query
|
|
*/
|
|
public function Authenticate($username, $password): bool
|
|
{
|
|
$users = new UserDataSet();
|
|
$userDataSet = $users->checkUserCredentials($username, $password);
|
|
$accessLevel = $users->checkAccessLevel($username);
|
|
if(count($userDataSet) > 0) {
|
|
$_SESSION['login'] = $username;
|
|
$_SESSION['uid'] = $userDataSet[0]->getId();
|
|
$this->setAccessLevel($accessLevel);
|
|
$this->_loggedIn = true;
|
|
$this->_username = $username;
|
|
$this->_userId = $userDataSet[0]->getId();
|
|
return true;
|
|
}
|
|
else {
|
|
$this->_loggedIn = false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @return void
|
|
* Unset user variables from session, and set variables to default values - destroying session.
|
|
*/
|
|
public function logout() {
|
|
unset($_SESSION['login']);
|
|
unset($_SESSION['uid']);
|
|
$this->_loggedIn = false;
|
|
$this->_username = "None";
|
|
$this->_userId = "0";
|
|
session_destroy();
|
|
}
|
|
|
|
public function isLoggedIn(): bool
|
|
{
|
|
return $this->_loggedIn;
|
|
}
|
|
public function __destruct()
|
|
{
|
|
|
|
}
|
|
|
|
|
|
}
|