X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fcontrollers%2Fapi%2Fusers%2Ftoken.ts;h=82142935824375d42a6541e49d4e213bb01f386f;hb=afd4ee86ddb97f8d49585fddd318bedcd3ad55b8;hp=9694f9e5e819a7a1b4c97c69a23b492955428535;hpb=e1c5503114deef954731904695cd40dccfcef555;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/controllers/api/users/token.ts b/server/controllers/api/users/token.ts index 9694f9e5e..821429358 100644 --- a/server/controllers/api/users/token.ts +++ b/server/controllers/api/users/token.ts @@ -1,9 +1,11 @@ -import { handleIdAndPassLogin, handleTokenRevocation } from '@server/lib/auth' +import { handleLogin, handleTokenRevocation } from '@server/lib/auth' import * as RateLimit from 'express-rate-limit' import { CONFIG } from '@server/initializers/config' import * as express from 'express' import { Hooks } from '@server/lib/plugins/hooks' import { asyncMiddleware, authenticate } from '@server/middlewares' +import { ScopedToken } from '@shared/models/users/user-scoped-token' +import { v4 as uuidv4 } from 'uuid' const tokensRouter = express.Router() @@ -14,14 +16,23 @@ const loginRateLimiter = RateLimit({ tokensRouter.post('/token', loginRateLimiter, - handleIdAndPassLogin, + handleLogin, tokenSuccess ) tokensRouter.post('/revoke-token', authenticate, - asyncMiddleware(handleTokenRevocation), - tokenSuccess + asyncMiddleware(handleTokenRevocation) +) + +tokensRouter.get('/scoped-tokens', + authenticate, + getScopedTokens +) + +tokensRouter.post('/scoped-tokens', + authenticate, + asyncMiddleware(renewScopedTokens) ) // --------------------------------------------------------------------------- @@ -36,3 +47,22 @@ function tokenSuccess (req: express.Request) { Hooks.runAction('action:api.user.oauth2-got-token', { username, ip: req.ip }) } + +function getScopedTokens (req: express.Request, res: express.Response) { + const user = res.locals.oauth.token.user + + return res.json({ + feedToken: user.feedToken + } as ScopedToken) +} + +async function renewScopedTokens (req: express.Request, res: express.Response) { + const user = res.locals.oauth.token.user + + user.feedToken = uuidv4() + await user.save() + + return res.json({ + feedToken: user.feedToken + } as ScopedToken) +}