@strapi/plugin-users-permissions 5.0.0-beta.8 → 5.0.0-beta.9

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.
Files changed (29) hide show
  1. package/dist/_chunks/{index-B_rNTZBF.mjs → index-8gj-Xbnv.mjs} +2 -2
  2. package/dist/_chunks/{index-B_rNTZBF.mjs.map → index-8gj-Xbnv.mjs.map} +1 -1
  3. package/dist/_chunks/{index-B6AAcVOR.mjs → index-BBs5I2vg.mjs} +8 -8
  4. package/dist/_chunks/{index-B6AAcVOR.mjs.map → index-BBs5I2vg.mjs.map} +1 -1
  5. package/dist/_chunks/{index-fnfzDsYv.mjs → index-CDbrfh8w.mjs} +3 -3
  6. package/dist/_chunks/{index-fnfzDsYv.mjs.map → index-CDbrfh8w.mjs.map} +1 -1
  7. package/dist/_chunks/{index-DGyiWVHr.js → index-CTQmcKdx.js} +7 -7
  8. package/dist/_chunks/{index-DGyiWVHr.js.map → index-CTQmcKdx.js.map} +1 -1
  9. package/dist/_chunks/{index-00_Lq0-y.mjs → index-Cm0m3fu1.mjs} +3 -3
  10. package/dist/_chunks/{index-00_Lq0-y.mjs.map → index-Cm0m3fu1.mjs.map} +1 -1
  11. package/dist/_chunks/{index-CIJz4WB2.js → index-DU64Xec_.js} +2 -2
  12. package/dist/_chunks/{index-CIJz4WB2.js.map → index-DU64Xec_.js.map} +1 -1
  13. package/dist/_chunks/{index-BGu68xEV.js → index-DbtKSwQT.js} +8 -8
  14. package/dist/_chunks/{index-BGu68xEV.js.map → index-DbtKSwQT.js.map} +1 -1
  15. package/dist/_chunks/{index-DTK4DMrt.js → index-Dv_hLBLL.js} +4 -4
  16. package/dist/_chunks/{index-DTK4DMrt.js.map → index-Dv_hLBLL.js.map} +1 -1
  17. package/dist/_chunks/{index-69WUS0qJ-621Sl9hj.js → index-EQL2s09p-621Sl9hj.js} +1 -1
  18. package/dist/_chunks/{index-69WUS0qJ-621Sl9hj.js.map → index-EQL2s09p-621Sl9hj.js.map} +1 -1
  19. package/dist/_chunks/{index-69WUS0qJ-DzUzGVgd.mjs → index-EQL2s09p-DzUzGVgd.mjs} +1 -1
  20. package/dist/_chunks/{index-69WUS0qJ-DzUzGVgd.mjs.map → index-EQL2s09p-DzUzGVgd.mjs.map} +1 -1
  21. package/dist/_chunks/{index-BSqwdKVh.js → index-eXarQ1KK.js} +2 -2
  22. package/dist/_chunks/{index-BSqwdKVh.js.map → index-eXarQ1KK.js.map} +1 -1
  23. package/dist/_chunks/{index-DaCuO0x_.mjs → index-sXlt_q08.mjs} +2 -2
  24. package/dist/_chunks/{index-DaCuO0x_.mjs.map → index-sXlt_q08.mjs.map} +1 -1
  25. package/dist/admin/index.js +1 -1
  26. package/dist/admin/index.mjs +1 -1
  27. package/package.json +4 -4
  28. package/server/config.js +29 -0
  29. package/server/controllers/auth.js +22 -4
@@ -196,10 +196,28 @@ module.exports = {
196
196
  }
197
197
 
198
198
  // Ability to pass OAuth callback dynamically
199
- grantConfig[provider].callback =
200
- _.get(ctx, 'query.callback') ||
201
- _.get(ctx, 'session.grant.dynamic.callback') ||
202
- grantConfig[provider].callback;
199
+ const queryCustomCallback = _.get(ctx, 'query.callback');
200
+ const dynamicSessionCallback = _.get(ctx, 'session.grant.dynamic.callback');
201
+
202
+ const customCallback = queryCustomCallback ?? dynamicSessionCallback;
203
+
204
+ // The custom callback is validated to make sure it's not redirecting to an unwanted actor.
205
+ if (customCallback !== undefined) {
206
+ try {
207
+ // We're extracting the callback validator from the plugin config since it can be user-customized
208
+ const { validate: validateCallback } = strapi
209
+ .plugin('users-permissions')
210
+ .config('callback');
211
+
212
+ await validateCallback(customCallback, grantConfig[provider]);
213
+
214
+ grantConfig[provider].callback = customCallback;
215
+ } catch (e) {
216
+ throw new ValidationError('Invalid callback URL provided', { callback: customCallback });
217
+ }
218
+ }
219
+
220
+ // Build a valid redirect URI for the current provider
203
221
  grantConfig[provider].redirect_uri = getService('providers').buildRedirectUri(provider);
204
222
 
205
223
  return grant(grantConfig)(ctx, next);