merged logout with login.js. Fixed app search.

This commit is contained in:
lllllllillllllillll 2024-01-11 17:51:26 -08:00
parent b22894f366
commit 4d78177951
6 changed files with 59 additions and 79 deletions

14
app.js
View file

@ -78,16 +78,10 @@ app.use([
// Initialize server
server.listen(port, async () => {
async function init() {
try {
await sequelize.authenticate().then(() => { console.log('[Connected to DB]') });
} catch {
console.log('[Could not connect to DB]');
}
try {
await sequelize.sync().then(() => { console.log('[Models Synced]') });
} catch {
console.log('[Could not Sync Models]', error);
}
try { await sequelize.authenticate().then(() => { console.log('[Connected to DB]') }); }
catch { console.log('[Could not connect to DB]'); }
try { await sequelize.sync().then(() => { console.log('[Models Synced]') }); }
catch { console.log('[Could not Sync Models]', error); }
await getHidden();
containerCards();
}

View file

@ -11,7 +11,6 @@ templates = templates.sort((a, b) => {
});
export const Apps = (req, res) => {
// console.log(req.body);
let page = Number(req.params.page) || 1;
let list_start = (page-1)*28;
@ -50,9 +49,12 @@ export const Apps = (req, res) => {
export const searchApps = async (req, res) => {
export const appSearch = async (req, res) => {
let apps_list = '';
let results = [];
let search = req.body.search.split(' ');
// console.log(req.body);
let page = Number(req.query.page) || 1;
let list_start = (page - 1) * 28;
let list_end = (page * 28);
@ -67,32 +69,17 @@ export const searchApps = async (req, res) => {
next = '/apps?page=' + (page);
}
let apps_list = '';
let search_results = [];
console.log(req.body);
let search = req.body.search;
// split value of search into an array of words
search = search.split(' ');
// try {console.log(search[0]);} catch (error) {}
// try {console.log(search[1]);} catch (error) {}
// try {console.log(search[2]);} catch (error) {}
function searchTemplates(word) {
for (let i = 0; i < templates.length; i++) {
if ((templates[i].description.includes(word)) || (templates[i].name.includes(word)) || (templates[i].title.includes(word))) {
search_results.push(templates[i]);
results.push(templates[i]);
}
}
// console.log(search_results);
}
searchTemplates(search);
for (let i = 0; i < search_results.length; i++) {
let app_card = appCard(search_results[i]);
for (let i = 0; i < results.length; i++) {
let app_card = appCard(results[i]);
apps_list += app_card;
}

View file

@ -72,4 +72,13 @@ export const submitLogin = async function(req,res){
"error":"Please fill in all the fields.",
});
}
}
export const Logout = function(req,res){
const sessionId = req.session.id;
req.session.destroy(() => {
io.to(sessionId).disconnectSockets();
res.redirect("/login");
});
}

View file

@ -8,20 +8,10 @@ import DockerodeCompose from "dockerode-compose";
export const Install = async (req, res) => {
console.log('getInstall:')
console.log('Install:')
console.log(req.body);
res.render("/apps", {
name: req.session.user,
role: req.session.role,
avatar: req.session.avatar,
list_start: 0,
list_end: 28,
app_count: 0,
prev: 0,
next: 0,
apps_list: 0,
});
res.redirect('/');
}

View file

@ -1,11 +1,10 @@
import express from "express";
import { io } from "../app.js";
// Controllers
import { Login, submitLogin } from "../controllers/login.js";
import { Login, submitLogin, Logout } from "../controllers/login.js";
import { Register, submitRegister } from "../controllers/register.js";
import { Dashboard, searchDashboard } from "../controllers/dashboard.js";
import { Apps } from "../controllers/apps.js";
import { Apps, appSearch } from "../controllers/apps.js";
import { Users } from "../controllers/users.js";
import { Images } from "../controllers/images.js";
import { Account } from "../controllers/account.js";
@ -30,42 +29,34 @@ const auth = (req, res, next) => {
}
};
// Routes
router.get("/login", Login);
router.post("/login", submitLogin);
router.get("/logout", Logout);
router.get("/register", Register);
router.post("/register", submitRegister);
router.get("/", auth, Dashboard);
router.post("/", auth, searchDashboard);
router.get("/images", auth, Images);
router.get("/volumes", auth, Volumes);
router.get("/networks", auth, Networks);
router.get("/portal", Portal)
router.get("/apps", auth, Apps);
router.get("/apps/:page", auth, Apps);
router.post("/apps", auth, appSearch);
router.get("/users", auth, Users);
router.get("/images", auth, Images);
router.get("/networks", auth, Networks);
router.get("/volumes", auth, Volumes);
router.get("/syslogs", auth, Syslogs);
router.get("/account", Account);
router.get("/settings", auth, Settings);
router.get("/logout", (req, res) => {
const sessionId = req.session.id;
req.session.destroy(() => {
io.to(sessionId).disconnectSockets();
res.redirect("/login");
});
});
// Functions
router.post("/install", auth, Install);
router.post("/uninstall", auth, Uninstall);

View file

@ -45,12 +45,6 @@
</form>
<input type="submit" form="search" class="btn btn-outline-success h-50" value="search">
<form action="/apps" id="search2" name="search2" method="POST">
<input type="search" class="form-control" name="search2" placeholder="Search apps…">
</form>
<input type="submit" form="search2" class="btn btn-outline-success h-50" value="search2">
<div class="card-actions btn-actions">
<div class="card-actions btn-actions">
<div class="dropdown">
@ -113,17 +107,23 @@
<!-- Tabler Core -->
<script src="js/tabler.min.js" defer></script>
<script src="js/demo.min.js" defer></script>
<script>
const form = document.querySelector("#userinfo");
async function sendData() {
<!-- <script>
async function sendData(form) {
const formData = new FormData(form);
const jsonData = {};
for (let [key, value] of formData.entries()) {
jsonData[key] = value;
}
try {
const response = await fetch("/install", {
method: "POST",
body: formData,
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(jsonData),
});
console.log(await response.json());
} catch (e) {
@ -131,11 +131,20 @@
}
}
form.addEventListener("submit", (event) => {
document.addEventListener("submit", (event) => {
event.preventDefault();
sendData();
});
</script>
const buttonId = event.target.id;
console.log(buttonId);
const form = document.querySelector(`#${buttonId}`);
if (form) {
sendData(form);
} else {
console.error(`Form not found for button with ID: ${buttonId}`);
}
});
</script> -->
</body>
</html>