]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/middlewares/oauth.ts
41a3fb71894133d759f867a288bc930ea0e62362
[github/Chocobozzz/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 }