]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/controllers/api/users/token.ts
Remove traefik docker support
[github/Chocobozzz/PeerTube.git] / server / controllers / api / users / token.ts
CommitLineData
9107d791 1import { handleLogin, handleTokenRevocation } from '@server/lib/auth'
e1c55031
C
2import * as RateLimit from 'express-rate-limit'
3import { CONFIG } from '@server/initializers/config'
4import * as express from 'express'
5import { Hooks } from '@server/lib/plugins/hooks'
6import { asyncMiddleware, authenticate } from '@server/middlewares'
afff310e
RK
7import { ScopedToken } from '@shared/models/users/user-scoped-token'
8import { v4 as uuidv4 } from 'uuid'
e1c55031
C
9
10const tokensRouter = express.Router()
11
12const loginRateLimiter = RateLimit({
13 windowMs: CONFIG.RATES_LIMIT.LOGIN.WINDOW_MS,
14 max: CONFIG.RATES_LIMIT.LOGIN.MAX
15})
16
17tokensRouter.post('/token',
18 loginRateLimiter,
9107d791 19 handleLogin,
e1c55031
C
20 tokenSuccess
21)
22
23tokensRouter.post('/revoke-token',
24 authenticate,
e307e4fc 25 asyncMiddleware(handleTokenRevocation)
e1c55031
C
26)
27
afff310e
RK
28tokensRouter.get('/scoped-tokens',
29 authenticate,
30 getScopedTokens
31)
32
33tokensRouter.post('/scoped-tokens',
34 authenticate,
35 asyncMiddleware(renewScopedTokens)
36)
37
e1c55031
C
38// ---------------------------------------------------------------------------
39
40export {
41 tokensRouter
42}
43// ---------------------------------------------------------------------------
44
45function tokenSuccess (req: express.Request) {
46 const username = req.body.username
47
48 Hooks.runAction('action:api.user.oauth2-got-token', { username, ip: req.ip })
49}
afff310e
RK
50
51function getScopedTokens (req: express.Request, res: express.Response) {
52 const user = res.locals.oauth.token.user
53
54 return res.json({
55 feedToken: user.feedToken
56 } as ScopedToken)
57}
58
59async function renewScopedTokens (req: express.Request, res: express.Response) {
60 const user = res.locals.oauth.token.user
61
62 user.feedToken = uuidv4()
63 await user.save()
64
65 return res.json({
66 feedToken: user.feedToken
67 } as ScopedToken)
68}