forked from MyZubster-Ecosystem/myzubster
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrewardRoutes.js
More file actions
33 lines (29 loc) 路 1.36 KB
/
Copy pathrewardRoutes.js
File metadata and controls
33 lines (29 loc) 路 1.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
const express = require('express');
const router = express.Router();
const rewardController = require('../controllers/rewardController');
const jwt = require('jsonwebtoken');
const auth = (req, res, next) => {
const token = req.header('Authorization')?.replace('Bearer ', '');
if (!token) return res.status(401).json({ error: 'No token provided' });
try {
req.user = jwt.verify(token, process.env.JWT_SECRET || 'secret');
next();
} catch (e) {
return res.status(401).json({ error: 'Invalid token' });
}
};
const admin = (req, res, next) => {
if (req.user.role !== 'admin') return res.status(403).json({ error: 'Admin required' });
next();
};
router.post('/qa', auth, rewardController.createQAReward);
router.post('/robot-bonus', auth, rewardController.createRobotBonus);
router.post('/referral', auth, rewardController.createReferralReward);
router.post('/education', auth, rewardController.createEducationReward);
router.post('/governance/vote', auth, rewardController.createGovernanceVoteReward);
router.post('/governance/delegation', auth, rewardController.createGovernanceDelegationReward);
router.get('/', rewardController.listRewards);
router.get('/stats', auth, admin, rewardController.getStats);
router.get('/:rewardId', rewardController.getReward);
router.post('/:rewardId/approve', auth, admin, rewardController.approveReward);
module.exports = router;