wideru
Новичок
Здравствуйте! Прошу о помощи с кодом, вот что выдает,
Fatal error: Call to a member function hasPrivilege() on boolean in admin_panel.php on line 27
код на 27: if ($u->hasPrivilege("edit"))
с верху кода 27
а вот и класс, ошибка думаю в return $privUser;} else {return false;
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]);
}
}