diff --git a/Aspnet/Controllers/LoginController.cs b/Aspnet/Controllers/LoginController.cs index c9cd1ac..b25e99a 100644 --- a/Aspnet/Controllers/LoginController.cs +++ b/Aspnet/Controllers/LoginController.cs @@ -52,7 +52,27 @@ public class LoginController: ControllerBase } } - + + [HttpDelete("/api/logout")] + public IActionResult CerrarSesion([FromHeader(Name = "Auth")]string Auth){ + var cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); + if (cli == null ) return BadRequest(new { message = "No hay un cliente con ese token" }); + + var log = new LoginDto { + Email = cli.Email, + Contraseña = "", + }; + + string tokenString = GenerarToken(log); + + try{ + RepositorioUsuarios.Singleton.GuardarToken(log, tokenString, Request.HttpContext.Connection.RemoteIpAddress, "Cerrar Sesión"); + } catch { + return BadRequest( new { message = "Fallo al cambiar el token" } ); + } + return Ok(new { message = "Se Cerro la sesion" }); + } + private string GenerarToken(LoginDto loginDto){ var tokenHandler = new JwtSecurityTokenHandler(); var key = Encoding.ASCII.GetBytes("ffb2cdc15d472e41a5b626e294c45020"); diff --git a/Front/src/Componentes/NavBarAutocompletable.svelte b/Front/src/Componentes/NavBarAutocompletable.svelte index 89cbf50..1892cc8 100644 --- a/Front/src/Componentes/NavBarAutocompletable.svelte +++ b/Front/src/Componentes/NavBarAutocompletable.svelte @@ -80,10 +80,20 @@ localStorage.setItem("theme", theme); }; - function cerrarSesion() { - localStorage.removeItem("email"); - sessionStorage.removeItem("token"); - navigate("/"); + async function cerrarSesion() { + try{ + const req = await fetch($urlG+"/api/logout", { + method: "DELETE", + headers: { + "Auth": token || "", + } + }); + + }finally{ + localStorage.removeItem("email"); + sessionStorage.removeItem("token"); + navigate("/"); + } }