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