Procházet zdrojové kódy

updated router. email no longer case sensitive.

lllllllillllllillll před 1 rokem
rodič
revize
74cf69b3d3

+ 1 - 1
controllers/dashboard.js

@@ -177,7 +177,7 @@ export async function addCard (name, state) {
 
 
 // HTMX server-side events
-export const SSE = (req, res) => {
+export const SSE = async (req, res) => {
     res.writeHead(200, { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive' });
 
     let eventCheck = setInterval(async () => {

+ 1 - 0
controllers/login.js

@@ -16,6 +16,7 @@ export const Login = function(req,res){
 export const submitLogin = async function(req,res){
 
     let { email, password } = req.body;
+    email = email.toLowerCase();
 
     if(email && password){
 

+ 18 - 2
controllers/portal.js

@@ -1,9 +1,9 @@
 import { Readable } from 'stream';
 import { Permission, Container, User } from '../database/models.js';
 import { docker } from '../server.js';
-import { dockerContainerStats } from 'systeminformation';
 import { readFileSync } from 'fs';
 
+
 let hidden = '';
 
 // The actual page
@@ -21,6 +21,22 @@ export const Portal = (req, res) => {
 }
 
 
+async function CardList () {
+    let name = req.session.user;
+    let containers = await Permission.findAll({ attributes: ['containerName'], where: { user: name }});
+    // for (let i = 0; i < containers.length; i++) {
+    //     let details = await containerInfo(containers[i].containerName);
+    //     let card = await createCard(details);
+    //     cardList += card;
+    // }
+
+    for (let i = 0; i < containers.length; i++) {
+        console.log(containers[i].containerName);
+    }
+    
+
+}
+
 async function containerInfo (containerName) {
     let container = docker.getContainer(containerName);
     let info = await container.inspect();
@@ -128,7 +144,7 @@ export async function addCard (name, state) {
 
 
 // HTMX server-side events
-export const SSE = (req, res) => {
+export const SSE = async (req, res) => {
     res.writeHead(200, { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive' });
 
     let eventCheck = setInterval(async () => {

+ 1 - 0
controllers/register.js

@@ -18,6 +18,7 @@ export const Register = function(req,res){
 export const submitRegister = async function(req,res){
 
     let { name, username, email, password, confirmPassword, warning, secret } = req.body;
+    email = email.toLowerCase();
 
 
     if (secret != SECRET) {

+ 17 - 11
router/index.js

@@ -21,15 +21,24 @@ import { Portal } from "../controllers/portal.js"
 
 // Auth middleware
 const auth = async (req, res, next) => {
-    if (!req.session.user) { res.redirect('/login'); return; }
-    if (req.session.role == "admin") { next(); }
 
     let user = req.session.user;
     let role = req.session.role;
-    let action = req.path.split("/")[2];
+    let path = req.path;
     let trigger = req.header('hx-trigger-name');
+
+    console.log("Auth: ", user, role, path, trigger);
+    console.log(req.path);
+
+    if (!user) { res.redirect('/login'); return; }
+    else if (role == "admin") { next(); return;}
+    else if (path == "/portal" || path == "/account" || path == "/supporters" || path == "/thank") { next(); return; }
+    else { res.redirect('/portal'); return; }
     
-    // console.log("Auth: ", user, role, action, trigger);
+
+    // let action = req.path.split("/")[2];
+
+    // else if (trigger == "portal" || "supporters" || "account" || "thank") { res.redirect() return; }
 
 
     // if (action == "start" || action == "stop" || action == "pause" || action == "restart") {
@@ -50,9 +59,6 @@ const auth = async (req, res, next) => {
     // else {
     //     res.redirect('/portal');
     // }
-
-    res.redirect('/portal');
-
 }
 
 
@@ -96,10 +102,10 @@ router.get("/variables", auth, Variables);
 router.get("/settings", auth, Settings);
 
 // User routes
-router.get("/portal", Portal);
-router.get("/account", Account);
-router.get("/supporters", Supporters);
-router.post("/thank", Thanks);
+router.get("/portal", auth, Portal);
+router.get("/account", auth, Account);
+router.get("/supporters", auth, Supporters);
+router.post("/thank", auth, Thanks);
 
 router.get("/login", Login);
 router.post("/login", submitLogin);

+ 4 - 4
views/portal.html

@@ -46,7 +46,7 @@
                         </div>
 
                         <!-- HTMX -->
-                        <div class="col" name="CPU" id="green" data-hx-get="/stats" data-hx-trigger="load, every 1s">
+                        <div class="col" name="CPU" id="green">
                           <div class="font-weight-medium">
                             <label class="cpu-text mb-1" for="cpu">CPU 0%</label>
                           </div>
@@ -71,7 +71,7 @@
                         </div>
 
                         <!-- HTMX -->
-                        <div class="col" name="RAM" id="blue" data-hx-get="/stats" data-hx-trigger="load, every 2s">
+                        <div class="col" name="RAM" id="blue">
                           <div class="font-weight-medium">
                             <label class="ram-text mb-1" for="ram">RAM 0%</label>
                           </div>
@@ -96,7 +96,7 @@
                         </div>
 
                         <!-- HTMX -->
-                        <div class="col" name="NET" id="purple" data-hx-get="/stats" data-hx-trigger="load, every 2s">
+                        <div class="col" name="NET" id="purple">
                           <div class="font-weight-medium">
                             <label id="net-text" class="net-text mb-1" for="network">Down: 0MB  Up: 0MB</label>
                           </div>
@@ -121,7 +121,7 @@
                         </div>
 
                         <!-- HTMX -->
-                        <div class="col" name="DISK" id="orange" data-hx-get="/stats" data-hx-trigger="load, every 3s">
+                        <div class="col" name="DISK" id="orange">
                           <div class="font-weight-medium">
                             <label class="disk-text mb-1" for="disk">DISK 0%</label>
                           </div>