-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathmiddleware.mjs
40 lines (37 loc) · 1.03 KB
/
middleware.mjs
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
import { getUsernameFromAccessToken } from "./api/auth.mjs";
/* Middleware to require location
* @param {Object} req request
* @param {Object} res response
* @param {Object} next next middleware call
*/
const requireLocation = (req, res, next) => {
if (!req?.body?.cookies) {
res.status(400);
res.json({ error: "missing cookie data" });
} else if (!req?.body?.cookies["uev2.loc"]) {
res.status(400);
res.json({ error: "missing location data" });
} else {
next();
}
};
/* Middleware to require authentication
* @param {Object} req request
* @param {Object} res response
* @param {Object} next next middleware call
*/
const requireAuthentication = (req, res, next) => {
const auth = req.headers.authorization;
const accessToken = auth && auth.split(" ")[1];
if (!accessToken) {
res.sendStatus(401);
}
try {
req.username = getUsernameFromAccessToken(accessToken);
next();
} catch (e) {
console.error(e);
res.sendStatus(403);
}
};
export { requireLocation, requireAuthentication };