@@ -26,6 +26,13 @@ const loginRoute = async (req, res, next)=>{
}catch(e){next(e)}
}
+const logoutRoute = async (req, res, next)=>{
+ try{
+ res.clearCookie("userToken");
+ res.json({success: true});
+ }catch(e){next(e)}
+}
+
/*
Create a new User object
@param {Object} - Request body with user data
@@ -114,5 +121,6 @@ const createUuid = ()=>{
export {
createRoute,
- loginRoute
+ loginRoute,
+ logoutRoute
@@ -73,6 +73,7 @@ window.data = [
id: "loginUser",
title: "Log In",
url: "PUT /user/login",
+ auth: false,
description: "Log the user in",
requestBody: [
{
@@ -91,5 +92,18 @@ window.data = [
type: "User",
desc: "User object"
}]
+ },
+ {
+ type: "route",
+ id: "logoutUser",
+ title: "Log Out",
+ url: "GET /user/logout",
+ description: "Log the user out of this device",
+ responseBody: [{
+ name: "success",
+ type: "true",
+ desc: "Always {success: true} if no error"
+ }]
]
@@ -1,9 +1,11 @@
import {
} from "../controllers/user.js";
export default (app)=>{
app.post("/user", createRoute);
app.put("/user/login", loginRoute);
+ app.get("/user/logout", logoutRoute);
@@ -90,6 +90,7 @@
<div id="homePage" class="page">
<h1>Home Page</h1>
+ <button id="homeLogout" class="link">Log Out</button>
</div>
<script src="/index.js"></script>
@@ -1,6 +1,6 @@
import registerPage from "./js/pages/register.js";
import loginPage from "./js/pages/login.js";
-import homPage from "./js/pages/home.js";
+import homePage from "./js/pages/home.js";
const notifier = document.getElementById("notifier");
const pageElements = document.querySelectorAll(".page");
@@ -3,7 +3,25 @@ export default {
render: function(){
if(!this.rendered){
+ this.buttons();
this.rendered = true;
+ buttons: function(){
+ document.getElementById("homeLogout").addEventListener("click", ()=>{
+ fetch("/user/logout")
+ .then(r=>r.json())
+ .then((response)=>{
+ if(response.error){
+ notify("error", response.error.message);
+ }else{
+ changePage("login");
+ }
+ })
+ .catch((err)=>{
+ notify("error", "Something went wrong, try refreshing the page");
+ });
@@ -37,6 +37,7 @@ export default {
})
.catch((err)=>{
+ console.log(err);
notify("error", "Something went wrong, try refreshing the page");
});