diff --git a/core/c/auth.php b/core/c/auth.php index 5db408b..1518349 100755 --- a/core/c/auth.php +++ b/core/c/auth.php @@ -10,48 +10,47 @@ namespace Nibiru; */ class Auth extends Controller implements IAuth { - private static $_instance; + private static $_instance; - private $_password_salt = ""; - private $_username = ""; - private $_password = ""; + private $_password_salt = ""; + private $_username = ""; + private $_password = ""; /** * Auth constructor. */ - protected function __construct() - { - parent::__construct(); - $this->_setPasswordSalt(); + protected function __construct() + { + parent::__construct(); + $this->_setPasswordSalt(); - } + } /** * @return View */ - public static function getInstance(): View - { - $className = get_called_class(); - if( self::$_instance == null ) - { - self::$_instance = new $className(); - } - return self::$_instance; - } + public static function getInstance(): View + { + $className = get_called_class(); + if( self::$_instance == null ) + { + self::$_instance = new $className(); + } + return self::$_instance; + } /** * @param $login * @param $password * @return bool */ - public function auth( $login, $password ) - { - // TODO: Implement auth($username, $password) method. + public function auth( $login, $password ): bool + { + // TODO: Implement auth($username, $password) method. $this->_setPassword($password); $this->_setUsername($login); - - if(!array_key_exists('auth', $_SESSION)) - { + if(!array_key_exists('auth', $_SESSION) || $_SESSION['auth'] == null) + { $user_password = Pdo::query("SELECT user_account_active, DES_DECRYPT(user_pass, '".Config::getInstance()->getConfig()[IView::NIBIRU_SECURITY]["password_hash"]."') AS pass, user_id FROM user WHERE user_login = '".$login."';"); if( $user_password["pass"] == $password && $user_password['user_account_active'] == 1 ) { @@ -65,58 +64,69 @@ class Auth extends Controller implements IAuth ]; return true; } - else - { - return false; - } - } - } + else + { + return false; + } + } + else + { + if($_SESSION['auth']['login'] == $login) + { + return true; + } + else + { + return false; + } + } + } - /** - * @return string - */ - protected function getPasswordSalt() - { - return $this->_password_salt; - } + /** + * @return string + */ + protected function getPasswordSalt() + { + return $this->_password_salt; + } - /** - * @param string $password_salt - */ - private function _setPasswordSalt( ) - { - $this->_password_salt = $this->getConfig()[self::NIBIRU_SECURITY]; - } + /** + * @param string $password_salt + */ + private function _setPasswordSalt( ) + { + $this->_password_salt = $this->getConfig()[self::NIBIRU_SECURITY]; + } - /** - * @return string - */ - protected function getUsername() - { - return $this->_username; - } + /** + * @return string + */ + protected function getUsername() + { + return $this->_username; + } - /** - * @param string $username - */ - private function _setUsername( $username ) - { - $this->_username = $username; - } + /** + * @param string $username + */ + private function _setUsername( $username ) + { + $this->_username = $username; + } - /** - * @return string - */ - protected function getPassword() - { - return $this->_password; - } + /** + * @return string + */ + protected function getPassword() + { + return $this->_password; + } - /** - * @param string $password - */ - private function _setPassword( $password ) - { - $this->_password = $password; - } + /** + * @param string $password + */ + private function _setPassword( $password ) + { + $this->_password = $password; + } } \ No newline at end of file diff --git a/core/c/controller.php b/core/c/controller.php index a870b74..bd64746 100755 --- a/core/c/controller.php +++ b/core/c/controller.php @@ -219,17 +219,64 @@ class Controller extends View /** * @param string $param * @param bool $params + * @param bool $checkForActiveSession * @return string|array */ - public function getSession( string $param, bool $params = false ) + public function getSession( string $param, bool $params = false, bool $checkForActiveSession = false ): string|array { - if($param!="") + if($checkForActiveSession) { - return $_SESSION[$param]; + if(session_status() == PHP_SESSION_DISABLED || sizeof($_SESSION) == 0) + { + return IController::SESSION_DISABLED; + } + elseif(session_status() == PHP_SESSION_NONE && sizeof($_SESSION) == 0) + { + return IController::SESSION_DISABLED; + } + else + { + return IController::SESSION_ACTIVE; + } } - elseif($params) + else { - return $_SESSION; + if($param!="") + { + if(session_status() == PHP_SESSION_NONE) + { + session_start(); + } + if(session_status() == PHP_SESSION_ACTIVE) + { + if (array_key_exists($param, $_SESSION)) + { + if($_SESSION[$param] != null) + { + return $_SESSION[$param]; + } else { + return IController::SESSION_KEY_VALUE_NOT_FOUND; + } + } else { + return IController::SESSION_KEY_NOT_FOUND; + } + } + else + { + return IController::SESSION_DISABLED; + } + } + elseif($params) + { + if(session_status() == PHP_SESSION_ACTIVE) + { + return $_SESSION; + } + else + { + return IController::SESSION_DISABLED; + } + } } } } \ No newline at end of file diff --git a/core/i/controller.php b/core/i/controller.php index f7df448..0c607f6 100755 --- a/core/i/controller.php +++ b/core/i/controller.php @@ -10,20 +10,24 @@ namespace Nibiru; */ interface IController { - const START_CONTROLLER_NAME = "index"; - - /** - * This should be part of any extended controller - * class in order to implement a page structure - * @return array - */ - public function pageAction(); + const START_CONTROLLER_NAME = "index"; + const SESSION_ACTIVE = 'SESSION ACTIVE'; + const SESSION_DISABLED = 'SESSION DISABLED'; + const SESSION_KEY_NOT_FOUND = 'KEY NOT FOUND'; + const SESSION_KEY_VALUE_NOT_FOUND = 'KEY VALUE NOT FOUND'; - /** - * This is the part where you can add titles to - * your page navigation. - */ + /** + * This should be part of any extended controller + * class in order to implement a page structure + * @return array + */ + public function pageAction(); - public function navigationAction(); + /** + * This is the part where you can add titles to + * your page navigation. + */ + + public function navigationAction(); } \ No newline at end of file