From cdcb1ccbbce3783bc23ece3f6189eb79a063a136 Mon Sep 17 00:00:00 2001
From: MrFry <mrfry@airmail.cc>
Date: Fri, 3 Apr 2020 09:05:14 +0200
Subject: [PATCH] PW is now the primary key, added login/logout route

---
 modules/api/api.js             | 20 ++++++++++++++++++++
 modules/api/apiDBStruct.json   |  8 ++++----
 modules/api/auth.middleware.js | 18 ++++++++++++++++--
 3 files changed, 40 insertions(+), 6 deletions(-)

diff --git a/modules/api/api.js b/modules/api/api.js
index 943600b..4e9efad 100644
--- a/modules/api/api.js
+++ b/modules/api/api.js
@@ -21,8 +21,10 @@
 const express = require('express')
 const bodyParser = require('body-parser')
 const busboy = require('connect-busboy')
+const cookieParser = require('cookie-parser')
 const fs = require('fs')
 const app = express()
+
 // const http = require('http')
 // const https = require('https')
 
@@ -57,6 +59,7 @@ function CreateDB () {
 }
 CreateDB()
 
+app.use(cookieParser())
 app.set('view engine', 'ejs')
 app.set('views', [
   './modules/api/views',
@@ -108,6 +111,23 @@ function Load () {
 
 Load()
 
+// -------------------------------------------------------------
+
+app.get('/login', (req, res) => {
+  logger.LogReq(req)
+  // FIXME: redirect to original url
+  // TODO: check if pw is correct
+  res.cookie('pw', req.query.pw).redirect('/')
+  // TODO: create session
+})
+
+app.get('/logout', (req, res) => {
+  logger.LogReq(req)
+  // FIXME: redirect to original url
+  // TODO: destroy session
+  res.clearCookie('pw').redirect('/')
+})
+
 // --------------------------------------------------------------
 
 app.get('/', function (req, res) {
diff --git a/modules/api/apiDBStruct.json b/modules/api/apiDBStruct.json
index 85b646d..0e2ae15 100644
--- a/modules/api/apiDBStruct.json
+++ b/modules/api/apiDBStruct.json
@@ -1,13 +1,13 @@
 {
   "users": {
     "tableStruct": {
-      "userID": {
-        "type": "number",
+      "pw": {
+        "type": "text",
         "primary": true,
         "notNull": true
       },
-      "pw": {
-        "type": "text"
+      "userID": {
+        "type": "number"
       },
       "lastIP": {
         "type": "text"
diff --git a/modules/api/auth.middleware.js b/modules/api/auth.middleware.js
index 1f5a681..673680e 100644
--- a/modules/api/auth.middleware.js
+++ b/modules/api/auth.middleware.js
@@ -1,6 +1,8 @@
 const logger = require('../../utils/logger.js')
 const dbtools = require('../../utils/dbtools.js')
 
+// TODO: session
+
 module.exports = function (options) {
   const { debugLog, authDB } = options
 
@@ -9,8 +11,20 @@ module.exports = function (options) {
       logger.Log('AUTH: ' + req.url)
     }
 
-    res.end('NO ACCESS')
+    const user = GetUserByPW(authDB, req.cookies.pw)
 
-    // next()
+    if (user) {
+      next()
+    } else {
+      res.JSON({
+        success: false,
+        msg: 'You dont have permission to acces this site'
+      })
+    }
   }
 }
+
+function GetUserByPW (db, password) {
+  // TODO: find user by password
+  return undefined
+}