]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/middlewares/oauth.ts
468e418106c69c84ceb596b705665ebadfd7de40
[github/Chocobozzz/PeerTube.git] / server / middlewares / oauth.ts
1 import * as OAuthServer from 'express-oauth-server'
2
3 import { OAUTH_LIFETIME } from '../initializers'
4 import { logger } from '../helpers'
5
6 const oAuthServer = new OAuthServer({
7 accessTokenLifetime: OAUTH_LIFETIME.ACCESS_TOKEN,
8 refreshTokenLifetime: OAUTH_LIFETIME.REFRESH_TOKEN,
9 model: require('../lib/oauth-model')
10 })
11
12 function authenticate (req, res, next) {
13 oAuthServer.authenticate()(req, res, function (err) {
14 if (err) {
15 logger.error('Cannot authenticate.', { error: err })
16 return res.sendStatus(500)
17 }
18
19 if (res.statusCode === 401 || res.statusCode === 400 || res.statusCode === 503) return res.end()
20
21 return next()
22 })
23 }
24
25 function token (req, res, next) {
26 return oAuthServer.token()(req, res, next)
27 }
28
29 // ---------------------------------------------------------------------------
30
31 export {
32 authenticate,
33 token
34 }