AstroCom-API/routes/user.js

58 lines
1.4 KiB
JavaScript

const pool = global
const express = require('express');
const app = new express.Router();
app.get('/user', (req, res) => {
if (!req.session.userAuthenticated) {
res.redirect('/user/login');
return;
}
res.render('user/index', { user: req.session.user });
});
app.get('/user/login', (req, res) => {
res.render('user/login');
});
app.post('/user/login', (req, res) => {
const apiKey = req.body.apiKey;
pool.getConnection().then(conn => {
conn.query("SELECT * FROM routes WHERE apiKey = ?", [apiKey]).then((rows) => {
const row = rows[0];
if (!row) {
res.status(401).send('Unauthorized');
return;
}
req.session.userAuthenticated = true;
req.session.userData = row;
res.redirect('/user');
}).catch(err => {
console.error('Error getting route:', err);
res.status(500).send('Internal server error');
}).finally(() => {
conn.release();
});
});
});
app.get('/user/logout', (req, res) => {
req.session.destroy();
res.redirect('/user/login');
});
app.get("/user/edit", (req, res) => {
if (!req.session.userAuthenticated) {
res.redirect('/user/login');
return;
}
// Remove block_start, block_length, and apiKey from the response
responseData = {
server: req.session.userData.server,
port: req.session.userData.port,
auth: req.session.userData.auth,
secret: req.session.userData.secret
}
res.render('user/edit', { data: responseData });
});
module.exports = app;