Войти с ролями - PullRequest
       8

Войти с ролями

0 голосов
/ 08 ноября 2019

Я пытаюсь предоставить доступ пользователю в соответствии с его ролью, у меня есть 2 типа один администратор с идентификатором 1 и клиент с идентификатором 2, пока действительные имя пользователя и пароль. поэтому Клиент может войти в административную часть, и я хочу, чтобы он имел доступ только к представлению Клиента

Это моя функция проверки модели:

public function Verify($usuario, $contrasena) {

        try {
            $sql = "SELECT * FROM usuarios WHERE usuario = ? AND contrasena = ?" ;
            $stm = $this->pdo->prepare($sql);
            $stm->execute(array($usuario, $contrasena));

            $UsuarioDatos = $stm->fetch(PDO::FETCH_OBJ);

            if ($UsuarioDatos == NULL) {

                return FALSE;

            } else {

                return TRUE;

            }
        } catch (Exception $ex) {
            die($ex->getMessage());
        }
    }

И это мой логин.controller:

public function Authenticate() {

        $usuario = $_REQUEST['usuario'];
        $contrasena = ($_REQUEST[('contrasena')]);
        $validar = $this->model->Verify($usuario, $contrasena);

        if ($validar) {
            $_SESSION['usuario']=$usuario;
            $_SESSION['idCategoriaUsu']=$validar['idCategoriaUsu'];

            $_SESSION['Iniciada']='true';


           if($_SESSION['idCategoriaUsu'] == 1){

            header('Location:index.php?c=Home');  
           }
           else {

            header('Location:index.php?c=ClienteNormal');
           }
        } else {

            header('Location: index.php?c=Login&error=true');            
        }

    }

Собирается непосредственно к этому:

            else {

            header('Location:index.php?c=ClienteNormal');
           }

Ответы [ 2 ]

0 голосов
/ 08 ноября 2019

Quentin Geenens ответ правильный, измените свою функцию проверки:

public function Verify($usuario, $contrasena) {
    try {
        $sql = "SELECT * FROM usuarios WHERE usuario = ? AND contrasena = ?";
        $stm = $this->pdo->prepare($sql);
        $stm->execute(array($usuario, $contrasena));
        $UsuarioDatos = $stm->fetch(PDO::FETCH_OBJ);
        if ($UsuarioDatos == NULL) {
            return FALSE;
        } else {
            return TRUE;
        }
    } catch (Exception $ex) {
        die($ex->getMessage());
    }
}

на это:

public function Verify($usuario, $contrasena) {
    try {
        $sql = "SELECT * FROM usuarios WHERE usuario = ? AND contrasena = ?";
        $stm = $this->pdo->prepare($sql);
        $stm->execute(array($usuario, $contrasena));
        $UsuarioDatos = $stm->fetch(PDO::FETCH_OBJ);
        if ($UsuarioDatos == NULL) {
            return FALSE;
        } else {
            return $UsuarioDatos;
        }
    } catch (Exception $ex) {
        die($ex->getMessage());
    }
}

если $ UsuarioDatos не равен NULL, он возвращает результат запроса.

затем измените вашу функцию аутентификации:

public function Authenticate() {
    $usuario = $_REQUEST['usuario'];
    $contrasena = ($_REQUEST[('contrasena')]);
    $validar = $this->model->Verify($usuario, $contrasena);

    if ($validar) {
        $_SESSION['usuario']=$usuario;
        $_SESSION['idCategoriaUsu']=$validar['idCategoriaUsu'];
        $_SESSION['Iniciada']='true';
        if($_SESSION['idCategoriaUsu'] == 1){
            header('Location:index.php?c=Home');
        }
        else {
            header('Location:index.php?c=ClienteNormal');
        }
    } else {
        header('Location: index.php?c=Login&error=true');            
    }
}

на это:

public function Authenticate() {
    $usuario = $_REQUEST['usuario'];
    $contrasena = ($_REQUEST[('contrasena')]);
    $validar = $this->model->Verify($usuario, $contrasena);

    if ($validar === FALSE) {
        header('Location: index.php?c=Login&error=true');  
    } else {
        $_SESSION['usuario'] = $usuario;
        $_SESSION['idCategoriaUsu'] = $validar['idCategoriaUsu'];
        $_SESSION['Iniciada']='true';
        if($_SESSION['idCategoriaUsu'] == 1){
            header('Location:index.php?c=Home');
        }
        else {
            header('Location:index.php?c=ClienteNormal');
        }                  
    }
}

Надеюсь, этот ответ поможет вам

0 голосов
/ 08 ноября 2019

ваша функция "Verify" возвращает логическое значение.

За исключением случаев:

$_SESSION['idCategoriaUsu']=$validar['idCategoriaUsu']

вы пытаетесь получить доступ к массиву.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...