Sistema de login en KumbiaPHP

Estos ultimos dias he aprendido mucho sobre KumbiaPHP, aprendi de la wiki, el manual y en especial en el IRC de KumbiaPHP. Y quiero ir colocando aqui en el blog lo que voy aprendiendo por 2 razones: Una que me gusta compartir mis conocimientos y otra que asi yo lo tengo de ayuda memoria

Vamos a crear un sistema para el login de usuarios usando la clase Auth, quiero aclarar que estoy usando la version Spirit de KumbiaPHP que la pueden bajar de aqui. Entonces lo primero sera abrir el archivo boot.ini que se encuentra en la carpeta config de nuestra aplicacion e indicarle que debe cargar la libreria auth, el archivo deberia quedar algo asi:

[modules]
libs = auth

Nuestra base de datos sera algo sencilla:

Tabla Usuarios
Tabla Usuarios

Vamos a tener un controlador llamado principal_controller.php con 2 acciones: index y login. Y tendremos 2 vistas correspondientes a esas acciones. Ya saben que index siempre va, aunque en este ejemplo no la vamos a usar para nada.

Lo primero para que los usuarios se logueen sera un formulario de logueo, entonces creamos el archivo login.phtml en la carpeta views/principal que contendra el siguiente codigo:

<php View::content(); ?><br />
Inicio de Session <br/>
<?php echo form_tag("principal/login"); ?>
<label for="login">Usuario:</label>
<?php echo text_field_tag("login"); ?>
<br/>
<label for="password">Clave:</label>
<?php echo password_field_tag("password"); ?>
<br/>
<?php echo submit_tag("Ingresar"); ?>
<?php echo end_form_tag(); ?></p>

Como veran es un simple formulario con 2 campos: login y password. En el controlador tendremos la accion(funcion) que atendera a ese formulario.

function login(){
if ($this->has_post("login","password")){
$pwd = $this->post("password");
$usuario=$this->post('login');
$auth = new Auth("model", "class: usuarios", "login: $usuario", "password: $pwd");
if ($auth->authenticate()) {
$this->redirect("principal/index");
} else {
Flash::error("Falló");
}
}
}

Como veran la clase auth nos ahorra a nosotros las verificaciones de todo tipo sobre si ingreso bien el password o no y si el usuario existe o no. En caso de que el ingreso sea correcto redirigimos al usuario a otra pagina y en caso de que sea incorrecto mostramos un mensaje de error.

Pero no pensaran que la utilidad de Auth acaba ahi verdad? Podemos…

Restringir paginas solo a usuarios logueados

Si por ejemplo queremos restringir alguna vista a solo usuarios logueados podemos usar:

if(!Auth::is_valid()){
 $this->redirect("principal/login");
 }

Auth::is_valid() nos devuelve true si es que el usuario esta logueado, nosotros aprovechamos eso y si por ejemplo queremos restringuir una vista o accion solo a usuarios logueados pondriamos estas lineas al comienzo de la accion correspondiente, de manera que si no esta logueado lo redirija a la pagina con el formulario de login.

Obtener datos de usuarios logueados

Como podran ver en la tabla de usuarios que les comentaba al principio hay 2 campos que no se usan para el sistema de login pero podrian necesitarse en cualquier otra parte de la aplicacion. Auth tambien nos facilita el obtener esos datos, si quisieramos obtener esos datos del usuario simplemente hariamos asi:

$this->telefono=Auth::get('telefono');
$this->edad=Auth::get('edad');

De otra manera deberiamos hacer un find() al nombre de usuario, pero como veran auth nos facilita todo pues con Auth::get(‘nombre_campo’) podremos obtener cualquier campo de la tabla que estamos usando para los usuarios.

Obviamente a este sistema de login le faltan algunas cosas. Pero creo que es lo basico para entender el funcionamiento de Auth con KumbiaPHP.

Actualizacion: cree otro tutorial adaptado a la beta2 y superiores de kumbiaphp. Pueden verlo aqui.

Estos ultimos dias he aprendido mucho sobre KumbiaPHP, aprendi de la wiki, el manual y en especial en el IRC de KumbiaPHP. Y quiero ir colocando aqui en el blog lo que voy aprendiendo por 2 razones: Una que me gusta compartir mis conocimientos y otra que asi yo lo tengo de ayuda memoria

Vamos a crear un sistema para el login de usuarios usando la clase Auth, quiero aclarar que estoy usando la version Spirit de KumbiaPHP que la pueden bajar de aqui. Entonces lo primero sera abrir el archivo boot.ini que se encuentra en la carpeta config de nuestra aplicacion e indicarle que debe cargar la libreria auth, el archivo deberia quedar algo asi:

[modules]
libs = auth

Nuestra base de datos sera algo sencilla:

Tabla Usuarios
Tabla Usuarios

Vamos a tener un controlador llamado principal_controller.php con 2 acciones, index y login. Y tendremos 2 vistas correspondientes a esas acciones.Lo primero para que los usuarios se logueen sera un formulario de logueo, entonces creamos el archivo login.phtml en la carpeta views/principal que contendra el siguiente codigo:

</p>
<p><?php View::content(); ?><br />
Inicio de Session <br/><br />
<?php echo form_tag("principal/login"); ?><br />
<label for="login">Usuario:</label><br />
<?php echo text_field_tag("login"); ?><br />
<br/></p>
<p><label for="password">Clave:</label><br />
<?php echo password_field_tag("password"); ?><br />
<br/></p>
<p><?php echo submit_tag("Ingresar"); ?><br />
<?php echo end_form_tag(); ?></p>
<p>

Como veran es un simple formulario con 2 campos: login y password. En el controlador tendremos la accion(funcion) que atendera a ese formulario.

function login(){<br />
if ($this->has_post("login","password")){<br />
$pwd = $this->post("password");<br />
$usuario=$this->post('login');<br />
$auth = new Auth("model", "class: usuarios", "nombre: $usuario", "password: $pwd");<br />
if ($auth->authenticate()) {<br />
$this->redirect("principal/index");<br />
} else {<br />
Flash::error("Falló");<br />
}<br />
}<br />
}

Como veran la clase auth nos ahorra a nosotros las verificaciones de todo tipo sobre si ingreso bien el password o no y si el usuario existe o no. En caso de que el ingreso sea correcto redirigimos al usuario a otra pagina y en caso de que sea incorrecto mostramos un mensaje de error.

Pero no pensaran que la utilidad de Auth acaba ahi verdad? Podemos…

Restringir paginas solo a usuarios logueados

Si por ejemplo queremos restringir alguna vista a solo usuarios logueados podemos usar:

if(!Auth::is_valid()){<br />
 $this->redirect("principal/login");<br />
 }

Auth::is_valid() nos devuelve true si es que el usuario esta logueado, nosotros aprovechamos eso y si por ejemplo queremos restringuir una vista o accion solo a usuarios logueados pondriamos estas lineas al comienzo de la accion correspondiente, de manera que si no esta logueado lo redirija a la pagina con el formulario de login.

Obtener datos de usuarios logueados

Como podran ver en la tabla de usuarios que les comentaba al principio hay 2 campos que no se usan para el sistema de login pero podrian necesitarse en cualquier otra parte de la aplicacion. Auth tambien nos facilita el obtener esos datos, si quisieramos obtener esos datos del usuario simplemente hariamos asi:

$this->telefono=Auth::get('telefono');</p>
<p>$this->edad=Auth::get('edad');</p>
<p>

De otra manera deberiamos hacer un find() al nombre de usuario, pero como veran auth nos facilita todo pues con Auth::get(‘nombre_campo’) podremos obtener cualquier campo de la tabla que estamos usando para los usuarios.

perro

Ingeniero en Informática. Programador en PHP y Angular. Lo que mas adoro en el mundo es el conocimiento. Y el anime....y Japón...y el running...y bloguear claro y algunas otras cientos de cosas. Sigo buscando la manera de hacer mi primer millón.
guest
14 Comments
Inline Feedbacks
View all comments
Onizukar

Aqui fallo el akimset :P

Rosa

La verdad es que no conocía KumbiaPHP pero se ve bastante interesante y prometedor.

FiDeLio

muy bien sencillo y practico, :up:

Al3jandro

Excelente sefsinalas, buen tuto…. :up:

marco

estoy que empiezo con kumbia y espero me respondas esta pregunta q qizas sea facil para ti, como es que creas la tabla y en que parte va??? estuve leyendo algo de ActiveRecord pero no enntedi mucho, espero respondas

jose

Saludos

El post esta muy bien, aunque considero que publicar algo fallo no es correcto, por falta del modelo, indicas una url generalizada en vez de el link exacto para referencia a ello.

Una critica constructiva, saludos :)

joanhey

Buenas,
una pequeña mejora.
Cambia:
if(!Auth::is_valid()){
$this->redirect(«principal/login»);
}
por:
Auth::is_valid() or $this->redirect(«principal/login»);

más fácil todavia.

Obelich

Hola como estas he me e estado paseando por tu blog checando los tutos que tienes llegue aqui por un tuto de JavaFX lol bueno comento lo siguiente yo actualmetne estoy desarrollando con la competencia CakePHP y habia escuchado algo sobre KumbiaPHP y de echo le hice una pequeña pero muy peke testeada y pues se que Kumbia es puramente Latino y eso esta excelente boy a darle una testeada, aver que honda me boy a suscrivir a tu RSS a uso Opensuse :smile: Gnu/Linux asi k hablamos el mismo idioma hehehehe sale pues echale ganas

arley_wilches

hola… muy bueno el tuto… gracias… lo usare esta noche y te cuento como me fue… por el momento.. gracias

[…] mucho publique un tuto de un sistema de login para kumbiaphp y queria mostrar como hacerlo ahora con la beta2 de […]