Add "local" videos in menu
[oweals/peertube.git] / server / middlewares / oauth.ts
1 import * as express from 'express'
2 import * as OAuthServer from 'express-oauth-server'
3 import 'express-validator'
4 import { OAUTH_LIFETIME } from '../initializers'
5
6 const oAuthServer = new OAuthServer({
7   useErrorHandler: true,
8   accessTokenLifetime: OAUTH_LIFETIME.ACCESS_TOKEN,
9   refreshTokenLifetime: OAUTH_LIFETIME.REFRESH_TOKEN,
10   model: require('../lib/oauth-model')
11 })
12
13 function authenticate (req: express.Request, res: express.Response, next: express.NextFunction) {
14   oAuthServer.authenticate()(req, res, err => {
15     if (err) {
16       return res.status(err.status)
17         .json({
18           error: 'Token is invalid.',
19           code: err.name
20         })
21         .end()
22     }
23
24     return next()
25   })
26 }
27
28 function token (req: express.Request, res: express.Response, next: express.NextFunction) {
29   return oAuthServer.token()(req, res, err => {
30     if (err) {
31       return res.status(err.status)
32         .json({
33           error: 'Authentication failed.',
34           code: err.name
35         })
36         .end()
37     }
38
39     return next()
40   })
41 }
42
43 // ---------------------------------------------------------------------------
44
45 export {
46   authenticate,
47   token
48 }