Вход Регистрация
Файл: system/classes/User.php
Строк: 79
<?php

class User
{
    
/**
     * Объект с данными юзера.
     *
     * @var object
     */
    
private $data;

    
/**
     * Идентификатор авторизованности.
     *
     * @var boolean
     */
    
private $session;

    
/**
     * Аутентификация.
     */
    
public function __construct()
    {
        global 
$db;

        
$session $this->getSession();

        if (!empty(
$session)) {
            
$stmt $db->prepare("SELECT user_id, token FROM users_sessions WHERE user_id = :user_id AND token = :token");
            
$stmt->bindParam(':user_id'$session->user_idPDO::PARAM_INT);
            
$stmt->bindParam(':token'$session->tokenPDO::PARAM_STR);
            
$stmt->execute();

            
$result $stmt->fetch(PDO::FETCH_OBJ);

            if (@
$result->user_id == $session->user_id && @$result->token == $session->token) {
                
$this->session true;

                
$stmt $db->prepare("SELECT * FROM users WHERE user_id = :user_id");
                
$stmt->bindParam(':user_id'$session->user_idPDO::PARAM_INT);
                
$stmt->execute();

                
$this->data $stmt->fetch(PDO::FETCH_OBJ);
            } else {
                
$this->session false;
                
setcookie('__session'null, -1'/');

                unset(
$_SESSION['__session']);
            }
        } else {
            
$this->session false;
            
setcookie('__session'null, -1'/');

            unset(
$_SESSION['__session']);
        }
    }

    
/**
     * Получение данных из сессии.
     *
     * @return object|boolean
     */
    
public function getSession()
    {
        if (isset(
$_COOKIE['__session'])) {
            
$session $_COOKIE['__session'];
        } elseif (isset(
$_SESSION['__session'])) {
            
$session $_SESSION['__session'];
        }

        if (isset(
$session)) {
            
$session json_decode(base64_decode($session));
            
$session->user_id base64_decode($session->user_id);
            
$session->token base64_decode($session->token);

            return 
$session;
        } else {
            return 
false;
        }
    }

    
/**
     * Идентификатор авторизованности.
     *
     * @return boolean
     */
    
public function isAuth()
    {
        return 
$this->session;
    }

    
/**
     * Получение данных пользователя.
     *
     * @param integer $id
     * @return mixed
     */
    
public function get($id 0)
    {
        global 
$db;

        if (
$id && $id != @$this->data->id) {
            
$stmt $db->prepare("SELECT * FROM users WHERE user_id = :id");
            
$stmt->bindParam(':id'$idPDO::PARAM_INT);
            
$stmt->execute();

            return 
$stmt->fetch(PDO::FETCH_OBJ);
        } else {
            return 
$this->data;
        }
    }
    
    
    
    public function 
admin()
    {
        global 
$db;

        
$id = @$this->data->id;
            
$stmt $db->prepare('SELECT * FROM users WHERE user_id = ? and role = ?');
            
$stmt -> execute([$id,1]);
            
$stmt $stmt -> rowCount();
            return 
1;

    }
    
    
}
Онлайн: 0
Реклама