diff options
-rw-r--r-- | server/controllers/api/users/token.ts | 2 | ||||
-rw-r--r-- | server/lib/auth/oauth-model.ts | 10 |
2 files changed, 9 insertions, 3 deletions
diff --git a/server/controllers/api/users/token.ts b/server/controllers/api/users/token.ts index 3eae28b34..694bb0a92 100644 --- a/server/controllers/api/users/token.ts +++ b/server/controllers/api/users/token.ts | |||
@@ -88,7 +88,7 @@ async function handleToken (req: express.Request, res: express.Response, next: e | |||
88 | async function handleTokenRevocation (req: express.Request, res: express.Response) { | 88 | async function handleTokenRevocation (req: express.Request, res: express.Response) { |
89 | const token = res.locals.oauth.token | 89 | const token = res.locals.oauth.token |
90 | 90 | ||
91 | const result = await revokeToken(token, true) | 91 | const result = await revokeToken(token, { req, explicitLogout: true }) |
92 | 92 | ||
93 | return res.json(result) | 93 | return res.json(result) |
94 | } | 94 | } |
diff --git a/server/lib/auth/oauth-model.ts b/server/lib/auth/oauth-model.ts index c74869ee2..b9c69eb2d 100644 --- a/server/lib/auth/oauth-model.ts +++ b/server/lib/auth/oauth-model.ts | |||
@@ -1,3 +1,4 @@ | |||
1 | import * as express from 'express' | ||
1 | import { AccessDeniedError } from 'oauth2-server' | 2 | import { AccessDeniedError } from 'oauth2-server' |
2 | import { PluginManager } from '@server/lib/plugins/plugin-manager' | 3 | import { PluginManager } from '@server/lib/plugins/plugin-manager' |
3 | import { ActorModel } from '@server/models/activitypub/actor' | 4 | import { ActorModel } from '@server/models/activitypub/actor' |
@@ -125,15 +126,20 @@ async function getUser (usernameOrEmail?: string, password?: string, bypassLogin | |||
125 | 126 | ||
126 | async function revokeToken ( | 127 | async function revokeToken ( |
127 | tokenInfo: { refreshToken: string }, | 128 | tokenInfo: { refreshToken: string }, |
128 | explicitLogout?: boolean | 129 | options: { |
130 | req?: express.Request | ||
131 | explicitLogout?: boolean | ||
132 | } = {} | ||
129 | ): Promise<{ success: boolean, redirectUrl?: string }> { | 133 | ): Promise<{ success: boolean, redirectUrl?: string }> { |
134 | const { req, explicitLogout } = options | ||
135 | |||
130 | const token = await OAuthTokenModel.getByRefreshTokenAndPopulateUser(tokenInfo.refreshToken) | 136 | const token = await OAuthTokenModel.getByRefreshTokenAndPopulateUser(tokenInfo.refreshToken) |
131 | 137 | ||
132 | if (token) { | 138 | if (token) { |
133 | let redirectUrl: string | 139 | let redirectUrl: string |
134 | 140 | ||
135 | if (explicitLogout === true && token.User.pluginAuth && token.authName) { | 141 | if (explicitLogout === true && token.User.pluginAuth && token.authName) { |
136 | redirectUrl = await PluginManager.Instance.onLogout(token.User.pluginAuth, token.authName, token.User, this.request) | 142 | redirectUrl = await PluginManager.Instance.onLogout(token.User.pluginAuth, token.authName, token.User, req) |
137 | } | 143 | } |
138 | 144 | ||
139 | TokensCache.Instance.clearCacheByToken(token.accessToken) | 145 | TokensCache.Instance.clearCacheByToken(token.accessToken) |