merged logout with login.js. Fixed app search.
This commit is contained in:
parent
b22894f366
commit
4d78177951
6 changed files with 59 additions and 79 deletions
14
app.js
14
app.js
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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");
|
||||
});
|
||||
}
|
|
@ -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('/');
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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>
|
Loading…
Add table
Reference in a new issue