PHP - Login con roles MVC

 
Vista:

Login con roles MVC

Publicado por jo12 (7 intervenciones) el 05/11/2019 02:44:56
Buenas estoy realizando un sistema donde debo dar acceso a 2 tipos de usuario uno administrador y el cliente, de momento estoy validando solo el usuario y contraseña por lo que el cliente puede ingresar a la vista administrativa, como podría hacer para que el cliente no pueda ingresar a esta vista y solo tenga acceso a su archivo,agradecería la ayuda que me puedan brindar.

Este es mi login controller donde verifico el usuario y contraseña:

1
2
3
4
5
6
7
8
9
10
11
12
public function Autenticar() {
	$usuario = $_REQUEST['usuario'];
	$contrasena = ($_REQUEST[('contrasena')]);
	$validar = $this->model->Verificar($usuario, $contrasena);
	if ($validar) {
		$_SESSION['usuario']=$usuario;
		$_SESSION['Iniciada']='true';
		header('Location: index.php?c=Home');
	} else {
		header('Location: index.php?c=Login&error=true');
	}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Lawliet
Val: 478
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Login con roles MVC

Publicado por Lawliet (351 intervenciones) el 05/11/2019 03:50:05
Buenas noches!

Necesitas manejar roles dentro de tu aplicación. Un usuario tiene un rol y en base a ese rol puedes determinar que opciones de menú debes mostrar a uno u otro perfil. Cuando validas que el usuario y contraseña son los correctos, imagino que traes cierta información de ese usuario por lo que ahí mismo deberías traer la información de que rol pertenece ese usuario. De esa forma cuando quieras mostrar un menú por ejemplo puedes hacer la validación de si el usuario es del tipo Administrador mostrar los catálogos por ejemplo, caso contrario si es un Cliente mostrar otras opciones de menú como por ejemplo la vista de los catálogos, ya que recordemos que un administrador puede hacer un CRUD completo mientras que un Cliente normal solamente puede ver los productos de dicho catálogo.

Sin más que comentar, quedo al pendiente de cualquier duda y/o comentario.

Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Login con roles MVC

Publicado por jo12 (7 intervenciones) el 05/11/2019 04:18:06
gracias Lawliet, si en la base de datos tengo una llave foránea donde guardo el tipo de usuario, 1 para administrador y 2 para cliente, el login, lo intente de la siguiente forma y solo entra al
1
2
3
4
else {
 
    header('Location:index.php?c=ClienteNormal');
}
no se que estoy haciendo mal, si me pudieras ayudar con un ejemplo te lo agradecería:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public function Autenticar() {
 
    $usuario = $_REQUEST['usuario'];
    $contrasena = ($_REQUEST[('contrasena')]);
    $validar = $this->model->Verificar($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');
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Lawliet
Val: 478
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Login con roles MVC

Publicado por Lawliet (351 intervenciones) el 05/11/2019 04:31:04
Podrías ser un poquito más especifico... A cual else te refieres ya que veo 2 xD

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
	public function Autenticar() {
		$usuario = $_REQUEST['usuario'];
		$contrasena = ($_REQUEST[('contrasena')]);
		$validar = $this->model->Verificar($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');
		}
	}
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Login con roles MVC

Publicado por jo12 (7 intervenciones) el 05/11/2019 04:35:45
A este:

else {
header('Location:index.php?c=ClienteNormal');
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Lawliet
Val: 478
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Login con roles MVC

Publicado por Lawliet (351 intervenciones) el 05/11/2019 04:37:05
Podrías mostrar que es lo que tienes dentro de tu función Verificar ya que si vemos el código a simple vista...
1
$_SESSION['idCategoriaUsu'] = $validar['idCategoriaUsu'];
eso no te esta trayendo el número 1 por lo que no entra a tu condición
1
if($_SESSION['idCategoriaUsu'] == 1){
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Login con roles MVC

Publicado por jo12 (7 intervenciones) el 05/11/2019 04:39:01
esta es mi funcion:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public function Verificar($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());
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Lawliet
Val: 478
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Login con roles MVC

Publicado por Lawliet (351 intervenciones) el 05/11/2019 04:44:45
1.- Ejecuta tu consulta con el usuario y contraseña que estás utilizando.
2.- Has un hecho al objeto $UsuariosDatos para validar si viene lleno y así ver que es lo que viene en ese objeto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Login con roles MVC

Publicado por jo12 (7 intervenciones) el 05/11/2019 04:45:52
Lawliet me darías una idea como podría hacer la validación, estoy empezando en esto y lo he intentado pero no lo logro, gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Lawliet
Val: 478
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Login con roles MVC

Publicado por Lawliet (351 intervenciones) el 05/11/2019 04:51:28
Así como lo tienes no lo veo mal... Lo que pasa es que pareciera que tu objeto o esta nulo o simplemente no es el tipo de usuario correcto... Imprime el $UsuarioDatos para saber que es lo que esta pasando ahí. Si tengo un ejemplo pero por lo menos yo no utilizo un objeto al momento de iniciar sesión además que utilizo JS y AJAX para hacer la petición. Si gustas aun así te lo puedo pasar...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Login con roles MVC

Publicado por jo12 (7 intervenciones) el 05/11/2019 05:00:34
Si me lo pasas te lo agradeceria, puede que me otra idea de como hacerlo, no lo hacer, no logro ver lo que imprimir $UsuarioDatos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Lawliet
Val: 478
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Login con roles MVC

Publicado por Lawliet (351 intervenciones) el 05/11/2019 05:01:12
Podrías pasarme el proyecto y exportar la base de datos para revisarla localmente, por favor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 8
Ha aumentado su posición en 19 puestos en PHP (en relación al último mes)
Gráfica de PHP

Login con roles MVC

Publicado por jo12 (5 intervenciones) el 05/11/2019 06:44:24
tienes razón esto no me esta devolviendo nada

$_SESSION['idCategoriaUsu'] = $validar['idCategoriaUsu'];
eso no te esta trayendo el número 1 por lo que no entra a tu condición
1
if($_SESSION['idCategoriaUsu'] == 1){
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 8
Ha aumentado su posición en 19 puestos en PHP (en relación al último mes)
Gráfica de PHP

Login con roles MVC

Publicado por jo12 (5 intervenciones) el 05/11/2019 19:50:45
Aun no logro hacerlo, ayer no pase el proyecto porque quería intentar pero hasta ahora no he podido xD, Lawliet estoy tratando de adjuntar el proyecto pero queda cargando y no pasa de ahi
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar