1.1.2•Updated a month ago
import { Permission, Permissions } from "../../modules/permissions.ts";
import { Router } from "../router.ts";
const V1TokenRouter = new Router();
V1TokenRouter.any('*', (request, next) => {
if(!request.permissions.can(Permission.MANAGE_TOKENS)) return 403;
return next();
})
V1TokenRouter.get('/', (_request) => {
const all_tokens = Object.entries(Permissions.Store).map(([token, map]) => {
return {
token,
permissions: map
}
});
return Response.json({
count: all_tokens.length,
data: all_tokens
});
})
V1TokenRouter.get('/:id', (request) => {
const map = Permissions.Store[request.params.id];
if(!map) return 404;
return Response.json({
token: request.params.id,
data: map
});
})
V1TokenRouter.patch('/:id', async (request) => {
const map = Permissions.Store[request.params.id];
if(!map) return 404;
let changed = false;
try {
const body = await request.json();
for(const perm of Object.values(Permission)) {
if(typeof body[perm] !== 'boolean') continue;
if(map[perm] == body[perm]) continue;
map[perm] = body[perm];
changed = true;
}
} catch(_) {
return 400;
}
return {
token: request.params.id,
changed,
map
};
})
export default V1TokenRouter;