Ошибка в коде pdo

wideru

Новичок
Здравствуйте! Прошу о помощи с кодом, вот что выдает,
Fatal error: Call to a member function hasPrivilege() on boolean in admin_panel.php on line 27
код на 27: if ($u->hasPrivilege("edit"))
с верху кода 27
Код:
if (isset($_SESSION["user_session"])) {
    $u = PrivilegedUser::getByUsername($_SESSION["user_session"]);
}

а вот и класс, ошибка думаю в return $privUser;} else {return false;

Код:
class PrivilegedUser extends USER
{
    private $roles;

    public function __construct() {
        parent::__construct();
    }

    // override User method
    public static function getByUsername($username) {
        global $conn;
        $sql = "SELECT * FROM users WHERE user_name = :username";
        $sth = $conn->prepare($sql);
        $sth->execute(array(":username" => $username));
        $result = $sth->fetchAll();

        if (!empty($result)) {
            $privUser = new PrivilegedUser();
            $privUser->user_id = $result[0]["user_id"];
            $privUser->username = $username;
            $privUser->password = $result[0]["user_pass"];
            $privUser->email_addr = $result[0]["user_email"];
            $privUser->initRoles();
            return $privUser;
        } else {
            return false;
        }
    }

    // populate roles with their associated permissions
    protected function initRoles() {
        $this->roles = array();
        $sql = "SELECT t1.role_id, t2.role_name FROM user_role as t1
                JOIN roles as t2 ON t1.role_id = t2.role_id
                WHERE t1.user_id = :user_id";
        $sth = $conn->prepare($sql);
        $sth->execute(array(":user_id" => $this->user_id));

        while($row = $sth->fetch(PDO::FETCH_ASSOC)) {
            $this->roles[$row["role_name"]] = Role::getRolePerms($row["role_id"]);
        }
    }

    // check if user has a specific privilege
    public function hasPrivilege($perm) {
        foreach ($this->roles as $role) {
            if ($role->hasPerm($perm)) {
                return true;
            }
        }
        return false;
    }
    
    
    // check if a user has a specific role
  public function hasRole($role_name) {
    return isset($this->roles[$role_name]);
}


}

 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Правильно думаешь. Отладкой займись.
 

wideru

Новичок
вот что пишет SQL: [47] SELECT * FROM users WHERE user_name = :username Params: 1 Key: Name: [9] :username paramno=-1 name=[9] ":username" is_param=1 param_type=2
 

Фанат

oncle terrible
Команда форума
это все конечно очень интересно, но на самом деле ты хотел посмотреть, что у тебя лежит в
$_SESSION["user_session"]
 

Фанат

oncle terrible
Команда форума
Неправильно ты пишешь слово "неправильно".
А что не так с твоим кодом, я не знаю. Поскольку я не имею ни малейшего представления, что он делает и для чего нужен.
Я тебе предложил посмотреть, что у тебя лежит в переменной $_SESSION["user_session"], но ты по какой-то причине делать этого не хочешь.
 

wideru

Новичок
Неправильно ты пишешь слово "неправильно".
А что не так с твоим кодом, я не знаю. Поскольку я не имею ни малейшего представления, что он делает и для чего нужен.
Я тебе предложил посмотреть, что у тебя лежит в переменной $_SESSION["user_session"], но ты по какой-то причине делать этого не хочешь.
не русский :) код для определения привилегии, ну типо если разрешено ему видеть удалить изменить
 

wideru

Новичок
вот что выдает $_SESSION["user_session"]: string(1) "1", через isset: bool(true)
 
Сверху