|
3 | 3 | const { FORBIDDEN } = require('http-status-codes'); |
4 | 4 | const miss = require('mississippi'); |
5 | 5 | const path = require('path'); |
6 | | -const proxy = require('.'); |
7 | 6 | const router = require('express').Router(); |
8 | 7 |
|
9 | | -module.exports = (storage, proxyAccessManager) => { |
10 | | - function getFile(req, res, next) { |
| 8 | +function proxy(storage, accessManager) { |
| 9 | + return router.get('/*', (req, res, next) => { |
11 | 10 | const key = req.params[0]; |
12 | | - const hasValidCookies = proxy.verifyCookies(req.cookies, key, proxyAccessManager); |
| 11 | + const hasValidCookies = accessManager.verifyCookies(req.cookies, key); |
13 | 12 | if (!hasValidCookies) return res.status(FORBIDDEN).end(); |
14 | 13 | res.type(path.extname(key)); |
15 | 14 | miss.pipe(storage.createReadStream(key), res, err => { |
16 | 15 | if (err) return next(err); |
17 | 16 | res.end(); |
18 | 17 | }); |
19 | | - } |
| 18 | + }); |
| 19 | +} |
20 | 20 |
|
21 | | - function setSignedCookies(req, res, next) { |
| 21 | +function setSignedCookies(accessManager) { |
| 22 | + return (req, res, next) => { |
22 | 23 | const repositoryId = req.repository.id; |
23 | | - if (proxy.hasCookies(req.cookies, repositoryId, proxyAccessManager)) return next(); |
| 24 | + if (accessManager.hasCookies(req.cookies, repositoryId)) return next(); |
24 | 25 | const maxAge = 1000 * 60 * 60; // 1 hour in ms |
25 | | - const cookies = proxy.getSignedCookies(repositoryId, maxAge, proxyAccessManager); |
| 26 | + const cookies = accessManager.getSignedCookies(repositoryId, maxAge); |
26 | 27 | Object.entries(cookies).forEach(([cookie, value]) => { |
27 | 28 | res.cookie(cookie, value, { maxAge, httpOnly: true }); |
28 | 29 | }); |
29 | 30 | next(); |
30 | | - } |
| 31 | + }; |
| 32 | +} |
31 | 33 |
|
32 | | - return { proxy: router.get('/*', getFile), setSignedCookies }; |
33 | | -}; |
| 34 | +module.exports = { proxy, setSignedCookies }; |
0 commit comments