- Added `jose` library for JWT token generation and verification. - Implemented login functionality with token storage using cookies. - Created `HeaderAdmin` component for admin panel with login/logout capabilities. - Developed `LoginForm` component for user authentication. - Added `Table` component to display data with caching from localStorage. - Introduced `SubHeaderAdmin` for additional admin actions. - Enhanced `database.js` with functions for admin login and fetching table data. - Updated `server.js` to handle new routes for login and table data retrieval. - Modified `package.json` and `package-lock.json` to include new dependencies.
58 lines
1.5 KiB
JavaScript
58 lines
1.5 KiB
JavaScript
import express from "express";
|
|
import cors from "cors";
|
|
import env from "dotenv";
|
|
import { query, loginAdmin, getTableData } from "./services/database.js";
|
|
import { generateToken, authenticate } from "./services/tokenService.js";
|
|
env.config();
|
|
const app = express();
|
|
const port = 8002;
|
|
|
|
app.use(cors());
|
|
app.use(express.urlencoded({ extended: true }));
|
|
app.set("view engine", "ejs");
|
|
app.use(express.json());
|
|
|
|
app.get("/", (req, res) => {
|
|
res.render("index.ejs", { title: port });
|
|
});
|
|
|
|
app.post("/lose", async (req, res) => {
|
|
const result = await query(req.body);
|
|
if (result.success) {
|
|
res.status(200).send("Update successful");
|
|
} else {
|
|
res.status(400).send("Update failed");
|
|
}
|
|
});
|
|
|
|
app.get("/table-data", authenticate, async (req, res) => {
|
|
const result = await getTableData();
|
|
if (result.success) {
|
|
res.status(200).json(result.data);
|
|
} else {
|
|
res.status(500);
|
|
}
|
|
});
|
|
|
|
app.post("/login", async (req, res) => {
|
|
const { username, password } = req.body;
|
|
const result = await loginAdmin(username, password);
|
|
if (result.success) {
|
|
const token = await generateToken({ username });
|
|
res.status(200).json({ success: true, token });
|
|
} else {
|
|
res.status(401).json({ success: false });
|
|
}
|
|
});
|
|
|
|
app.listen(port, () => {
|
|
console.log(`Server is running on port: ${port}`);
|
|
});
|
|
|
|
// error handling code
|
|
app.use((err, req, res, next) => {
|
|
// Log the error stack and send a generic error response
|
|
console.error(err.stack);
|
|
res.status(500).send("Something broke!");
|
|
});
|