public static bool SessionUsuario(MODLoginUsuario registro, EnumSession peticion) { List <MODLoginUsuario> actual = new List <MODLoginUsuario>(); actual.AddRange(Logueos); switch (peticion) { case EnumSession._inicio: int _tiempo = Convert.ToInt32(Configuraciones.ObtenerConfiguracion("Contexto", "TiempoSession")); if ((Logueos.Any(y => y.UserName == registro.UserName && (DateTime.Now - y.Fecha).TotalMinutes > _tiempo)) || (Logueos.Any(y => y.UserName == registro.UserName && y.IP == registro.IP))) { registro.Fecha = DateTime.Now; actual.Remove(Logueos.FirstOrDefault(y => y.UserName == registro.UserName)); actual.Add(registro); } else if (!Logueos.Any(y => y.UserName == registro.UserName)) { registro.Fecha = DateTime.Now; actual.Add(registro); } else { return(false); } break; case EnumSession._peticion: if (Logueos.Any(y => y.UserName == registro.UserName)) { actual.FirstOrDefault(y => y.UserName == registro.UserName).Fecha = DateTime.Now; } else { return(false); } break; case EnumSession._cierre: Logueos.Remove(Logueos.FirstOrDefault(y => y.UserName == registro.UserName)); break; default: break; } ConfiguracionNegocio.Logueos = actual; return(true); }
public void CerrarSession([FromBody] LoginRequestModel filtro) { if (!string.IsNullOrEmpty(filtro.Username)) { var usrlogin = ConfiguracionNegocio.Logueos.Where(x => x.UserName == filtro.Username).FirstOrDefault(); var aud = FabricaNegocio.CrearAuditoriaNegocio; var usr = new MODLoginUsuario(); aud.CrearRastroAuditoria(Comun.Enumeradores.EnumTipoAccionAuditoria.logout, usrlogin.IdUsuario.ToString(), "Autenticacion", usr, usrlogin, filtro.Username, filtro.Ip); ConfiguracionNegocio.SessionUsuario(new Comun.Entidades.UsuarioPerfil.MODLoginUsuario { UserName = filtro.Username, IP = filtro.Ip }, Comun.Enumeradores.EnumSession._cierre); } }
public async Task <LoginResponse> Login([FromBody] LoginRequestModel prmLogin) { LoginResponse respuesta = null; string codigoMensaje = "COMUNES.ERRORSERVICIO"; IUsuarioNegocio usuarioNegocio = FabricaNegocio.CrearUsuarioNegocio; try { if (String.IsNullOrEmpty(prmLogin.Username) || String.IsNullOrEmpty(prmLogin.Password)) { respuesta = new LoginResponse(HttpStatusCode.BadRequest, "LOGIN.RTA004"); } else { var usuarioExterno = await usuarioNegocio.ValidarUsuarioServicioExterno(prmLogin.Username, prmLogin.Password, false); bool usuarioOk = usuarioExterno.Item1; codigoMensaje = usuarioExterno.Item2; if (usuarioOk) { var usuarioBD = usuarioNegocio.ObtenerUsuario(prmLogin.Username); if (usuarioBD != null) { if (usuarioBD.Activo) { respuesta = new LoginResponse(usuarioBD, this.GenerateTokenJWT(prmLogin.Username)); var usrLogin = new Comun.Entidades.UsuarioPerfil.MODLoginUsuario { IdUsuario = usuarioBD.IdUsuario, UserName = usuarioBD.UserName, IP = prmLogin.Ip, Token = respuesta.Token }; if (ConfiguracionNegocio.SessionUsuario(usrLogin, Comun.Enumeradores.EnumSession._inicio)) { usuarioNegocio.ActualizarUltimaFechaLogin(prmLogin.Username); } else { respuesta = new LoginResponse(HttpStatusCode.BadRequest, "LOGIN.RTA006"); } var aud = FabricaNegocio.CrearAuditoriaNegocio; var usr = new MODLoginUsuario(); aud.CrearRastroAuditoria(Comun.Enumeradores.EnumTipoAccionAuditoria.login, usuarioBD.IdUsuario.ToString(), "Autenticacion", usr, usrLogin, prmLogin.Username, prmLogin.Ip); } else { respuesta = new LoginResponse(HttpStatusCode.BadRequest, "LOGIN.RTA005"); } } else { respuesta = new LoginResponse(HttpStatusCode.BadRequest, "LOGIN.RTA003"); } } else { respuesta = new LoginResponse(HttpStatusCode.BadRequest, codigoMensaje); } } } catch (Exception ex) { Log.WriteLog(ex, "AutenticacionController.Login", JsonSerializer.Serialize(prmLogin), ErrorType.Error); respuesta = new LoginResponse(HttpStatusCode.InternalServerError, codigoMensaje); } return(respuesta); }