45 lines
1.4 KiB
JavaScript
45 lines
1.4 KiB
JavaScript
|
const express = require('express');
|
||
|
const app = express();
|
||
|
const bodyParser = require('body-parser');
|
||
|
const jwt = require('jsonwebtoken');
|
||
|
const usersController = require('./controllers/users');
|
||
|
const matchController = require('./controllers/matchcontroller');
|
||
|
const social = require('./controllers/social')
|
||
|
|
||
|
app.use(bodyParser.json());
|
||
|
|
||
|
function authenticateJWT(req, res, next) {
|
||
|
const token = req.headers['authorization'] && req.headers['authorization'].split(' ')[1];
|
||
|
|
||
|
if (!token) return res.status(403).json({ error: 'Access denied. No token provided.' });
|
||
|
|
||
|
jwt.verify(token, process.env.JWT_SECRET, (err, user) => {
|
||
|
if (err) return res.status(403).json({ error: 'Invalid token.' });
|
||
|
req.user = user;
|
||
|
next();
|
||
|
});
|
||
|
}
|
||
|
|
||
|
// user management endpoints
|
||
|
app.post('/register', usersController.registerUser);
|
||
|
app.post('/login', usersController.authenticateUser);
|
||
|
app.post('/leaderboards', usersController.getLeaderboard);
|
||
|
app.post('/reset-password', authenticateJWT, usersController.resetPassword);
|
||
|
|
||
|
// social interaction endpoints
|
||
|
app.post('/add_friend', authenticateJWT, social.addFriend);
|
||
|
|
||
|
// match controller
|
||
|
app.post('/create-match', authenticateJWT, matchController.createMatch);
|
||
|
|
||
|
|
||
|
app.get('/', (req, res) => {
|
||
|
res.send('Server is running!');
|
||
|
});
|
||
|
|
||
|
|
||
|
const PORT = process.env.PORT || 3000;
|
||
|
app.listen(PORT, () => {
|
||
|
console.log(`Server is running on port ${PORT}`);
|
||
|
});
|