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
34
35
36
37
38
39
40
41
|
const express = require('express');
const db = require('./db');
const { permissionMiddleware } = require('./authz');
const PERMISSIONS = require('./permissions');
const { authMiddleware, registerRoute, loginRoute, logoutRoute, activateRoute } = require('./authn');
const normalRouter = express.Router();
const authedRouter = express.Router();
authedRouter.use(authMiddleware);
normalRouter.get('/', (req, res) => {
res.json({
message: 'Backend API',
});
});
/* Authentication flow */
normalRouter.post('/register', registerRoute);
normalRouter.post('/login', loginRoute);
normalRouter.post('/activate', activateRoute);
authedRouter.post('/logout', logoutRoute);
authedRouter.get('/user', (req, res) => {
const user = req.user;
return res.json({
message: `Hello user ${user.username}!`,
username: user.username,
});
});
authedRouter.get('/users', permissionMiddleware(PERMISSIONS.READ_USERS), async (req, res) => {
const users = await db('users').select('id', 'username', 'created_at');
return res.json({
users,
});
});
module.exports = { authedRouter, normalRouter };
|