Bonjour,
j'ai suivi le tuto sur la formation php et j'essaye d'adapter le tuto sur la gestion des permission a mon petit projet... mais je rencontre une erreur et je ene sait pas trop comment m en sortir, pourriez vous me donner un petit coup de main?
merci d'avance
Gilles
voici la class
<?php class Auth{
var $forbiddenPage = "forbidden.php";
function login($d){
global $db;
$username = $db->quote($d'username']);
$password = sha1($d'password']);
$select = $db->query("SELECT users.id, users.username, roles.name, roles.slug, roles.level FROM users LEFT JOIN roles ON users.role_id=roles.id WHERE username=$username AND password='$password'");
if($select-> rowCount() > 0){
$_SESSION'Auth'] = $select->fetch();
return true;
}
return false;
}
function allow($rang){
global $db;
$select = $db->query("SELECT slug, level FROM roles")->fechAll();
//$data = $select->fetchAll();
$roles = array();
foreach($select as $d){
$roles$d->slug]=$d->level;
}
if(!$this->user('slug')){
$this->fordidden();
}else{
if($roles$rang]>$this->user('level')){
$this->forbidden();
}else{
return true;
}
}
}
function user($field){
if($field == 'role') $field ='slug';
if(isset($_SESSION'Auth']->$field)){
return $_SESSION'Auth']->$field;
}else{
return false;
}
}
function forbidden(){
header('Location:'.$this->forbiddenPage);
}
}
$Auth = new Auth()
le fichier login.php
<?php
include 'lib/includes.php';
/**
* TRAITEMENT DU FORMULAIRE
**/
if(!empty($_POST)){
if($Auth->login($_POST)){
/*if($Auth->user('administrateur')){
setFlash("Vous êtes maintenant connecté en tant qu'Administrateur");
header('Location:' . WEBROOT . 'admin/index.php');
die();
}elseif($Auth->user('agence')){
setFlash("Vous êtes maintenant connecté en tant qu'Agence");
header('Location:' . WEBROOT . 'agence/index.php');
die();
}*/
}else{
setFlash('Mauvais identifiants', 'danger');
}
}
/**
* INCLUSION DU HEADER
*/
include 'partials/header.php';
?>
<div class="form-signin">
<h4 class="form-signin-heading">Merci de vous identifier</h4>
<form action="#" method="post">
<div class="form-group">
<label for="username">Nom d'utilisateur</label>
<?= input('username'); ?>
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" class="form-control" id="password" name="password">
</div>
<button type="submit" class="btn btn-primary">Se connecter</button>
</form>
</div>
<?php include 'lib/debug.php'; ?>
<?php include 'partials/footer.php'; ?>
et l'exemple d'une page qui doit etre visible par les agences et les rang au dessus
<?php
include '../lib/includes.php';
$Auth->allow('agence');
global $db;
$select = $db->query("SELECT slug FROM users WHERE id=$id");
$select = array($Auth->user('id'));
?>
page pour les agence aussi visible par les admin et rangs au dessus de agence.
Hi,
Tu récupères peut-être bien l'id de l'utilisateur mais tu ne l'as stock pas en information dans une variable nommée "$id".
...
$id = $Auth->user('id'); $select = $db->query(...);
...
Bonsoir,
c est dans la requete qui se trouve dans la page que je doit autoriser il me dit que la variable $id n existe pas alors que je la recupere bien dans ma fonction login, je ne trouve pas pourquoi j ai cette erreur