39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import { MemberState } from "@app/shared/types/member";
|
|
import { requireLogin, requireMemberState, requireRole } from "../middleware/auth";
|
|
import { getAllRanks, insertMemberRank } from "../services/rankService";
|
|
|
|
import express = require('express');
|
|
const r = express.Router();
|
|
const ur = express.Router();
|
|
|
|
|
|
r.use(requireLogin)
|
|
ur.use(requireLogin)
|
|
|
|
//insert a new latest rank for a user
|
|
ur.post('/', [requireRole(["17th Command", "17th Administrator", "17th HQ"]), requireMemberState(MemberState.Member)], async (req, res) => {
|
|
3
|
|
try {
|
|
const change = req.body?.change;
|
|
await insertMemberRank(change.member_id, change.rank_id, change.date);
|
|
|
|
res.sendStatus(201);
|
|
} catch (err) {
|
|
console.error('Insert failed:', err);
|
|
res.status(500).json({ error: 'Failed to update ranks' });
|
|
}
|
|
});
|
|
|
|
//get all ranks
|
|
r.get('/', async (req, res) => {
|
|
try {
|
|
const ranks = await getAllRanks();
|
|
res.json(ranks);
|
|
} catch (err) {
|
|
console.error(err);
|
|
res.status(500).json({ error: 'Internal server error' });
|
|
}
|
|
});
|
|
|
|
export const ranks = r;
|
|
export const memberRanks = ur; |