summaryrefslogtreecommitdiffstats
path: root/backend/src/routes.js
blob: 9424f7558afde4a8c5c52385138c302ffc3fbc68 (plain)
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 };