diff options
author | cflip <36554078+cflip@users.noreply.github.com> | 2021-05-08 17:30:08 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-08 17:30:08 -0600 |
commit | 87b1dfd1f77b08915ee5e905da45e316ba2c0e7d (patch) | |
tree | f6c0f8d09454b6e887df0f66ca37c1ce9efb30d0 /includes/Session.php | |
parent | 0b045d57b2164b5ce003955d79627ae506a153eb (diff) | |
parent | a09d9f377f5c055e42e5f21b5cdea64c2e2ca896 (diff) |
Merge pull request #14 from cflip/refactor
Huge refactor
Diffstat (limited to 'includes/Session.php')
-rw-r--r-- | includes/Session.php | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/includes/Session.php b/includes/Session.php new file mode 100644 index 0000000..7951d70 --- /dev/null +++ b/includes/Session.php @@ -0,0 +1,57 @@ +<?php + +class Session +{ + private static $instance = null; + + private function __construct() + { + if (session_status() == PHP_SESSION_NONE) + session_start(); + } + + public static function get() + { + if (self::$instance == null) { + self::$instance = new Session(); + } + + return self::$instance; + } + + public function sign_in(User $user) + { + $_SESSION['signed_in'] = true; + $_SESSION['user_id'] = $user->id; + $_SESSION['user_name'] = $user->name; + } + + public function sign_out() + { + session_unset(); + session_destroy(); + } + + public function is_signed_in(): bool + { + return isset($_SESSION['signed_in']); + } + + public function get_current_user() + { + // There is no current user + if (!$this->is_signed_in()) { + return null; + } + + $result = new User(); + + if (isset($_SESSION['user_id'])) { + $result->get_by_id($_SESSION['user_id']); + } else { + $result = null; + } + + return $result; + } +}
\ No newline at end of file |