فهرست منبع

Create the functional logout button.

Lee Morgan 1 سال پیش
والد
کامیت
f0edbc87da
7فایلهای تغییر یافته به همراه47 افزوده شده و 3 حذف شده
  1. 9 1
      controllers/user.js
  2. 14 0
      documentation/data.js
  3. 3 1
      routes/user.js
  4. 1 0
      views/index.html
  5. 1 1
      views/index.js
  6. 18 0
      views/js/pages/home.js
  7. 1 0
      views/js/pages/login.js

+ 9 - 1
controllers/user.js

@@ -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
 }

+ 14 - 0
documentation/data.js

@@ -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",
+        auth: false,
+        description: "Log the user out of this device",
+        responseBody: [{
+            name: "success",
+            type: "true",
+            desc: "Always {success: true} if no error"
+        }]
     }
 ]

+ 3 - 1
routes/user.js

@@ -1,9 +1,11 @@
 import {
     createRoute,
-    loginRoute
+    loginRoute,
+    logoutRoute
 } from "../controllers/user.js";
 
 export default (app)=>{
     app.post("/user", createRoute);
     app.put("/user/login", loginRoute);
+    app.get("/user/logout", logoutRoute);
 }

+ 1 - 0
views/index.html

@@ -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 - 1
views/index.js

@@ -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");

+ 18 - 0
views/js/pages/home.js

@@ -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");
+                });
+        })
     }
 }

+ 1 - 0
views/js/pages/login.js

@@ -37,6 +37,7 @@ export default {
                     }
                 })
                 .catch((err)=>{
+                    console.log(err);
                     notify("error", "Something went wrong, try refreshing the page");
                 });
         });