40 lines
1.3 KiB
JavaScript
40 lines
1.3 KiB
JavaScript
import express from 'express';
|
|
import morgan from 'morgan';
|
|
import computerRouter from './Routes/computer.js';
|
|
import userRouter from './Routes/user.js';
|
|
import jwt from 'jsonwebtoken';
|
|
|
|
const app = express();
|
|
app.use(express.json());
|
|
app.use(morgan('dev'));
|
|
app.use(express.static('public'));
|
|
|
|
const authMiddleware = async (req, res, next) => {
|
|
const token = req.headers.authorization;
|
|
if (!token) {
|
|
return res.status(401).json({ message: 'No auth token provided' });
|
|
}
|
|
|
|
try {
|
|
const decoded = jwt.verify(token, process.env.SECRET);
|
|
if (!decoded) {
|
|
return res.status(401).json({ message: 'Invalid auth token' });
|
|
}
|
|
const rows = await database.execute('SELECT * FROM users WHERE username = ?', [decoded.username]);
|
|
if (rows.length === 0) res.status(401).json({ error: 'Unauthorized' });
|
|
const isPasswordValid = await Bun.password.verify(decoded.password, rows[0].password);
|
|
if (!isPasswordValid) res.status(401).json({ error: 'Unauthorized' });
|
|
next();
|
|
} catch (error) {
|
|
return res.status(401).json({ message: 'Invalid auth token' });
|
|
}
|
|
};
|
|
|
|
computerRouter.use(authMiddleware);
|
|
app.use('/computer', computerRouter);
|
|
app.use('/user', userRouter);
|
|
|
|
// Start the server
|
|
app.listen(3000, () => {
|
|
console.log('Server is running on port 3000');
|
|
}); |