viernes, 22 de octubre de 2021

Simple Login con KumbiaPHP v 1.1.5

Recientemente tuve necesidad de implementar un Sistema de Login con KumbiaPHP y pude percatarme que prácticamente todas las referencias publicadas en la comunidad de Kumbieros se encuentran bastante desactualizadas; algunas hasta por casi una década. De manera que, me pareció adecuado compartir una sencilla solución que implemente con la versión actual de KumbiaPHP v1.1.5

Para comenzar, vale la pena señalar que no pretendo descubrir el agua tibia, esta solución no es más que la recopilación y conveniente ajuste de varias aportaciones encontradas en diferentes fuentes disponibles en la red. Pero tampoco hagamos alharaca de eso y vayamos a lo concreto.

Construyendo el Sistema de Login

Librería de Autenticación

Si bien es cierto que en KumbiaPHP v1.1.5 contamos con Auth2 e incluso con una implementación propia en Kumbia_Auth para facilitar las tareas de autenticación de usuarios, en esta solución haremos uso de la libreria Auth.

Persistencia de datos

Por supuesto que cada solución tendrá necesidades específicas; pero en nuestro caso, hemos procurado mantener la total simplicidad, de manera que para la persistencia de datos nos resulta suficiente disponer de una tabla como la que podemos generar con el siguiente script

--
-- Estructura de tabla para la tabla usuarios
--
DROP TABLE IF EXISTS usuarios;
CREATE TABLE IF NOT EXISTS usuarios (
id TINYINT(3) NOT NULL AUTO_INCREMENT,
login VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL,
level TINYINT(3) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY `UK_Usuarios_login` (`login`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
--
-- Volcar la base de datos para la tabla usuarios
--
INSERT INTO usuarios (id, login, password, level) VALUES
(1, 'coloca-aqui-tu-usuario', 'coloca-aqui-tu-password', 1);

Tampoco hemos de fijarnos para este ejercicio en la falta de encriptación de la columna que almacenará los passwords. Aunque por supuesto, es una practica que recomendamos considerar.

Modelo

Nuestra clase de modelo será tan sencilla como

<?php
class Usuarios extends ActiveRecord
{ }

Controlador

En un controlador que como otros autores hemos nombrado PrincipalController hemos implementado las funciones login y logout, junto con el siempre mandatorio index, que en nuestro caso, mantenemos vacío.

Login

La función de login inicia con la verificación de los datos recibidos, antes de enviarlos a la librería Auth para la ejecución de la autenticación.

    public function login(){
        if (Input::hasPost("login","password")){
            $pwd = Input::post("password");
            $usuario=Input::post("login");
 
            $auth = new Auth("model", "class: usuarios", "login: $usuario", "password: $pwd");
            if ($auth->authenticate()) {
                Redirect::to("/");
            } else {
                Flash::error("Falló");
            }
        }
    }

Logout

En la función logout, básicamente destruimos el objeto de la sesión

    public function logout(){
        Auth::destroy_identity();
        Redirect::to("/");
    }

Vista

Por supuesto que, hemos mantenido la capa de vista igualmente simple, aunque claro que necesitaremos construir nuestro formulario de ingreso.

El index.phtml como ya hemos mencionado lo mantenemos vacío. Y aunque presuntamente el logout.phtml pudiera haberse mantenido igualmente vacío, la verdad le hemos colocado…

<?php echo View::content(); ?>

No haremos de ello un tema, solo pasemos a lo interesante. Que por supuesto, es el login.phtml.

En este archivo, además del clásico…

<?php echo View::content(); ?>

Hemos de colocar nuestro formulario

<?php echo F<?php echo Form::open("principal/login"); ?>
<i class="fas fa-user-alt"></i><?php echo Form::label("Usuario","login"); ?>
<?php echo Form::text("login"); ?>
<?php echo Form::label(" "," "); ?>
<i class="fas fa-key"></i><?php echo Form::label("Password","password"); ?>
<?php echo Form::pass("password"); ?>
<?php echo Form::label(" "," "); ?>
<?php echo Form::submit("Ingresar"); ?>
<?php echo Form::close(); ?>

Con lo cual ya tendremos implementado nuestro simple sistema de login en KumbiaPHP v1.1.5, pero ahora toca usarlo.

No hay comentarios.:

Publicar un comentario

Nota: sólo los miembros de este blog pueden publicar comentarios.