martes, 14 de junio de 2016

Query que verifica si un usuario tiene permiso para ingresar a la aplicación

La base de datos que vamos a utilizar para este ejemplo contendrá una tabla Usuario con los siguientes campos.

       Id   Nombre   Apellido   |   useNombre     |  Clave             |  Activo
       1       Juan           Romero         jromero            jromero123            1
       2       Pedro         Gutierrez       pgutierrez        gjutierrez123          0

En la tabla usuario tenemos que asegurarnos que el campo useNombre  sea un valor único e irrepetible, es decir que no podemos tener dos o más usuarios con el mismo useNombre. Este paso, aunque importante, no lo vamos a ver, pues sólo nos vamos a centrar en verificar si un usuario tiene permiso para ingresar a la aplicación.

Este es el procedimiento almacenado.

CREATE PROCEDURE Autenticacion_Usuario
@useNombre varchar(30),
@Clave          varchar(30)
as
begin
declare @Encontrado int
set @Encontrado = 0
   /*Paso 1*/
if ((select COUNT(*) from Usuario
                                      where useNombre = @useNombre) < 1)
begin
select 1 as [Id], 'El usuario no existe' as [Descripcion]
end
else
begin
             /*Paso 2*/
if ((select COUNT(*) from Usuario
                                             where useNombre = @useNombre
                                                 and Clave          = @Clave) < 1)
begin
select 2 as [Id], 'Su clave no es correcta' as [Descripcion]
end
else
begin
                     /*Paso 3*/
if ((select COUNT(*) from Usuario
                                                     where useNombre = @useNombre
                                                         and Clave          = @Clave
                                                         and Activo        = 1) < 1)
begin
select 3 as [Id], 'Usuario dado de baja' as [Descripcion]
end
else
begin
set @Encontrado = 1
select 4 as [Id], 'Usuario encontrado' as [Descripcion]
end
end
end
if (@Encontrado = 1)
begin
select u.Id
                ,u.Nombre
     ,u.Apellido
    from Usuario u
where u.useNombre = @useNombre
           and u.Clave          = @Clave
           and u.Activo         = 1
end
end


Es muy sencillo lo que hacemos, si la sentencia select del paso 3 nos devuelve 1 significa que los datos del usuario están registrados en la base de datos.

Ahora Probemos

--dbo.Autenticacion_Usuario 'jromero', 'jromero1er23'
Resultado 1
Id  |   Descripcion
--    -----------------------------
2       Su clave no es correcta

--dbo.Autenticacion_Usuario 'jromero', 'jromero123'
Resultado 2
Id  |   Descripcion
--      -------------------------
4       Usuario Encontrado
======================
Id  |  Nombre  |  Apellido
--    ------------  ------------
1       Juan          Romero

Este resultado debemos obtener en un dataset sea el lenguaje que utilicemos, esto porque, como vimos el Resultado 2 nos devuelve dos tablas.

No hay comentarios:

Publicar un comentario