Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class User {
- /**
- * Autorizuje uživatele
- *
- * Pokud je již autorizován, nic se nekoná, pokud není, zkusí se automatické přihlášení s pomocí tokenu v COOKIES,
- * jestliže se povede přihlásit, uživatel je autorizován, v opačném případě ho přesměrujeme na přihlašovací formulář
- *
- * @return void
- */
- public function authorize()
- {
- // Uživatel není přihlášen
- if(!$this->isLogged()) {
- // Vyzkoušet automatické přihlášení přes token
- try {
- $this->autoLogin();
- }
- catch(Exception $e) {
- // TODO:Nebudu rozepisovat, pak si to uprav, tohle je nástřel...
- $actual_url = $_SERVER['REQUEST_URI'];
- // Přesměrujeme na přihlášení
- $this->redirect('login?message=' . $e . '&last-url=' . $actual_url);
- }
- }
- }
- /**
- * Ověří, jestli je uživatel přihlášený
- *
- * @return bool Je uživatel přihlášený?
- */
- private function isLogged()
- {
- // Je SESSION platný?
- return isset($_SESSION['email']);
- }
- /**
- * Automaticky přihlásí uživatele s pomocí tokenu
- *
- * @return bool Úspěšně přihlášen?
- *
- * @throws Exception Uživatel nemá platný token
- */
- private function autoLogin()
- {
- // Získání dat pro přihlášení (nebo vrácení false -> neplatný token)
- $user_data = $this->db->queryOne('
- SELECT `name`, `email`, `rank`
- FROM `users`
- WHERE `token` = ?
- ', $_COOKIE['usertoken']);
- // Neplatný token
- if(!$user_data)
- throw new Exception('unvalid-token');
- // Přihlášení uživatele (nastavení dat do SESSION)
- $_SESSION['name'] = $user_data['name'];
- $_SESSION['email'] = $user_data['email'];
- $_SESSION['rank'] = $user_data['rank'];
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment