07bbded57d636d3a5999c46cc7b94621981c4c72
[oweals/peertube.git] / server / middlewares / oauth.ts
1 import OAuthServer = require('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 }