public void PararServidor() { if (EstadoDelServidor != EstadoDelServidor.Detenido) { if (HostDelServidor != null) { HostDelServidor.Abort(); } ServiciosDeJuego.SesionesConectadas.Clear(); ControladorDeActualizacionDePantalla.ListaDeSesionesActualizado(ServiciosDeJuego.SesionesConectadas); EstadoDelServidor = EstadoDelServidor.Detenido; ControladorDeActualizacionDePantalla.EstadoDelServidorActualizado(GetType().Name, EstadoDelServidor); } }
public void LimpiarSesiones() { SesionesConectadas.Clear(); ControladorDeListas.ListaDeSesionesActualizado(SesionesConectadas); }
/// <summary> /// Valida si el usuario esta registrado en la base de datos y realiza un callback con la <see cref="Sesion"/>, /// regresa <see cref="EstadoUsuario.Inexistente"/> en <see cref="Sesion.Usuario"/> para cuando no se encuentra en la base de datos o sus /// credenciales son inválidas para asegurar que el cliente no recibe información de la existencia del usuario /// en la base de datos. /// </summary> /// <param name="usuario"><see cref="Usuario.Contraseña"/> debe ser un SHA256</param> public void AutenticarUsuario(Usuario usuario) { Sesion sesion = new Sesion() { Usuario = new Usuario() }; if (usuario.ValidarCredenciales()) { Usuario usuarioCargado = new Usuario(); try { usuarioCargado = usuario.CargarUsuarioPorCorreo(); } catch (InvalidOperationException) { sesion.Usuario.Estado = EstadoUsuario.Inexistente; } if (usuarioCargado.Estado == EstadoUsuario.Registrado) { bool correoConectadoAlServidor = SesionesConectadas.Exists(s => s.Usuario.CorreoElectronico == usuarioCargado.CorreoElectronico); if (correoConectadoAlServidor) { sesion.Usuario.Estado = EstadoUsuario.ActualmenteConectado; } else { sesion = GenerarNuevaSesion(usuarioCargado); } } else if (sesion.Usuario.Estado != EstadoUsuario.Inexistente) { sesion.Usuario.Estado = usuarioCargado.Estado; } } else { sesion.Usuario.Estado = EstadoUsuario.Inexistente; } bool sesionEnviadaCorrectamente = false; sesion.CanalDeCallback = OperationContext.Current.GetCallbackChannel <IServiciosDeCallBack>(); try { sesion.CanalDeCallback.RecibirSesion(sesion); sesionEnviadaCorrectamente = true; } catch (CommunicationException e) { NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); logger.Warn(e); } if (sesionEnviadaCorrectamente && sesion.Usuario.Estado == EstadoUsuario.Registrado) { SesionesConectadas.Add(sesion); if (ControladorServiciosDeFlipllo != null) { ControladorServiciosDeFlipllo.ListaDeSesionesActualizado(SesionesConectadas); } } }