@strapi/plugin-users-permissions 5.52.2 → 5.53.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/server/controllers/auth.js +8 -2
- package/dist/server/controllers/auth.js.map +1 -1
- package/dist/server/controllers/auth.mjs +8 -2
- package/dist/server/controllers/auth.mjs.map +1 -1
- package/dist/server/graphql/mutations/auth/change-password.js +6 -3
- package/dist/server/graphql/mutations/auth/change-password.js.map +1 -1
- package/dist/server/graphql/mutations/auth/change-password.mjs +6 -3
- package/dist/server/graphql/mutations/auth/change-password.mjs.map +1 -1
- package/dist/server/graphql/mutations/auth/forgot-password.js +6 -3
- package/dist/server/graphql/mutations/auth/forgot-password.js.map +1 -1
- package/dist/server/graphql/mutations/auth/forgot-password.mjs +6 -3
- package/dist/server/graphql/mutations/auth/forgot-password.mjs.map +1 -1
- package/dist/server/graphql/mutations/auth/login.js +9 -6
- package/dist/server/graphql/mutations/auth/login.js.map +1 -1
- package/dist/server/graphql/mutations/auth/login.mjs +9 -6
- package/dist/server/graphql/mutations/auth/login.mjs.map +1 -1
- package/dist/server/graphql/mutations/auth/rate-limit.js +63 -0
- package/dist/server/graphql/mutations/auth/rate-limit.js.map +1 -0
- package/dist/server/graphql/mutations/auth/rate-limit.mjs +61 -0
- package/dist/server/graphql/mutations/auth/rate-limit.mjs.map +1 -0
- package/dist/server/graphql/mutations/auth/register.js +6 -3
- package/dist/server/graphql/mutations/auth/register.js.map +1 -1
- package/dist/server/graphql/mutations/auth/register.mjs +6 -3
- package/dist/server/graphql/mutations/auth/register.mjs.map +1 -1
- package/dist/server/graphql/mutations/auth/reset-password.js +6 -3
- package/dist/server/graphql/mutations/auth/reset-password.js.map +1 -1
- package/dist/server/graphql/mutations/auth/reset-password.mjs +6 -3
- package/dist/server/graphql/mutations/auth/reset-password.mjs.map +1 -1
- package/dist/server/middlewares/rateLimit.js +1 -1
- package/dist/server/middlewares/rateLimit.js.map +1 -1
- package/dist/server/middlewares/rateLimit.mjs +1 -1
- package/dist/server/middlewares/rateLimit.mjs.map +1 -1
- package/dist/server/services/providers-registry.js +80 -19
- package/dist/server/services/providers-registry.js.map +1 -1
- package/dist/server/services/providers-registry.mjs +80 -19
- package/dist/server/services/providers-registry.mjs.map +1 -1
- package/dist/server/services/providers.js +12 -8
- package/dist/server/services/providers.js.map +1 -1
- package/dist/server/services/providers.mjs +12 -8
- package/dist/server/services/providers.mjs.map +1 -1
- package/dist/server/services/user.js +7 -7
- package/dist/server/services/user.js.map +1 -1
- package/dist/server/services/user.mjs +7 -7
- package/dist/server/services/user.mjs.map +1 -1
- package/dist/server/utils/oauth-connect/index.js +11 -6
- package/dist/server/utils/oauth-connect/index.js.map +1 -1
- package/dist/server/utils/oauth-connect/index.mjs +11 -6
- package/dist/server/utils/oauth-connect/index.mjs.map +1 -1
- package/dist/server/utils/trim-grant-session-response.js +67 -0
- package/dist/server/utils/trim-grant-session-response.js.map +1 -0
- package/dist/server/utils/trim-grant-session-response.mjs +65 -0
- package/dist/server/utils/trim-grant-session-response.mjs.map +1 -0
- package/package.json +4 -4
- package/server/src/controllers/auth.js +13 -2
- package/server/src/graphql/mutations/auth/change-password.js +5 -5
- package/server/src/graphql/mutations/auth/forgot-password.js +5 -5
- package/server/src/graphql/mutations/auth/login.js +10 -6
- package/server/src/graphql/mutations/auth/rate-limit.js +62 -0
- package/server/src/graphql/mutations/auth/register.js +5 -5
- package/server/src/graphql/mutations/auth/reset-password.js +5 -5
- package/server/src/middlewares/rateLimit.js +1 -1
- package/server/src/services/providers-registry.js +99 -23
- package/server/src/services/providers.js +9 -7
- package/server/src/services/user.js +15 -5
- package/server/src/utils/oauth-connect/index.js +12 -6
- package/server/src/utils/trim-grant-session-response.js +70 -0
|
@@ -5,6 +5,7 @@ const { errors } = require('@strapi/utils');
|
|
|
5
5
|
const builtinProviderEndpoints = require('./providers');
|
|
6
6
|
const oauth1 = require('./oauth1');
|
|
7
7
|
const oauth2 = require('./oauth2');
|
|
8
|
+
const { trimGrantSessionResponse } = require('../trim-grant-session-response');
|
|
8
9
|
|
|
9
10
|
const CONNECT_PREFIX = '/connect';
|
|
10
11
|
|
|
@@ -87,6 +88,15 @@ const preserveGrantDynamic = (ctx) => {
|
|
|
87
88
|
return dynamic ? { dynamic } : {};
|
|
88
89
|
};
|
|
89
90
|
|
|
91
|
+
const redirectWithSessionResponse = (ctx, callbackUrl, provider, tokenResponse) => {
|
|
92
|
+
const grantResponse = oauth2.tokensToQueryPayload(provider, tokenResponse);
|
|
93
|
+
ctx.session.grant = {
|
|
94
|
+
response: trimGrantSessionResponse(grantResponse, provider.name),
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
return redirectWithPayload(ctx, callbackUrl, {});
|
|
98
|
+
};
|
|
99
|
+
|
|
90
100
|
const startOAuth1Flow = async (ctx, provider, parsed, redirectUri) => {
|
|
91
101
|
const requestToken = await oauth1.requestToken({
|
|
92
102
|
requestUrl: provider.request_url,
|
|
@@ -142,9 +152,7 @@ const handleOAuth1Callback = async (ctx, provider, callbackUrl) => {
|
|
|
142
152
|
oauthTokenCredential: requestToken.oauth_token_secret,
|
|
143
153
|
});
|
|
144
154
|
|
|
145
|
-
|
|
146
|
-
ctx.session.grant = {};
|
|
147
|
-
return redirectWithPayload(ctx, callbackUrl, payload);
|
|
155
|
+
return redirectWithSessionResponse(ctx, callbackUrl, provider, tokenResponse);
|
|
148
156
|
};
|
|
149
157
|
|
|
150
158
|
const handleOAuth2Callback = async (ctx, provider, callbackUrl, redirectUri) => {
|
|
@@ -176,9 +184,7 @@ const handleOAuth2Callback = async (ctx, provider, callbackUrl, redirectUri) =>
|
|
|
176
184
|
subdomain: provider.subdomain,
|
|
177
185
|
});
|
|
178
186
|
|
|
179
|
-
|
|
180
|
-
ctx.session.grant = {};
|
|
181
|
-
return redirectWithPayload(ctx, callbackUrl, payload);
|
|
187
|
+
return redirectWithSessionResponse(ctx, callbackUrl, provider, tokenResponse);
|
|
182
188
|
};
|
|
183
189
|
|
|
184
190
|
const createOAuthConnectMiddleware = () => {
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const compact = (value) => {
|
|
4
|
+
if (value === null || value === undefined) {
|
|
5
|
+
return undefined;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
if (typeof value !== 'object' || Array.isArray(value)) {
|
|
9
|
+
return value;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
return Object.fromEntries(
|
|
13
|
+
Object.entries(value)
|
|
14
|
+
.map(([key, entry]) => [key, compact(entry)])
|
|
15
|
+
.filter(([, entry]) => entry !== undefined)
|
|
16
|
+
);
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Compact grant's OAuth token response before it is written to the signed
|
|
21
|
+
* koa-session cookie. The full token exchange payload (especially Cognito's
|
|
22
|
+
* dual JWTs plus a duplicated raw blob) can exceed the browser's ~4 KB
|
|
23
|
+
* per-cookie limit and silently break the auth callback.
|
|
24
|
+
*
|
|
25
|
+
* Keep only fields that auth.callback / providers-registry actually read.
|
|
26
|
+
*/
|
|
27
|
+
const trimGrantSessionResponse = (grantResponse, provider) => {
|
|
28
|
+
if (!grantResponse || typeof grantResponse !== 'object') {
|
|
29
|
+
return grantResponse;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
switch (provider) {
|
|
33
|
+
case 'cognito':
|
|
34
|
+
return compact({
|
|
35
|
+
id_token: grantResponse.id_token,
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
case 'twitter':
|
|
39
|
+
return compact({
|
|
40
|
+
access_token: grantResponse.access_token,
|
|
41
|
+
access_secret: grantResponse.access_secret,
|
|
42
|
+
raw: grantResponse.raw?.screen_name
|
|
43
|
+
? { screen_name: grantResponse.raw.screen_name }
|
|
44
|
+
: undefined,
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
case 'vk':
|
|
48
|
+
return compact({
|
|
49
|
+
access_token: grantResponse.access_token,
|
|
50
|
+
raw:
|
|
51
|
+
grantResponse.raw?.email != null && grantResponse.raw?.user_id != null
|
|
52
|
+
? {
|
|
53
|
+
email: grantResponse.raw.email,
|
|
54
|
+
user_id: grantResponse.raw.user_id,
|
|
55
|
+
}
|
|
56
|
+
: undefined,
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
default:
|
|
60
|
+
return compact({
|
|
61
|
+
access_token: grantResponse.access_token,
|
|
62
|
+
oauth_token: grantResponse.oauth_token,
|
|
63
|
+
id_token: grantResponse.id_token,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
module.exports = {
|
|
69
|
+
trimGrantSessionResponse,
|
|
70
|
+
};
|