public async Task <Response <int> > RegistrarSesion(AdminDto.RegistrarSesion oItem) { try { var oEntity = this._mapper.Map <ADMIN.TM_SESION>(oItem); var nResult = await this._adminDomain.RegistrarSesion(oEntity); var oResponse = new Response <int>(); oResponse.IsSuccess = false; if (nResult.STR_ESTADOPROCESO == "1") { oResponse.IsSuccess = true; oResponse.Data = nResult.NUM_IDSESION; //Devuelve Id Sesion del SIRO oResponse.Message = nResult.STR_MENSAJE; } else if (nResult.STR_ESTADOPROCESO == "-1") { oResponse.Message = nResult.STR_MENSAJE; } else if (nResult.STR_ESTADOPROCESO == "0") { throw new Exception(nResult.STR_MENSAJE); } return(oResponse); } catch (Exception ex) { throw ex; } }
public async Task <IActionResult> Login(SSODto.Login.RequestModel oItem) { try { var oResponse = new Response <SSODto.Login.Response>(); oResponse.IsSuccess = false; #region VALIDACION DE CAPTCHA if (string.IsNullOrEmpty(oItem.sCode)) { oResponse.Message = Messages.SSO.Login.EX008; return(Ok(oResponse)); } if (!this._captchaApplication.ComputeMd5Hash(oItem.sCode).Equals(CaptchaHash)) { HttpContext.Session.Remove(this._sCaptchaHashKey); oResponse.Message = Messages.SSO.Login.EX009; return(Ok(oResponse)); } if (CaptchaHash != null) { HttpContext.Session.Remove(this._sCaptchaHashKey); } #endregion #region VALIDACION DE USUARIO var oUser = await this._sSOApplication.Login(oItem); if (!oUser.IsSuccess) { oResponse.Message = Messages.SSO.Login.EX001; return(Ok(oResponse)); } if (oUser.Data == null) { oResponse.Message = Messages.SSO.Login.EX001; return(Ok(oResponse)); } if (oUser.Data.IdUsuario == 0) { oResponse.Message = Messages.SSO.Login.EX001; return(Ok(oResponse)); } #endregion #region VALIDACION DE EMPRESAS var oEmpresas = await this._sSOApplication.GetEmpresas(oItem.sUsername); if (!oEmpresas.IsSuccess) { oResponse.Message = Messages.SSO.Login.EX002; return(Ok(oResponse)); } if (oEmpresas.Data == null) { oResponse.Message = Messages.SSO.Login.EX002; return(Ok(oResponse)); } if (oEmpresas.Data.Count == 0) { oResponse.Message = Messages.SSO.Login.EX002; return(Ok(oResponse)); } #endregion var oTmpEmpresa = oEmpresas.Data[0]; #region VALIDACION DE LOCALES if (oTmpEmpresa.Locales == null) { oResponse.Message = Messages.SSO.Login.EX003; return(Ok(oResponse)); } if (oTmpEmpresa.Locales.Count == 0) { oResponse.Message = Messages.SSO.Login.EX003; return(Ok(oResponse)); } #endregion oUser.Data.nIdEmpresa = oTmpEmpresa.IdEmpresa; oUser.Data.sNombreEmpresa = oTmpEmpresa.NombreCentro; oUser.Data.nIdLocal = oTmpEmpresa.Locales[0].IdLocal; oUser.Data.sNombreLocal = oTmpEmpresa.Locales[0].NombreLocal; #region VALIDACION DE PERFILES var oPerfiles = await this._sSOApplication.GetPerfiles(oItem.sUsername, oUser.Data.nIdLocal.ToString()); if (!oPerfiles.IsSuccess) { oResponse.Message = Messages.SSO.Login.EX004; return(Ok(oResponse)); } if (oPerfiles.Data == null) { oResponse.Message = Messages.SSO.Login.EX004; return(Ok(oResponse)); } if (oPerfiles.Data.Count == 0) { oResponse.Message = Messages.SSO.Login.EX004; return(Ok(oResponse)); } #if DEBUG // ================================ // ===== SECCION PARA PRUEBAS ===== // ================================ //oPerfiles.Data[0].NombreRol = "OES"; oPerfiles.Data[0].NombreRol = "OGTU"; //oPerfiles.Data[0].NombreRol = "Promovilidad"; #endif int nCantPerfilesValidos = 0; foreach (var item in oPerfiles.Data) { nCantPerfilesValidos = this._perfilesPermitidos.Count(str => str.ToUpper().Equals(item.NombreRol.ToUpper())); if (nCantPerfilesValidos > 0) { oUser.Data.nIdPerfil = item.IdRol; oUser.Data.sNombrePerfil = item.NombreRol; break; } } if (nCantPerfilesValidos == 0) { oResponse.Message = Messages.SSO.Login.EX005; return(Ok(oResponse)); } #endregion #region VALIDACION INFORMACION DE USUARIO var oUserInfo = await this._sSOApplication.GetUserInfo(oUser.Data.IdUsuario); if (!oUserInfo.IsSuccess) { oResponse.Message = Messages.SSO.Login.EX006; return(Ok(oResponse)); } if (oUserInfo.Data == null) { oResponse.Message = Messages.SSO.Login.EX006; return(Ok(oResponse)); } if (oUserInfo.Data.PK_eIdUsuario == 0) { oResponse.Message = Messages.SSO.Login.EX006; return(Ok(oResponse)); } #endregion oUser.Data.sCorreo = oUserInfo.Data.uCorElectronico; oUser.Data.sNombreCompleto = oUserInfo.Data.NombreCompleto; #region VALIDACION DE REGISTRO DE SESION EN BD var oRequestRegistrarSesion = new AdminDto.RegistrarSesion(); oRequestRegistrarSesion.sUsuario = oItem.sUsername.ToUpper(); oRequestRegistrarSesion.sUsuarioSSO = null; oRequestRegistrarSesion.sIp = "0.0.0.0"; oRequestRegistrarSesion.sFlag = "1"; oRequestRegistrarSesion.nIdSessionSSO = oUser.Data.IdUsuario; var oRegistroSesion = await this._adminApplication.RegistrarSesion(oRequestRegistrarSesion); if (!oRegistroSesion.IsSuccess) { oResponse.Message = Messages.SSO.Login.EX007; return(Ok(oResponse)); } if (oRegistroSesion.Data == 0) { oResponse.Message = Messages.SSO.Login.EX007; return(Ok(oResponse)); } #endregion oUser.Data.nIdSession = oRegistroSesion.Data; //Obtiene Id Sesion del SIROS (DB) #region GENERAR JWT var oJwt = new JwtDto.Request(); oJwt.sUsername = oItem.sUsername.ToUpper(); //Forzar mayuscula oJwt.sUsernameSSO = oUser.Data.IdUsuario.ToString(); oJwt.sProfile = oUser.Data.sNombrePerfil; oJwt.sIdSession = oUser.Data.nIdSession.ToString(); oJwt.nIdEmpresa = oUser.Data.nIdEmpresa; oJwt.nIdLocal = oUser.Data.nIdLocal; #if DEBUG // ================================ // ===== SECCION PARA PRUEBAS ===== // ================================ oJwt.nIdEmpresa = 1166; #endif var oToken = await this._jwtApplication.GenerateJwtToken(oJwt); oUser.Data.sToken = oToken.Data.sToken; oUser.Data.dTokenExpiration = oToken.Data.dTokenExpiration; #endregion oResponse.IsSuccess = true; oResponse.Data = oUser.Data; return(Ok(oResponse)); } catch (Exception ex) { _ = this._logApplication.SetLog(EnumLogType.TEXT_N_EMAIL, EnumLogCategory.ERROR, "SSO-Login", ex, oItem); return(Ok(new Response <Object> { Message = $"[SSO]: ERR-Fallo en el servidor: {ex.StackTrace}" })); } }