Hoy le envié al profe el SP realizado del Log in, él me sugirió algunas recomendaciones de cambiar, por ejemplo, la estructura y líneas de código adicionales que no hacían falta. Esto me conllevó a crear otro SP que me ayudase a identificar el tipo de error que generaba al ingresar erróneamente los datos. Un error que surgió fue que Python por su lenguaje, tiene dificultades para leer los OUTPUTS, es por eso que se utilizó esta instrucción:
Esta ayuda a la lectura del OUTPUT, el unico inconveniente fue de que necesitaba codigo incrustado, por lo que se tuvo que utilizar con autorizacion del profesor
Por otro lado también se trabajó en el front-end del R2 que consiste principalmente en la ventana Home del usuario. Las horas trabajadas el día de fueron aproximadamente 3 horas y 47 min, iniciando a las 9 p.m y finalizando a las 11:47 p.m
Acá se muestra el SP agregado y el SP modificado nuevamente:
SP integrado
CREATE PROCEDURE dbo.procErroresLogin
@inCodigo INT
,@outResultCode INT OUTPUT
AS
BEGIN
SET NOCOUNT ON
SET @outResultCode = 0
SELECT e.Descripcion
FROM dbo.Error AS e
WHERE (e.Codigo = @inCodigo)
END
SP modificado
CREATE PROCEDURE dbo.procLogin
@inUsername VARCHAR(64) --Username del usuario
,@inPassword VARCHAR(64) --Password del usuario
,@inPostInIP VARCHAR(64) --IP de origen del login
,@outResultCode INT OUTPUT
AS
BEGIN
SET NOCOUNT ON
DECLARE @IdUsuario INT
DECLARE @PassUsuario VARCHAR(64)
DECLARE @CountIntentos INT
DECLARE @IdTipoEvento INT
DECLARE @DescripcionEvento VARCHAR(256)
SET @outResultCode = 0
BEGIN TRY
SELECT @IdUsuario = u.Id
FROM dbo.Usuario AS u
WHERE (u.Username = @inUsername)
IF (@IdUsuario IS NULL) --Comprueba que el usuario exista
BEGIN
SET @outResultCode = 50001
RETURN
END
SELECT @CountIntentos = COUNT(b.Id)
FROM dbo.BitacoraEvento AS b
WHERE (b.IdTipoEvento = 2)
AND (b.IdPostByUser = @IdUsuario)
AND (b.PostTime >= DATEADD(MINUTE, -20, GETDATE()))
IF (@CountIntentos > 5) --Comprueba que no haya pasado los 5 intentos
BEGIN
SET @outResultCode = 50003
SET @IdTipoEvento = 3
SET @DescripcionEvento = ''
END
ELSE
BEGIN
SELECT @PassUsuario = u.Password
FROM dbo.Usuario AS u
WHERE (u.Id = @IdUsuario)
AND (u.Password = @inPassword)
IF (@PassUsuario IS NULL) --Comprueba los intentos de sesion de fallo contraseña
BEGIN
SET @outResultCode = 50002
SET @IdTipoEvento = 2
SET @DescripcionEvento = 'Intento: ' + CAST((@CountIntentos + 1) AS VARCHAR) + ' Error: 50002'
END
ELSE
BEGIN
SET @outResultCode = 0
SET @IdTipoEvento = 1
SET @DescripcionEvento = 'Exitoso'
END
END
BEGIN TRANSACTION
INSERT INTO dbo.BitacoraEvento (
IdTipoEvento
,Descripcion
,IdPostByUser
,PostInIP
,PostTime
)
VALUES (
@IdTipoEvento
,@DescripcionEvento
,@IdUsuario
,@inPostInIP
,GETDATE()
)
COMMIT TRANSACTION
END TRY
BEGIN CATCH
INSERT INTO dbo.DBError (
UserName
,Number
,State
,Severity
,Line
,[Procedure]
,Message
,DateTime
)
VALUES (
@inUsername
,ERROR_NUMBER()
,ERROR_STATE()
,ERROR_SEVERITY()
,ERROR_LINE()
,ERROR_PROCEDURE()
,ERROR_MESSAGE()
,GETDATE()
)
SET @outResultCode = 50008
END CATCH
END
Comments
Post a Comment