@strapi/plugin-users-permissions 0.0.0-experimental.6340da17068c3bed7fb006e7bcc554c71129e282 → 0.0.0-experimental.63624e21eb5b0713345a0cf2f68f1c40eab427bc
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/.eslintrc.cjs +2 -0
- package/admin/src/pages/EmailTemplates/components/EmailForm.jsx +3 -1
- package/admin/src/pages/Roles/pages/EditPage.jsx +1 -1
- package/admin/src/pages/Roles/pages/ListPage/index.jsx +1 -1
- package/admin/src/translations/en.json +1 -0
- package/admin/src/translations/es.json +1 -1
- package/admin/src/translations/ko.json +2 -1
- package/admin/src/translations/sv.json +1 -1
- package/admin/src/translations/uk.json +1 -1
- package/dist/admin/pages/EmailTemplates/components/EmailForm.js +2 -1
- package/dist/admin/pages/EmailTemplates/components/EmailForm.js.map +1 -1
- package/dist/admin/pages/EmailTemplates/components/EmailForm.mjs +2 -1
- package/dist/admin/pages/EmailTemplates/components/EmailForm.mjs.map +1 -1
- package/dist/admin/pages/Roles/pages/EditPage.js +1 -1
- package/dist/admin/pages/Roles/pages/EditPage.js.map +1 -1
- package/dist/admin/pages/Roles/pages/EditPage.mjs +1 -1
- package/dist/admin/pages/Roles/pages/EditPage.mjs.map +1 -1
- package/dist/admin/pages/Roles/pages/ListPage/index.js +1 -1
- package/dist/admin/pages/Roles/pages/ListPage/index.js.map +1 -1
- package/dist/admin/pages/Roles/pages/ListPage/index.mjs +1 -1
- package/dist/admin/pages/Roles/pages/ListPage/index.mjs.map +1 -1
- package/dist/admin/translations/en.json.js +1 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +1 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/es.json.js +1 -1
- package/dist/admin/translations/es.json.mjs +1 -1
- package/dist/admin/translations/ko.json.js +2 -1
- package/dist/admin/translations/ko.json.js.map +1 -1
- package/dist/admin/translations/ko.json.mjs +2 -1
- package/dist/admin/translations/ko.json.mjs.map +1 -1
- package/dist/admin/translations/sv.json.js +1 -1
- package/dist/admin/translations/sv.json.mjs +1 -1
- package/dist/admin/translations/uk.json.js +1 -1
- package/dist/admin/translations/uk.json.mjs +1 -1
- package/dist/server/_virtual/_node_crypto.js +10 -0
- package/dist/server/_virtual/_node_crypto.js.map +1 -0
- package/dist/server/_virtual/_node_crypto.mjs +7 -0
- package/dist/server/_virtual/_node_crypto.mjs.map +1 -0
- package/dist/server/_virtual/_node_url.js +10 -0
- package/dist/server/_virtual/_node_url.js.map +1 -0
- package/dist/server/_virtual/_node_url.mjs +7 -0
- package/dist/server/_virtual/_node_url.mjs.map +1 -0
- package/dist/server/bootstrap/index.js.map +1 -1
- package/dist/server/bootstrap/index.mjs.map +1 -1
- package/dist/server/bootstrap/users-permissions-actions.js.map +1 -1
- package/dist/server/bootstrap/users-permissions-actions.mjs.map +1 -1
- package/dist/server/config.js.map +1 -1
- package/dist/server/config.mjs.map +1 -1
- package/dist/server/content-types/index.js.map +1 -1
- package/dist/server/content-types/index.mjs.map +1 -1
- package/dist/server/content-types/permission/index.js.map +1 -1
- package/dist/server/content-types/permission/index.mjs.map +1 -1
- package/dist/server/content-types/role/index.js.map +1 -1
- package/dist/server/content-types/role/index.mjs.map +1 -1
- package/dist/server/content-types/user/index.js.map +1 -1
- package/dist/server/content-types/user/index.mjs.map +1 -1
- package/dist/server/content-types/user/schema-config.js.map +1 -1
- package/dist/server/content-types/user/schema-config.mjs.map +1 -1
- package/dist/server/controllers/auth.js +38 -30
- package/dist/server/controllers/auth.js.map +1 -1
- package/dist/server/controllers/auth.mjs +38 -28
- package/dist/server/controllers/auth.mjs.map +1 -1
- package/dist/server/controllers/content-manager-user.js.map +1 -1
- package/dist/server/controllers/content-manager-user.mjs.map +1 -1
- package/dist/server/controllers/index.js.map +1 -1
- package/dist/server/controllers/index.mjs.map +1 -1
- package/dist/server/controllers/permissions.js.map +1 -1
- package/dist/server/controllers/permissions.mjs.map +1 -1
- package/dist/server/controllers/role.js.map +1 -1
- package/dist/server/controllers/role.mjs.map +1 -1
- package/dist/server/controllers/settings.js.map +1 -1
- package/dist/server/controllers/settings.mjs.map +1 -1
- package/dist/server/controllers/user.js.map +1 -1
- package/dist/server/controllers/user.mjs.map +1 -1
- package/dist/server/controllers/validation/auth.js +6 -6
- package/dist/server/controllers/validation/auth.js.map +1 -1
- package/dist/server/controllers/validation/auth.mjs +6 -6
- package/dist/server/controllers/validation/auth.mjs.map +1 -1
- package/dist/server/controllers/validation/email-template.js +1 -4
- package/dist/server/controllers/validation/email-template.js.map +1 -1
- package/dist/server/controllers/validation/email-template.mjs +1 -3
- package/dist/server/controllers/validation/email-template.mjs.map +1 -1
- package/dist/server/controllers/validation/user.js.map +1 -1
- package/dist/server/controllers/validation/user.mjs.map +1 -1
- package/dist/server/graphql/index.js.map +1 -1
- package/dist/server/graphql/index.mjs.map +1 -1
- package/dist/server/graphql/mutations/auth/change-password.js +7 -4
- package/dist/server/graphql/mutations/auth/change-password.js.map +1 -1
- package/dist/server/graphql/mutations/auth/change-password.mjs +7 -4
- package/dist/server/graphql/mutations/auth/change-password.mjs.map +1 -1
- package/dist/server/graphql/mutations/auth/email-confirmation.js +1 -1
- package/dist/server/graphql/mutations/auth/email-confirmation.js.map +1 -1
- package/dist/server/graphql/mutations/auth/email-confirmation.mjs +1 -1
- package/dist/server/graphql/mutations/auth/email-confirmation.mjs.map +1 -1
- package/dist/server/graphql/mutations/auth/forgot-password.js +7 -4
- package/dist/server/graphql/mutations/auth/forgot-password.js.map +1 -1
- package/dist/server/graphql/mutations/auth/forgot-password.mjs +7 -4
- package/dist/server/graphql/mutations/auth/forgot-password.mjs.map +1 -1
- package/dist/server/graphql/mutations/auth/login.js +10 -7
- package/dist/server/graphql/mutations/auth/login.js.map +1 -1
- package/dist/server/graphql/mutations/auth/login.mjs +10 -7
- 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 +7 -4
- package/dist/server/graphql/mutations/auth/register.js.map +1 -1
- package/dist/server/graphql/mutations/auth/register.mjs +7 -4
- package/dist/server/graphql/mutations/auth/register.mjs.map +1 -1
- package/dist/server/graphql/mutations/auth/reset-password.js +7 -4
- package/dist/server/graphql/mutations/auth/reset-password.js.map +1 -1
- package/dist/server/graphql/mutations/auth/reset-password.mjs +7 -4
- package/dist/server/graphql/mutations/auth/reset-password.mjs.map +1 -1
- package/dist/server/graphql/mutations/crud/role/create-role.js +1 -1
- package/dist/server/graphql/mutations/crud/role/create-role.js.map +1 -1
- package/dist/server/graphql/mutations/crud/role/create-role.mjs +1 -1
- package/dist/server/graphql/mutations/crud/role/create-role.mjs.map +1 -1
- package/dist/server/graphql/mutations/crud/role/delete-role.js.map +1 -1
- package/dist/server/graphql/mutations/crud/role/delete-role.mjs.map +1 -1
- package/dist/server/graphql/mutations/crud/role/update-role.js.map +1 -1
- package/dist/server/graphql/mutations/crud/role/update-role.mjs.map +1 -1
- package/dist/server/graphql/mutations/crud/user/create-user.js +1 -1
- package/dist/server/graphql/mutations/crud/user/create-user.js.map +1 -1
- package/dist/server/graphql/mutations/crud/user/create-user.mjs +1 -1
- package/dist/server/graphql/mutations/crud/user/create-user.mjs.map +1 -1
- package/dist/server/graphql/mutations/crud/user/delete-user.js.map +1 -1
- package/dist/server/graphql/mutations/crud/user/delete-user.mjs.map +1 -1
- package/dist/server/graphql/mutations/crud/user/update-user.js +1 -1
- package/dist/server/graphql/mutations/crud/user/update-user.js.map +1 -1
- package/dist/server/graphql/mutations/crud/user/update-user.mjs +1 -1
- package/dist/server/graphql/mutations/crud/user/update-user.mjs.map +1 -1
- package/dist/server/graphql/mutations/index.js.map +1 -1
- package/dist/server/graphql/mutations/index.mjs.map +1 -1
- package/dist/server/graphql/queries/index.js.map +1 -1
- package/dist/server/graphql/queries/index.mjs.map +1 -1
- package/dist/server/graphql/queries/me.js.map +1 -1
- package/dist/server/graphql/queries/me.mjs.map +1 -1
- package/dist/server/graphql/resolvers-configs.js.map +1 -1
- package/dist/server/graphql/resolvers-configs.mjs.map +1 -1
- package/dist/server/graphql/types/create-role-payload.js.map +1 -1
- package/dist/server/graphql/types/create-role-payload.mjs.map +1 -1
- package/dist/server/graphql/types/delete-role-payload.js.map +1 -1
- package/dist/server/graphql/types/delete-role-payload.mjs.map +1 -1
- package/dist/server/graphql/types/index.js.map +1 -1
- package/dist/server/graphql/types/index.mjs.map +1 -1
- package/dist/server/graphql/types/login-input.js.map +1 -1
- package/dist/server/graphql/types/login-input.mjs.map +1 -1
- package/dist/server/graphql/types/login-payload.js.map +1 -1
- package/dist/server/graphql/types/login-payload.mjs.map +1 -1
- package/dist/server/graphql/types/me-role.js.map +1 -1
- package/dist/server/graphql/types/me-role.mjs.map +1 -1
- package/dist/server/graphql/types/me.js.map +1 -1
- package/dist/server/graphql/types/me.mjs.map +1 -1
- package/dist/server/graphql/types/password-payload.js.map +1 -1
- package/dist/server/graphql/types/password-payload.mjs.map +1 -1
- package/dist/server/graphql/types/register-input.js.map +1 -1
- package/dist/server/graphql/types/register-input.mjs.map +1 -1
- package/dist/server/graphql/types/update-role-payload.js.map +1 -1
- package/dist/server/graphql/types/update-role-payload.mjs.map +1 -1
- package/dist/server/graphql/types/user-input.js.map +1 -1
- package/dist/server/graphql/types/user-input.mjs.map +1 -1
- package/dist/server/graphql/utils.js +4 -4
- package/dist/server/graphql/utils.js.map +1 -1
- package/dist/server/graphql/utils.mjs +4 -4
- package/dist/server/graphql/utils.mjs.map +1 -1
- package/dist/server/index.js +2 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +3 -3
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/index2.js +8 -8
- package/dist/server/index2.js.map +1 -1
- package/dist/server/index2.mjs +8 -8
- package/dist/server/index2.mjs.map +1 -1
- package/dist/server/middlewares/index.js.map +1 -1
- package/dist/server/middlewares/index.mjs.map +1 -1
- package/dist/server/middlewares/rateLimit.js +5 -5
- package/dist/server/middlewares/rateLimit.js.map +1 -1
- package/dist/server/middlewares/rateLimit.mjs +5 -5
- package/dist/server/middlewares/rateLimit.mjs.map +1 -1
- package/dist/server/register.js.map +1 -1
- package/dist/server/register.mjs.map +1 -1
- package/dist/server/routes/admin/index.js.map +1 -1
- package/dist/server/routes/admin/index.mjs.map +1 -1
- package/dist/server/routes/admin/permissions.js.map +1 -1
- package/dist/server/routes/admin/permissions.mjs.map +1 -1
- package/dist/server/routes/admin/role.js.map +1 -1
- package/dist/server/routes/admin/role.mjs.map +1 -1
- package/dist/server/routes/admin/settings.js.map +1 -1
- package/dist/server/routes/admin/settings.mjs.map +1 -1
- package/dist/server/routes/content-api/auth.js.map +1 -1
- package/dist/server/routes/content-api/auth.mjs.map +1 -1
- package/dist/server/routes/content-api/index.js.map +1 -1
- package/dist/server/routes/content-api/index.mjs.map +1 -1
- package/dist/server/routes/content-api/permissions.js.map +1 -1
- package/dist/server/routes/content-api/permissions.mjs.map +1 -1
- package/dist/server/routes/content-api/role.js.map +1 -1
- package/dist/server/routes/content-api/role.mjs.map +1 -1
- package/dist/server/routes/content-api/user.js.map +1 -1
- package/dist/server/routes/content-api/user.mjs.map +1 -1
- package/dist/server/routes/content-api/validation.js.map +1 -1
- package/dist/server/routes/content-api/validation.mjs.map +1 -1
- package/dist/server/routes/index.js.map +1 -1
- package/dist/server/routes/index.mjs.map +1 -1
- package/dist/server/services/constants.js.map +1 -1
- package/dist/server/services/constants.mjs.map +1 -1
- package/dist/server/services/index.js.map +1 -1
- package/dist/server/services/index.mjs.map +1 -1
- package/dist/server/services/jwt.js.map +1 -1
- package/dist/server/services/jwt.mjs.map +1 -1
- package/dist/server/services/permission.js.map +1 -1
- package/dist/server/services/permission.mjs.map +1 -1
- package/dist/server/services/providers-registry.js +188 -248
- package/dist/server/services/providers-registry.js.map +1 -1
- package/dist/server/services/providers-registry.mjs +188 -245
- package/dist/server/services/providers-registry.mjs.map +1 -1
- package/dist/server/services/providers.js +15 -11
- package/dist/server/services/providers.js.map +1 -1
- package/dist/server/services/providers.mjs +14 -10
- package/dist/server/services/providers.mjs.map +1 -1
- package/dist/server/services/role.js +2 -2
- package/dist/server/services/role.js.map +1 -1
- package/dist/server/services/role.mjs +2 -2
- package/dist/server/services/role.mjs.map +1 -1
- package/dist/server/services/user.js +14 -14
- package/dist/server/services/user.js.map +1 -1
- package/dist/server/services/user.mjs +13 -13
- package/dist/server/services/user.mjs.map +1 -1
- package/dist/server/services/users-permissions.js +17 -20
- package/dist/server/services/users-permissions.js.map +1 -1
- package/dist/server/services/users-permissions.mjs +16 -18
- package/dist/server/services/users-permissions.mjs.map +1 -1
- package/dist/server/strategies/users-permissions.js +9 -8
- package/dist/server/strategies/users-permissions.js.map +1 -1
- package/dist/server/strategies/users-permissions.mjs +9 -8
- package/dist/server/strategies/users-permissions.mjs.map +1 -1
- package/dist/server/utils/index.js.map +1 -1
- package/dist/server/utils/index.mjs.map +1 -1
- package/dist/server/utils/oauth-connect/index.js +241 -0
- package/dist/server/utils/oauth-connect/index.js.map +1 -0
- package/dist/server/utils/oauth-connect/index.mjs +235 -0
- package/dist/server/utils/oauth-connect/index.mjs.map +1 -0
- package/dist/server/utils/oauth-connect/oauth1.js +138 -0
- package/dist/server/utils/oauth-connect/oauth1.js.map +1 -0
- package/dist/server/utils/oauth-connect/oauth1.mjs +136 -0
- package/dist/server/utils/oauth-connect/oauth1.mjs.map +1 -0
- package/dist/server/utils/oauth-connect/oauth2.js +117 -0
- package/dist/server/utils/oauth-connect/oauth2.js.map +1 -0
- package/dist/server/utils/oauth-connect/oauth2.mjs +115 -0
- package/dist/server/utils/oauth-connect/oauth2.mjs.map +1 -0
- package/dist/server/utils/oauth-connect/providers.js +109 -0
- package/dist/server/utils/oauth-connect/providers.js.map +1 -0
- package/dist/server/utils/oauth-connect/providers.mjs +107 -0
- package/dist/server/utils/oauth-connect/providers.mjs.map +1 -0
- package/dist/server/utils/provider-http.js +52 -0
- package/dist/server/utils/provider-http.js.map +1 -0
- package/dist/server/utils/provider-http.mjs +50 -0
- package/dist/server/utils/provider-http.mjs.map +1 -0
- package/dist/server/utils/refresh-cookie-options.js.map +1 -1
- package/dist/server/utils/refresh-cookie-options.mjs.map +1 -1
- package/dist/server/utils/sanitize/index.js.map +1 -1
- package/dist/server/utils/sanitize/index.mjs.map +1 -1
- package/dist/server/utils/sanitize/sanitizers.js +1 -1
- package/dist/server/utils/sanitize/sanitizers.js.map +1 -1
- package/dist/server/utils/sanitize/sanitizers.mjs +1 -1
- package/dist/server/utils/sanitize/sanitizers.mjs.map +1 -1
- package/dist/server/utils/sanitize/visitors/index.js.map +1 -1
- package/dist/server/utils/sanitize/visitors/index.mjs.map +1 -1
- package/dist/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.js.map +1 -1
- package/dist/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.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/dist/server/utils/verify-jwt-with-jwks.js +60 -0
- package/dist/server/utils/verify-jwt-with-jwks.js.map +1 -0
- package/dist/server/utils/verify-jwt-with-jwks.mjs +54 -0
- package/dist/server/utils/verify-jwt-with-jwks.mjs.map +1 -0
- package/jsconfig.json +7 -0
- package/package.json +28 -18
- package/rollup.config.mjs +2 -2
- package/server/{controllers → src/controllers}/auth.js +36 -29
- package/server/{controllers → src/controllers}/validation/auth.js +6 -6
- package/server/{controllers → src/controllers}/validation/email-template.js +1 -2
- package/server/{graphql → src/graphql}/mutations/auth/change-password.js +6 -6
- package/server/{graphql → src/graphql}/mutations/auth/email-confirmation.js +1 -1
- package/server/{graphql → src/graphql}/mutations/auth/forgot-password.js +6 -6
- package/server/{graphql → src/graphql}/mutations/auth/login.js +11 -7
- package/server/src/graphql/mutations/auth/rate-limit.js +62 -0
- package/server/{graphql → src/graphql}/mutations/auth/register.js +6 -6
- package/server/{graphql → src/graphql}/mutations/auth/reset-password.js +6 -6
- package/server/{graphql → src/graphql}/mutations/crud/role/create-role.js +1 -1
- package/server/{graphql → src/graphql}/mutations/crud/user/create-user.js +1 -1
- package/server/{graphql → src/graphql}/mutations/crud/user/update-user.js +1 -1
- package/server/{graphql → src/graphql}/utils.js +3 -3
- package/server/{middlewares → src/middlewares}/rateLimit.js +4 -4
- package/server/src/services/providers-registry.js +487 -0
- package/server/{services → src/services}/providers.js +9 -7
- package/server/{services → src/services}/role.js +2 -2
- package/server/{services → src/services}/user.js +16 -6
- package/server/{services → src/services}/users-permissions.js +14 -16
- package/server/{strategies → src/strategies}/users-permissions.js +14 -10
- package/server/src/utils/oauth-connect/index.js +262 -0
- package/server/src/utils/oauth-connect/oauth1.js +169 -0
- package/server/src/utils/oauth-connect/oauth2.js +123 -0
- package/server/src/utils/oauth-connect/providers.js +100 -0
- package/server/src/utils/provider-http.js +49 -0
- package/server/{utils → src/utils}/sanitize/sanitizers.js +1 -1
- package/server/src/utils/trim-grant-session-response.js +70 -0
- package/server/src/utils/verify-jwt-with-jwks.js +43 -0
- package/types/strapi-server.d.ts +65 -0
- package/server/services/providers-registry.js +0 -567
- package/server/utils/index.d.ts +0 -23
- /package/server/{bootstrap → src/bootstrap}/index.js +0 -0
- /package/server/{bootstrap → src/bootstrap}/users-permissions-actions.js +0 -0
- /package/server/{config.js → src/config.js} +0 -0
- /package/server/{content-types → src/content-types}/index.js +0 -0
- /package/server/{content-types → src/content-types}/permission/index.js +0 -0
- /package/server/{content-types → src/content-types}/role/index.js +0 -0
- /package/server/{content-types → src/content-types}/user/index.js +0 -0
- /package/server/{content-types → src/content-types}/user/schema-config.js +0 -0
- /package/server/{controllers → src/controllers}/content-manager-user.js +0 -0
- /package/server/{controllers → src/controllers}/index.js +0 -0
- /package/server/{controllers → src/controllers}/permissions.js +0 -0
- /package/server/{controllers → src/controllers}/role.js +0 -0
- /package/server/{controllers → src/controllers}/settings.js +0 -0
- /package/server/{controllers → src/controllers}/user.js +0 -0
- /package/server/{controllers → src/controllers}/validation/user.js +0 -0
- /package/server/{graphql → src/graphql}/index.js +0 -0
- /package/server/{graphql → src/graphql}/mutations/crud/role/delete-role.js +0 -0
- /package/server/{graphql → src/graphql}/mutations/crud/role/update-role.js +0 -0
- /package/server/{graphql → src/graphql}/mutations/crud/user/delete-user.js +0 -0
- /package/server/{graphql → src/graphql}/mutations/index.js +0 -0
- /package/server/{graphql → src/graphql}/queries/index.js +0 -0
- /package/server/{graphql → src/graphql}/queries/me.js +0 -0
- /package/server/{graphql → src/graphql}/resolvers-configs.js +0 -0
- /package/server/{graphql → src/graphql}/types/create-role-payload.js +0 -0
- /package/server/{graphql → src/graphql}/types/delete-role-payload.js +0 -0
- /package/server/{graphql → src/graphql}/types/index.js +0 -0
- /package/server/{graphql → src/graphql}/types/login-input.js +0 -0
- /package/server/{graphql → src/graphql}/types/login-payload.js +0 -0
- /package/server/{graphql → src/graphql}/types/me-role.js +0 -0
- /package/server/{graphql → src/graphql}/types/me.js +0 -0
- /package/server/{graphql → src/graphql}/types/password-payload.js +0 -0
- /package/server/{graphql → src/graphql}/types/register-input.js +0 -0
- /package/server/{graphql → src/graphql}/types/update-role-payload.js +0 -0
- /package/server/{graphql → src/graphql}/types/user-input.js +0 -0
- /package/server/{index.js → src/index.js} +0 -0
- /package/server/{middlewares → src/middlewares}/index.js +0 -0
- /package/server/{register.js → src/register.js} +0 -0
- /package/server/{routes → src/routes}/admin/index.js +0 -0
- /package/server/{routes → src/routes}/admin/permissions.js +0 -0
- /package/server/{routes → src/routes}/admin/role.js +0 -0
- /package/server/{routes → src/routes}/admin/settings.js +0 -0
- /package/server/{routes → src/routes}/content-api/auth.js +0 -0
- /package/server/{routes → src/routes}/content-api/index.js +0 -0
- /package/server/{routes → src/routes}/content-api/permissions.js +0 -0
- /package/server/{routes → src/routes}/content-api/role.js +0 -0
- /package/server/{routes → src/routes}/content-api/user.js +0 -0
- /package/server/{routes → src/routes}/content-api/validation.js +0 -0
- /package/server/{routes → src/routes}/index.js +0 -0
- /package/server/{services → src/services}/constants.js +0 -0
- /package/server/{services → src/services}/index.js +0 -0
- /package/server/{services → src/services}/jwt.js +0 -0
- /package/server/{services → src/services}/permission.js +0 -0
- /package/server/{utils → src/utils}/index.js +0 -0
- /package/server/{utils → src/utils}/refresh-cookie-options.js +0 -0
- /package/server/{utils → src/utils}/sanitize/index.js +0 -0
- /package/server/{utils → src/utils}/sanitize/visitors/index.js +0 -0
- /package/server/{utils → src/utils}/sanitize/visitors/remove-user-relation-from-role-entities.js +0 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _node_crypto_commonjsExternal = require('../../_virtual/_node_crypto.js');
|
|
4
|
+
|
|
5
|
+
var oauth2;
|
|
6
|
+
var hasRequiredOauth2;
|
|
7
|
+
function requireOauth2() {
|
|
8
|
+
if (hasRequiredOauth2) return oauth2;
|
|
9
|
+
hasRequiredOauth2 = 1;
|
|
10
|
+
const crypto = _node_crypto_commonjsExternal.__require();
|
|
11
|
+
const formatScope = (scope, delimiter = ',')=>{
|
|
12
|
+
if (Array.isArray(scope)) {
|
|
13
|
+
return scope.filter(Boolean).join(delimiter) || undefined;
|
|
14
|
+
}
|
|
15
|
+
return scope || undefined;
|
|
16
|
+
};
|
|
17
|
+
const substituteSubdomain = (url, subdomain)=>subdomain ? url.replace('[subdomain]', subdomain) : url;
|
|
18
|
+
const buildAuthorizeUrl = (provider, { key, redirectUri, scope, subdomain })=>{
|
|
19
|
+
const authorizeUrl = substituteSubdomain(provider.authorize_url, subdomain);
|
|
20
|
+
const params = new URLSearchParams({
|
|
21
|
+
client_id: key,
|
|
22
|
+
response_type: 'code',
|
|
23
|
+
redirect_uri: redirectUri
|
|
24
|
+
});
|
|
25
|
+
const formattedScope = formatScope(scope, provider.scope_delimiter);
|
|
26
|
+
if (formattedScope) {
|
|
27
|
+
params.set('scope', formattedScope);
|
|
28
|
+
}
|
|
29
|
+
if (provider.name === 'instagram' && /^\d+$/.test(key)) {
|
|
30
|
+
params.delete('client_id');
|
|
31
|
+
params.set('app_id', key);
|
|
32
|
+
if (formattedScope) {
|
|
33
|
+
params.set('scope', formattedScope.replaceAll(' ', ','));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return `${authorizeUrl}?${params.toString()}`;
|
|
37
|
+
};
|
|
38
|
+
const parseTokenResponse = async (response)=>{
|
|
39
|
+
const contentType = response.headers.get('content-type') || '';
|
|
40
|
+
if (contentType.includes('application/json')) {
|
|
41
|
+
return response.json();
|
|
42
|
+
}
|
|
43
|
+
const text = await response.text();
|
|
44
|
+
return Object.fromEntries(new URLSearchParams(text));
|
|
45
|
+
};
|
|
46
|
+
const exchangeAuthorizationCode = async (provider, { key, secret, redirectUri, code, subdomain })=>{
|
|
47
|
+
const accessUrl = substituteSubdomain(provider.access_url, subdomain);
|
|
48
|
+
const body = new URLSearchParams({
|
|
49
|
+
grant_type: 'authorization_code',
|
|
50
|
+
code,
|
|
51
|
+
redirect_uri: redirectUri,
|
|
52
|
+
client_id: key,
|
|
53
|
+
client_secret: secret
|
|
54
|
+
});
|
|
55
|
+
const headers = {
|
|
56
|
+
'Content-Type': 'application/x-www-form-urlencoded'
|
|
57
|
+
};
|
|
58
|
+
if (provider.token_endpoint_auth_method === 'client_secret_basic') {
|
|
59
|
+
const credentials = Buffer.from(`${key}:${secret}`).toString('base64');
|
|
60
|
+
headers.Authorization = `Basic ${credentials}`;
|
|
61
|
+
body.delete('client_id');
|
|
62
|
+
body.delete('client_secret');
|
|
63
|
+
}
|
|
64
|
+
if (provider.name === 'instagram' && /^\d+$/.test(key)) {
|
|
65
|
+
body.delete('client_id');
|
|
66
|
+
body.delete('client_secret');
|
|
67
|
+
body.set('app_id', key);
|
|
68
|
+
body.set('app_secret', secret);
|
|
69
|
+
}
|
|
70
|
+
const response = await fetch(accessUrl, {
|
|
71
|
+
method: 'POST',
|
|
72
|
+
headers,
|
|
73
|
+
body
|
|
74
|
+
});
|
|
75
|
+
const output = await parseTokenResponse(response);
|
|
76
|
+
if (!response.ok) {
|
|
77
|
+
throw new Error(output.error_description || output.error || `Token exchange failed (${response.status})`);
|
|
78
|
+
}
|
|
79
|
+
return output;
|
|
80
|
+
};
|
|
81
|
+
const tokensToQueryPayload = (provider, tokenResponse)=>{
|
|
82
|
+
const data = {
|
|
83
|
+
raw: tokenResponse
|
|
84
|
+
};
|
|
85
|
+
if (provider.oauth === 1) {
|
|
86
|
+
if (tokenResponse.oauth_token) {
|
|
87
|
+
data.access_token = tokenResponse.oauth_token;
|
|
88
|
+
}
|
|
89
|
+
if (tokenResponse.oauth_token_secret) {
|
|
90
|
+
data.access_secret = tokenResponse.oauth_token_secret;
|
|
91
|
+
}
|
|
92
|
+
return data;
|
|
93
|
+
}
|
|
94
|
+
if (tokenResponse.id_token) {
|
|
95
|
+
data.id_token = tokenResponse.id_token;
|
|
96
|
+
}
|
|
97
|
+
if (tokenResponse.access_token) {
|
|
98
|
+
data.access_token = tokenResponse.access_token;
|
|
99
|
+
}
|
|
100
|
+
if (tokenResponse.refresh_token) {
|
|
101
|
+
data.refresh_token = tokenResponse.refresh_token;
|
|
102
|
+
}
|
|
103
|
+
return data;
|
|
104
|
+
};
|
|
105
|
+
const generateState = ()=>crypto.randomBytes(20).toString('hex');
|
|
106
|
+
oauth2 = {
|
|
107
|
+
buildAuthorizeUrl,
|
|
108
|
+
exchangeAuthorizationCode,
|
|
109
|
+
tokensToQueryPayload,
|
|
110
|
+
generateState,
|
|
111
|
+
substituteSubdomain
|
|
112
|
+
};
|
|
113
|
+
return oauth2;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
exports.__require = requireOauth2;
|
|
117
|
+
//# sourceMappingURL=oauth2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth2.js","sources":["../../../../server/src/utils/oauth-connect/oauth2.js"],"sourcesContent":["'use strict';\n\nconst crypto = require('node:crypto');\n\nconst formatScope = (scope, delimiter = ',') => {\n if (Array.isArray(scope)) {\n return scope.filter(Boolean).join(delimiter) || undefined;\n }\n return scope || undefined;\n};\n\nconst substituteSubdomain = (url, subdomain) =>\n subdomain ? url.replace('[subdomain]', subdomain) : url;\n\nconst buildAuthorizeUrl = (provider, { key, redirectUri, scope, subdomain }) => {\n const authorizeUrl = substituteSubdomain(provider.authorize_url, subdomain);\n const params = new URLSearchParams({\n client_id: key,\n response_type: 'code',\n redirect_uri: redirectUri,\n });\n\n const formattedScope = formatScope(scope, provider.scope_delimiter);\n if (formattedScope) {\n params.set('scope', formattedScope);\n }\n\n if (provider.name === 'instagram' && /^\\d+$/.test(key)) {\n params.delete('client_id');\n params.set('app_id', key);\n if (formattedScope) {\n params.set('scope', formattedScope.replaceAll(' ', ','));\n }\n }\n\n return `${authorizeUrl}?${params.toString()}`;\n};\n\nconst parseTokenResponse = async (response) => {\n const contentType = response.headers.get('content-type') || '';\n if (contentType.includes('application/json')) {\n return response.json();\n }\n const text = await response.text();\n return Object.fromEntries(new URLSearchParams(text));\n};\n\nconst exchangeAuthorizationCode = async (\n provider,\n { key, secret, redirectUri, code, subdomain }\n) => {\n const accessUrl = substituteSubdomain(provider.access_url, subdomain);\n const body = new URLSearchParams({\n grant_type: 'authorization_code',\n code,\n redirect_uri: redirectUri,\n client_id: key,\n client_secret: secret,\n });\n\n const headers = { 'Content-Type': 'application/x-www-form-urlencoded' };\n\n if (provider.token_endpoint_auth_method === 'client_secret_basic') {\n const credentials = Buffer.from(`${key}:${secret}`).toString('base64');\n headers.Authorization = `Basic ${credentials}`;\n body.delete('client_id');\n body.delete('client_secret');\n }\n\n if (provider.name === 'instagram' && /^\\d+$/.test(key)) {\n body.delete('client_id');\n body.delete('client_secret');\n body.set('app_id', key);\n body.set('app_secret', secret);\n }\n\n const response = await fetch(accessUrl, { method: 'POST', headers, body });\n const output = await parseTokenResponse(response);\n\n if (!response.ok) {\n throw new Error(\n output.error_description || output.error || `Token exchange failed (${response.status})`\n );\n }\n\n return output;\n};\n\nconst tokensToQueryPayload = (provider, tokenResponse) => {\n const data = { raw: tokenResponse };\n\n if (provider.oauth === 1) {\n if (tokenResponse.oauth_token) {\n data.access_token = tokenResponse.oauth_token;\n }\n if (tokenResponse.oauth_token_secret) {\n data.access_secret = tokenResponse.oauth_token_secret;\n }\n return data;\n }\n\n if (tokenResponse.id_token) {\n data.id_token = tokenResponse.id_token;\n }\n if (tokenResponse.access_token) {\n data.access_token = tokenResponse.access_token;\n }\n if (tokenResponse.refresh_token) {\n data.refresh_token = tokenResponse.refresh_token;\n }\n\n return data;\n};\n\nconst generateState = () => crypto.randomBytes(20).toString('hex');\n\nmodule.exports = {\n buildAuthorizeUrl,\n exchangeAuthorizationCode,\n tokensToQueryPayload,\n generateState,\n substituteSubdomain,\n};\n"],"names":["crypto","require$$0","formatScope","scope","delimiter","Array","isArray","filter","Boolean","join","undefined","substituteSubdomain","url","subdomain","replace","buildAuthorizeUrl","provider","key","redirectUri","authorizeUrl","authorize_url","params","URLSearchParams","client_id","response_type","redirect_uri","formattedScope","scope_delimiter","set","name","test","delete","replaceAll","toString","parseTokenResponse","response","contentType","headers","get","includes","json","text","Object","fromEntries","exchangeAuthorizationCode","secret","code","accessUrl","access_url","body","grant_type","client_secret","token_endpoint_auth_method","credentials","Buffer","from","Authorization","fetch","method","output","ok","Error","error_description","error","status","tokensToQueryPayload","tokenResponse","data","raw","oauth","oauth_token","access_token","oauth_token_secret","access_secret","id_token","refresh_token","generateState","randomBytes","oauth2"],"mappings":"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"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { __require } from '../../_virtual/_node_crypto.mjs';
|
|
2
|
+
|
|
3
|
+
var oauth2;
|
|
4
|
+
var hasRequiredOauth2;
|
|
5
|
+
function requireOauth2() {
|
|
6
|
+
if (hasRequiredOauth2) return oauth2;
|
|
7
|
+
hasRequiredOauth2 = 1;
|
|
8
|
+
const crypto = __require();
|
|
9
|
+
const formatScope = (scope, delimiter = ',')=>{
|
|
10
|
+
if (Array.isArray(scope)) {
|
|
11
|
+
return scope.filter(Boolean).join(delimiter) || undefined;
|
|
12
|
+
}
|
|
13
|
+
return scope || undefined;
|
|
14
|
+
};
|
|
15
|
+
const substituteSubdomain = (url, subdomain)=>subdomain ? url.replace('[subdomain]', subdomain) : url;
|
|
16
|
+
const buildAuthorizeUrl = (provider, { key, redirectUri, scope, subdomain })=>{
|
|
17
|
+
const authorizeUrl = substituteSubdomain(provider.authorize_url, subdomain);
|
|
18
|
+
const params = new URLSearchParams({
|
|
19
|
+
client_id: key,
|
|
20
|
+
response_type: 'code',
|
|
21
|
+
redirect_uri: redirectUri
|
|
22
|
+
});
|
|
23
|
+
const formattedScope = formatScope(scope, provider.scope_delimiter);
|
|
24
|
+
if (formattedScope) {
|
|
25
|
+
params.set('scope', formattedScope);
|
|
26
|
+
}
|
|
27
|
+
if (provider.name === 'instagram' && /^\d+$/.test(key)) {
|
|
28
|
+
params.delete('client_id');
|
|
29
|
+
params.set('app_id', key);
|
|
30
|
+
if (formattedScope) {
|
|
31
|
+
params.set('scope', formattedScope.replaceAll(' ', ','));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return `${authorizeUrl}?${params.toString()}`;
|
|
35
|
+
};
|
|
36
|
+
const parseTokenResponse = async (response)=>{
|
|
37
|
+
const contentType = response.headers.get('content-type') || '';
|
|
38
|
+
if (contentType.includes('application/json')) {
|
|
39
|
+
return response.json();
|
|
40
|
+
}
|
|
41
|
+
const text = await response.text();
|
|
42
|
+
return Object.fromEntries(new URLSearchParams(text));
|
|
43
|
+
};
|
|
44
|
+
const exchangeAuthorizationCode = async (provider, { key, secret, redirectUri, code, subdomain })=>{
|
|
45
|
+
const accessUrl = substituteSubdomain(provider.access_url, subdomain);
|
|
46
|
+
const body = new URLSearchParams({
|
|
47
|
+
grant_type: 'authorization_code',
|
|
48
|
+
code,
|
|
49
|
+
redirect_uri: redirectUri,
|
|
50
|
+
client_id: key,
|
|
51
|
+
client_secret: secret
|
|
52
|
+
});
|
|
53
|
+
const headers = {
|
|
54
|
+
'Content-Type': 'application/x-www-form-urlencoded'
|
|
55
|
+
};
|
|
56
|
+
if (provider.token_endpoint_auth_method === 'client_secret_basic') {
|
|
57
|
+
const credentials = Buffer.from(`${key}:${secret}`).toString('base64');
|
|
58
|
+
headers.Authorization = `Basic ${credentials}`;
|
|
59
|
+
body.delete('client_id');
|
|
60
|
+
body.delete('client_secret');
|
|
61
|
+
}
|
|
62
|
+
if (provider.name === 'instagram' && /^\d+$/.test(key)) {
|
|
63
|
+
body.delete('client_id');
|
|
64
|
+
body.delete('client_secret');
|
|
65
|
+
body.set('app_id', key);
|
|
66
|
+
body.set('app_secret', secret);
|
|
67
|
+
}
|
|
68
|
+
const response = await fetch(accessUrl, {
|
|
69
|
+
method: 'POST',
|
|
70
|
+
headers,
|
|
71
|
+
body
|
|
72
|
+
});
|
|
73
|
+
const output = await parseTokenResponse(response);
|
|
74
|
+
if (!response.ok) {
|
|
75
|
+
throw new Error(output.error_description || output.error || `Token exchange failed (${response.status})`);
|
|
76
|
+
}
|
|
77
|
+
return output;
|
|
78
|
+
};
|
|
79
|
+
const tokensToQueryPayload = (provider, tokenResponse)=>{
|
|
80
|
+
const data = {
|
|
81
|
+
raw: tokenResponse
|
|
82
|
+
};
|
|
83
|
+
if (provider.oauth === 1) {
|
|
84
|
+
if (tokenResponse.oauth_token) {
|
|
85
|
+
data.access_token = tokenResponse.oauth_token;
|
|
86
|
+
}
|
|
87
|
+
if (tokenResponse.oauth_token_secret) {
|
|
88
|
+
data.access_secret = tokenResponse.oauth_token_secret;
|
|
89
|
+
}
|
|
90
|
+
return data;
|
|
91
|
+
}
|
|
92
|
+
if (tokenResponse.id_token) {
|
|
93
|
+
data.id_token = tokenResponse.id_token;
|
|
94
|
+
}
|
|
95
|
+
if (tokenResponse.access_token) {
|
|
96
|
+
data.access_token = tokenResponse.access_token;
|
|
97
|
+
}
|
|
98
|
+
if (tokenResponse.refresh_token) {
|
|
99
|
+
data.refresh_token = tokenResponse.refresh_token;
|
|
100
|
+
}
|
|
101
|
+
return data;
|
|
102
|
+
};
|
|
103
|
+
const generateState = ()=>crypto.randomBytes(20).toString('hex');
|
|
104
|
+
oauth2 = {
|
|
105
|
+
buildAuthorizeUrl,
|
|
106
|
+
exchangeAuthorizationCode,
|
|
107
|
+
tokensToQueryPayload,
|
|
108
|
+
generateState,
|
|
109
|
+
substituteSubdomain
|
|
110
|
+
};
|
|
111
|
+
return oauth2;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
export { requireOauth2 as __require };
|
|
115
|
+
//# sourceMappingURL=oauth2.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth2.mjs","sources":["../../../../server/src/utils/oauth-connect/oauth2.js"],"sourcesContent":["'use strict';\n\nconst crypto = require('node:crypto');\n\nconst formatScope = (scope, delimiter = ',') => {\n if (Array.isArray(scope)) {\n return scope.filter(Boolean).join(delimiter) || undefined;\n }\n return scope || undefined;\n};\n\nconst substituteSubdomain = (url, subdomain) =>\n subdomain ? url.replace('[subdomain]', subdomain) : url;\n\nconst buildAuthorizeUrl = (provider, { key, redirectUri, scope, subdomain }) => {\n const authorizeUrl = substituteSubdomain(provider.authorize_url, subdomain);\n const params = new URLSearchParams({\n client_id: key,\n response_type: 'code',\n redirect_uri: redirectUri,\n });\n\n const formattedScope = formatScope(scope, provider.scope_delimiter);\n if (formattedScope) {\n params.set('scope', formattedScope);\n }\n\n if (provider.name === 'instagram' && /^\\d+$/.test(key)) {\n params.delete('client_id');\n params.set('app_id', key);\n if (formattedScope) {\n params.set('scope', formattedScope.replaceAll(' ', ','));\n }\n }\n\n return `${authorizeUrl}?${params.toString()}`;\n};\n\nconst parseTokenResponse = async (response) => {\n const contentType = response.headers.get('content-type') || '';\n if (contentType.includes('application/json')) {\n return response.json();\n }\n const text = await response.text();\n return Object.fromEntries(new URLSearchParams(text));\n};\n\nconst exchangeAuthorizationCode = async (\n provider,\n { key, secret, redirectUri, code, subdomain }\n) => {\n const accessUrl = substituteSubdomain(provider.access_url, subdomain);\n const body = new URLSearchParams({\n grant_type: 'authorization_code',\n code,\n redirect_uri: redirectUri,\n client_id: key,\n client_secret: secret,\n });\n\n const headers = { 'Content-Type': 'application/x-www-form-urlencoded' };\n\n if (provider.token_endpoint_auth_method === 'client_secret_basic') {\n const credentials = Buffer.from(`${key}:${secret}`).toString('base64');\n headers.Authorization = `Basic ${credentials}`;\n body.delete('client_id');\n body.delete('client_secret');\n }\n\n if (provider.name === 'instagram' && /^\\d+$/.test(key)) {\n body.delete('client_id');\n body.delete('client_secret');\n body.set('app_id', key);\n body.set('app_secret', secret);\n }\n\n const response = await fetch(accessUrl, { method: 'POST', headers, body });\n const output = await parseTokenResponse(response);\n\n if (!response.ok) {\n throw new Error(\n output.error_description || output.error || `Token exchange failed (${response.status})`\n );\n }\n\n return output;\n};\n\nconst tokensToQueryPayload = (provider, tokenResponse) => {\n const data = { raw: tokenResponse };\n\n if (provider.oauth === 1) {\n if (tokenResponse.oauth_token) {\n data.access_token = tokenResponse.oauth_token;\n }\n if (tokenResponse.oauth_token_secret) {\n data.access_secret = tokenResponse.oauth_token_secret;\n }\n return data;\n }\n\n if (tokenResponse.id_token) {\n data.id_token = tokenResponse.id_token;\n }\n if (tokenResponse.access_token) {\n data.access_token = tokenResponse.access_token;\n }\n if (tokenResponse.refresh_token) {\n data.refresh_token = tokenResponse.refresh_token;\n }\n\n return data;\n};\n\nconst generateState = () => crypto.randomBytes(20).toString('hex');\n\nmodule.exports = {\n buildAuthorizeUrl,\n exchangeAuthorizationCode,\n tokensToQueryPayload,\n generateState,\n substituteSubdomain,\n};\n"],"names":["crypto","require$$0","formatScope","scope","delimiter","Array","isArray","filter","Boolean","join","undefined","substituteSubdomain","url","subdomain","replace","buildAuthorizeUrl","provider","key","redirectUri","authorizeUrl","authorize_url","params","URLSearchParams","client_id","response_type","redirect_uri","formattedScope","scope_delimiter","set","name","test","delete","replaceAll","toString","parseTokenResponse","response","contentType","headers","get","includes","json","text","Object","fromEntries","exchangeAuthorizationCode","secret","code","accessUrl","access_url","body","grant_type","client_secret","token_endpoint_auth_method","credentials","Buffer","from","Authorization","fetch","method","output","ok","Error","error_description","error","status","tokensToQueryPayload","tokenResponse","data","raw","oauth","oauth_token","access_token","oauth_token_secret","access_secret","id_token","refresh_token","generateState","randomBytes","oauth2"],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var providers;
|
|
4
|
+
var hasRequiredProviders;
|
|
5
|
+
function requireProviders() {
|
|
6
|
+
if (hasRequiredProviders) return providers;
|
|
7
|
+
hasRequiredProviders = 1;
|
|
8
|
+
/**
|
|
9
|
+
* OAuth endpoint definitions for built-in users-permissions providers.
|
|
10
|
+
* Derived from grant's oauth.json (MIT) — inlined to drop the grant dependency.
|
|
11
|
+
*/ providers = {
|
|
12
|
+
discord: {
|
|
13
|
+
oauth: 2,
|
|
14
|
+
authorize_url: 'https://discord.com/api/oauth2/authorize',
|
|
15
|
+
access_url: 'https://discord.com/api/oauth2/token',
|
|
16
|
+
scope_delimiter: ' '
|
|
17
|
+
},
|
|
18
|
+
facebook: {
|
|
19
|
+
oauth: 2,
|
|
20
|
+
authorize_url: 'https://www.facebook.com/dialog/oauth',
|
|
21
|
+
access_url: 'https://graph.facebook.com/oauth/access_token'
|
|
22
|
+
},
|
|
23
|
+
google: {
|
|
24
|
+
oauth: 2,
|
|
25
|
+
authorize_url: 'https://accounts.google.com/o/oauth2/v2/auth',
|
|
26
|
+
access_url: 'https://oauth2.googleapis.com/token',
|
|
27
|
+
scope_delimiter: ' '
|
|
28
|
+
},
|
|
29
|
+
github: {
|
|
30
|
+
oauth: 2,
|
|
31
|
+
authorize_url: 'https://github.com/login/oauth/authorize',
|
|
32
|
+
access_url: 'https://github.com/login/oauth/access_token'
|
|
33
|
+
},
|
|
34
|
+
microsoft: {
|
|
35
|
+
oauth: 2,
|
|
36
|
+
authorize_url: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',
|
|
37
|
+
access_url: 'https://login.microsoftonline.com/common/oauth2/v2.0/token',
|
|
38
|
+
scope_delimiter: ' '
|
|
39
|
+
},
|
|
40
|
+
twitter: {
|
|
41
|
+
oauth: 1,
|
|
42
|
+
request_url: 'https://api.twitter.com/oauth/request_token',
|
|
43
|
+
authorize_url: 'https://api.twitter.com/oauth/authenticate',
|
|
44
|
+
access_url: 'https://api.twitter.com/oauth/access_token'
|
|
45
|
+
},
|
|
46
|
+
instagram: {
|
|
47
|
+
oauth: 2,
|
|
48
|
+
authorize_url: 'https://api.instagram.com/oauth/authorize',
|
|
49
|
+
access_url: 'https://api.instagram.com/oauth/access_token',
|
|
50
|
+
scope_delimiter: ' '
|
|
51
|
+
},
|
|
52
|
+
vk: {
|
|
53
|
+
oauth: 2,
|
|
54
|
+
authorize_url: 'https://oauth.vk.com/authorize',
|
|
55
|
+
access_url: 'https://oauth.vk.com/access_token'
|
|
56
|
+
},
|
|
57
|
+
twitch: {
|
|
58
|
+
oauth: 2,
|
|
59
|
+
authorize_url: 'https://id.twitch.tv/oauth2/authorize',
|
|
60
|
+
access_url: 'https://id.twitch.tv/oauth2/token',
|
|
61
|
+
scope_delimiter: ' '
|
|
62
|
+
},
|
|
63
|
+
linkedin: {
|
|
64
|
+
oauth: 2,
|
|
65
|
+
authorize_url: 'https://www.linkedin.com/oauth/v2/authorization',
|
|
66
|
+
access_url: 'https://www.linkedin.com/oauth/v2/accessToken',
|
|
67
|
+
scope_delimiter: ' '
|
|
68
|
+
},
|
|
69
|
+
cognito: {
|
|
70
|
+
oauth: 2,
|
|
71
|
+
authorize_url: 'https://[subdomain]/oauth2/authorize',
|
|
72
|
+
access_url: 'https://[subdomain]/oauth2/token',
|
|
73
|
+
scope_delimiter: ' '
|
|
74
|
+
},
|
|
75
|
+
reddit: {
|
|
76
|
+
oauth: 2,
|
|
77
|
+
authorize_url: 'https://ssl.reddit.com/api/v1/authorize',
|
|
78
|
+
access_url: 'https://ssl.reddit.com/api/v1/access_token',
|
|
79
|
+
token_endpoint_auth_method: 'client_secret_basic'
|
|
80
|
+
},
|
|
81
|
+
auth0: {
|
|
82
|
+
oauth: 2,
|
|
83
|
+
authorize_url: 'https://[subdomain].auth0.com/authorize',
|
|
84
|
+
access_url: 'https://[subdomain].auth0.com/oauth/token',
|
|
85
|
+
scope_delimiter: ' '
|
|
86
|
+
},
|
|
87
|
+
cas: {
|
|
88
|
+
oauth: 2,
|
|
89
|
+
authorize_url: 'https://[subdomain]/oidc/authorize',
|
|
90
|
+
access_url: 'https://[subdomain]/oidc/token'
|
|
91
|
+
},
|
|
92
|
+
patreon: {
|
|
93
|
+
oauth: 2,
|
|
94
|
+
authorize_url: 'https://www.patreon.com/oauth2/authorize',
|
|
95
|
+
access_url: 'https://www.patreon.com/api/oauth2/token',
|
|
96
|
+
scope_delimiter: ' '
|
|
97
|
+
},
|
|
98
|
+
keycloak: {
|
|
99
|
+
oauth: 2,
|
|
100
|
+
authorize_url: 'https://[subdomain]/protocol/openid-connect/auth',
|
|
101
|
+
access_url: 'https://[subdomain]/protocol/openid-connect/token',
|
|
102
|
+
scope_delimiter: ' '
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
return providers;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
exports.__require = requireProviders;
|
|
109
|
+
//# sourceMappingURL=providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.js","sources":["../../../../server/src/utils/oauth-connect/providers.js"],"sourcesContent":["'use strict';\n\n/**\n * OAuth endpoint definitions for built-in users-permissions providers.\n * Derived from grant's oauth.json (MIT) — inlined to drop the grant dependency.\n */\nmodule.exports = {\n discord: {\n oauth: 2,\n authorize_url: 'https://discord.com/api/oauth2/authorize',\n access_url: 'https://discord.com/api/oauth2/token',\n scope_delimiter: ' ',\n },\n facebook: {\n oauth: 2,\n authorize_url: 'https://www.facebook.com/dialog/oauth',\n access_url: 'https://graph.facebook.com/oauth/access_token',\n },\n google: {\n oauth: 2,\n authorize_url: 'https://accounts.google.com/o/oauth2/v2/auth',\n access_url: 'https://oauth2.googleapis.com/token',\n scope_delimiter: ' ',\n },\n github: {\n oauth: 2,\n authorize_url: 'https://github.com/login/oauth/authorize',\n access_url: 'https://github.com/login/oauth/access_token',\n },\n microsoft: {\n oauth: 2,\n authorize_url: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',\n access_url: 'https://login.microsoftonline.com/common/oauth2/v2.0/token',\n scope_delimiter: ' ',\n },\n twitter: {\n oauth: 1,\n request_url: 'https://api.twitter.com/oauth/request_token',\n authorize_url: 'https://api.twitter.com/oauth/authenticate',\n access_url: 'https://api.twitter.com/oauth/access_token',\n },\n instagram: {\n oauth: 2,\n authorize_url: 'https://api.instagram.com/oauth/authorize',\n access_url: 'https://api.instagram.com/oauth/access_token',\n scope_delimiter: ' ',\n },\n vk: {\n oauth: 2,\n authorize_url: 'https://oauth.vk.com/authorize',\n access_url: 'https://oauth.vk.com/access_token',\n },\n twitch: {\n oauth: 2,\n authorize_url: 'https://id.twitch.tv/oauth2/authorize',\n access_url: 'https://id.twitch.tv/oauth2/token',\n scope_delimiter: ' ',\n },\n linkedin: {\n oauth: 2,\n authorize_url: 'https://www.linkedin.com/oauth/v2/authorization',\n access_url: 'https://www.linkedin.com/oauth/v2/accessToken',\n scope_delimiter: ' ',\n },\n cognito: {\n oauth: 2,\n authorize_url: 'https://[subdomain]/oauth2/authorize',\n access_url: 'https://[subdomain]/oauth2/token',\n scope_delimiter: ' ',\n },\n reddit: {\n oauth: 2,\n authorize_url: 'https://ssl.reddit.com/api/v1/authorize',\n access_url: 'https://ssl.reddit.com/api/v1/access_token',\n token_endpoint_auth_method: 'client_secret_basic',\n },\n auth0: {\n oauth: 2,\n authorize_url: 'https://[subdomain].auth0.com/authorize',\n access_url: 'https://[subdomain].auth0.com/oauth/token',\n scope_delimiter: ' ',\n },\n cas: {\n oauth: 2,\n authorize_url: 'https://[subdomain]/oidc/authorize',\n access_url: 'https://[subdomain]/oidc/token',\n },\n patreon: {\n oauth: 2,\n authorize_url: 'https://www.patreon.com/oauth2/authorize',\n access_url: 'https://www.patreon.com/api/oauth2/token',\n scope_delimiter: ' ',\n },\n keycloak: {\n oauth: 2,\n authorize_url: 'https://[subdomain]/protocol/openid-connect/auth',\n access_url: 'https://[subdomain]/protocol/openid-connect/token',\n scope_delimiter: ' ',\n },\n};\n"],"names":["providers","discord","oauth","authorize_url","access_url","scope_delimiter","facebook","google","github","microsoft","twitter","request_url","instagram","vk","twitch","linkedin","cognito","reddit","token_endpoint_auth_method","auth0","cas","patreon","keycloak"],"mappings":";;;;;;;AAEA;;;AAGA,KACAA,SAAAA,GAAiB;QACfC,OAAAA,EAAS;YACPC,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,0CAAA;YACfC,UAAAA,EAAY,sCAAA;YACZC,eAAAA,EAAiB;AACrB,SAAA;QACEC,QAAAA,EAAU;YACRJ,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,uCAAA;YACfC,UAAAA,EAAY;AAChB,SAAA;QACEG,MAAAA,EAAQ;YACNL,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,8CAAA;YACfC,UAAAA,EAAY,qCAAA;YACZC,eAAAA,EAAiB;AACrB,SAAA;QACEG,MAAAA,EAAQ;YACNN,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,0CAAA;YACfC,UAAAA,EAAY;AAChB,SAAA;QACEK,SAAAA,EAAW;YACTP,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,gEAAA;YACfC,UAAAA,EAAY,4DAAA;YACZC,eAAAA,EAAiB;AACrB,SAAA;QACEK,OAAAA,EAAS;YACPR,KAAAA,EAAO,CAAA;YACPS,WAAAA,EAAa,6CAAA;YACbR,aAAAA,EAAe,4CAAA;YACfC,UAAAA,EAAY;AAChB,SAAA;QACEQ,SAAAA,EAAW;YACTV,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,2CAAA;YACfC,UAAAA,EAAY,8CAAA;YACZC,eAAAA,EAAiB;AACrB,SAAA;QACEQ,EAAAA,EAAI;YACFX,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,gCAAA;YACfC,UAAAA,EAAY;AAChB,SAAA;QACEU,MAAAA,EAAQ;YACNZ,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,uCAAA;YACfC,UAAAA,EAAY,mCAAA;YACZC,eAAAA,EAAiB;AACrB,SAAA;QACEU,QAAAA,EAAU;YACRb,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,iDAAA;YACfC,UAAAA,EAAY,+CAAA;YACZC,eAAAA,EAAiB;AACrB,SAAA;QACEW,OAAAA,EAAS;YACPd,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,sCAAA;YACfC,UAAAA,EAAY,kCAAA;YACZC,eAAAA,EAAiB;AACrB,SAAA;QACEY,MAAAA,EAAQ;YACNf,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,yCAAA;YACfC,UAAAA,EAAY,4CAAA;YACZc,0BAAAA,EAA4B;AAChC,SAAA;QACEC,KAAAA,EAAO;YACLjB,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,yCAAA;YACfC,UAAAA,EAAY,2CAAA;YACZC,eAAAA,EAAiB;AACrB,SAAA;QACEe,GAAAA,EAAK;YACHlB,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,oCAAA;YACfC,UAAAA,EAAY;AAChB,SAAA;QACEiB,OAAAA,EAAS;YACPnB,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,0CAAA;YACfC,UAAAA,EAAY,0CAAA;YACZC,eAAAA,EAAiB;AACrB,SAAA;QACEiB,QAAAA,EAAU;YACRpB,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,kDAAA;YACfC,UAAAA,EAAY,mDAAA;YACZC,eAAAA,EAAiB;AACrB;AACA,KAAA;;;;;;"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
var providers;
|
|
2
|
+
var hasRequiredProviders;
|
|
3
|
+
function requireProviders() {
|
|
4
|
+
if (hasRequiredProviders) return providers;
|
|
5
|
+
hasRequiredProviders = 1;
|
|
6
|
+
/**
|
|
7
|
+
* OAuth endpoint definitions for built-in users-permissions providers.
|
|
8
|
+
* Derived from grant's oauth.json (MIT) — inlined to drop the grant dependency.
|
|
9
|
+
*/ providers = {
|
|
10
|
+
discord: {
|
|
11
|
+
oauth: 2,
|
|
12
|
+
authorize_url: 'https://discord.com/api/oauth2/authorize',
|
|
13
|
+
access_url: 'https://discord.com/api/oauth2/token',
|
|
14
|
+
scope_delimiter: ' '
|
|
15
|
+
},
|
|
16
|
+
facebook: {
|
|
17
|
+
oauth: 2,
|
|
18
|
+
authorize_url: 'https://www.facebook.com/dialog/oauth',
|
|
19
|
+
access_url: 'https://graph.facebook.com/oauth/access_token'
|
|
20
|
+
},
|
|
21
|
+
google: {
|
|
22
|
+
oauth: 2,
|
|
23
|
+
authorize_url: 'https://accounts.google.com/o/oauth2/v2/auth',
|
|
24
|
+
access_url: 'https://oauth2.googleapis.com/token',
|
|
25
|
+
scope_delimiter: ' '
|
|
26
|
+
},
|
|
27
|
+
github: {
|
|
28
|
+
oauth: 2,
|
|
29
|
+
authorize_url: 'https://github.com/login/oauth/authorize',
|
|
30
|
+
access_url: 'https://github.com/login/oauth/access_token'
|
|
31
|
+
},
|
|
32
|
+
microsoft: {
|
|
33
|
+
oauth: 2,
|
|
34
|
+
authorize_url: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',
|
|
35
|
+
access_url: 'https://login.microsoftonline.com/common/oauth2/v2.0/token',
|
|
36
|
+
scope_delimiter: ' '
|
|
37
|
+
},
|
|
38
|
+
twitter: {
|
|
39
|
+
oauth: 1,
|
|
40
|
+
request_url: 'https://api.twitter.com/oauth/request_token',
|
|
41
|
+
authorize_url: 'https://api.twitter.com/oauth/authenticate',
|
|
42
|
+
access_url: 'https://api.twitter.com/oauth/access_token'
|
|
43
|
+
},
|
|
44
|
+
instagram: {
|
|
45
|
+
oauth: 2,
|
|
46
|
+
authorize_url: 'https://api.instagram.com/oauth/authorize',
|
|
47
|
+
access_url: 'https://api.instagram.com/oauth/access_token',
|
|
48
|
+
scope_delimiter: ' '
|
|
49
|
+
},
|
|
50
|
+
vk: {
|
|
51
|
+
oauth: 2,
|
|
52
|
+
authorize_url: 'https://oauth.vk.com/authorize',
|
|
53
|
+
access_url: 'https://oauth.vk.com/access_token'
|
|
54
|
+
},
|
|
55
|
+
twitch: {
|
|
56
|
+
oauth: 2,
|
|
57
|
+
authorize_url: 'https://id.twitch.tv/oauth2/authorize',
|
|
58
|
+
access_url: 'https://id.twitch.tv/oauth2/token',
|
|
59
|
+
scope_delimiter: ' '
|
|
60
|
+
},
|
|
61
|
+
linkedin: {
|
|
62
|
+
oauth: 2,
|
|
63
|
+
authorize_url: 'https://www.linkedin.com/oauth/v2/authorization',
|
|
64
|
+
access_url: 'https://www.linkedin.com/oauth/v2/accessToken',
|
|
65
|
+
scope_delimiter: ' '
|
|
66
|
+
},
|
|
67
|
+
cognito: {
|
|
68
|
+
oauth: 2,
|
|
69
|
+
authorize_url: 'https://[subdomain]/oauth2/authorize',
|
|
70
|
+
access_url: 'https://[subdomain]/oauth2/token',
|
|
71
|
+
scope_delimiter: ' '
|
|
72
|
+
},
|
|
73
|
+
reddit: {
|
|
74
|
+
oauth: 2,
|
|
75
|
+
authorize_url: 'https://ssl.reddit.com/api/v1/authorize',
|
|
76
|
+
access_url: 'https://ssl.reddit.com/api/v1/access_token',
|
|
77
|
+
token_endpoint_auth_method: 'client_secret_basic'
|
|
78
|
+
},
|
|
79
|
+
auth0: {
|
|
80
|
+
oauth: 2,
|
|
81
|
+
authorize_url: 'https://[subdomain].auth0.com/authorize',
|
|
82
|
+
access_url: 'https://[subdomain].auth0.com/oauth/token',
|
|
83
|
+
scope_delimiter: ' '
|
|
84
|
+
},
|
|
85
|
+
cas: {
|
|
86
|
+
oauth: 2,
|
|
87
|
+
authorize_url: 'https://[subdomain]/oidc/authorize',
|
|
88
|
+
access_url: 'https://[subdomain]/oidc/token'
|
|
89
|
+
},
|
|
90
|
+
patreon: {
|
|
91
|
+
oauth: 2,
|
|
92
|
+
authorize_url: 'https://www.patreon.com/oauth2/authorize',
|
|
93
|
+
access_url: 'https://www.patreon.com/api/oauth2/token',
|
|
94
|
+
scope_delimiter: ' '
|
|
95
|
+
},
|
|
96
|
+
keycloak: {
|
|
97
|
+
oauth: 2,
|
|
98
|
+
authorize_url: 'https://[subdomain]/protocol/openid-connect/auth',
|
|
99
|
+
access_url: 'https://[subdomain]/protocol/openid-connect/token',
|
|
100
|
+
scope_delimiter: ' '
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
return providers;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export { requireProviders as __require };
|
|
107
|
+
//# sourceMappingURL=providers.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.mjs","sources":["../../../../server/src/utils/oauth-connect/providers.js"],"sourcesContent":["'use strict';\n\n/**\n * OAuth endpoint definitions for built-in users-permissions providers.\n * Derived from grant's oauth.json (MIT) — inlined to drop the grant dependency.\n */\nmodule.exports = {\n discord: {\n oauth: 2,\n authorize_url: 'https://discord.com/api/oauth2/authorize',\n access_url: 'https://discord.com/api/oauth2/token',\n scope_delimiter: ' ',\n },\n facebook: {\n oauth: 2,\n authorize_url: 'https://www.facebook.com/dialog/oauth',\n access_url: 'https://graph.facebook.com/oauth/access_token',\n },\n google: {\n oauth: 2,\n authorize_url: 'https://accounts.google.com/o/oauth2/v2/auth',\n access_url: 'https://oauth2.googleapis.com/token',\n scope_delimiter: ' ',\n },\n github: {\n oauth: 2,\n authorize_url: 'https://github.com/login/oauth/authorize',\n access_url: 'https://github.com/login/oauth/access_token',\n },\n microsoft: {\n oauth: 2,\n authorize_url: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',\n access_url: 'https://login.microsoftonline.com/common/oauth2/v2.0/token',\n scope_delimiter: ' ',\n },\n twitter: {\n oauth: 1,\n request_url: 'https://api.twitter.com/oauth/request_token',\n authorize_url: 'https://api.twitter.com/oauth/authenticate',\n access_url: 'https://api.twitter.com/oauth/access_token',\n },\n instagram: {\n oauth: 2,\n authorize_url: 'https://api.instagram.com/oauth/authorize',\n access_url: 'https://api.instagram.com/oauth/access_token',\n scope_delimiter: ' ',\n },\n vk: {\n oauth: 2,\n authorize_url: 'https://oauth.vk.com/authorize',\n access_url: 'https://oauth.vk.com/access_token',\n },\n twitch: {\n oauth: 2,\n authorize_url: 'https://id.twitch.tv/oauth2/authorize',\n access_url: 'https://id.twitch.tv/oauth2/token',\n scope_delimiter: ' ',\n },\n linkedin: {\n oauth: 2,\n authorize_url: 'https://www.linkedin.com/oauth/v2/authorization',\n access_url: 'https://www.linkedin.com/oauth/v2/accessToken',\n scope_delimiter: ' ',\n },\n cognito: {\n oauth: 2,\n authorize_url: 'https://[subdomain]/oauth2/authorize',\n access_url: 'https://[subdomain]/oauth2/token',\n scope_delimiter: ' ',\n },\n reddit: {\n oauth: 2,\n authorize_url: 'https://ssl.reddit.com/api/v1/authorize',\n access_url: 'https://ssl.reddit.com/api/v1/access_token',\n token_endpoint_auth_method: 'client_secret_basic',\n },\n auth0: {\n oauth: 2,\n authorize_url: 'https://[subdomain].auth0.com/authorize',\n access_url: 'https://[subdomain].auth0.com/oauth/token',\n scope_delimiter: ' ',\n },\n cas: {\n oauth: 2,\n authorize_url: 'https://[subdomain]/oidc/authorize',\n access_url: 'https://[subdomain]/oidc/token',\n },\n patreon: {\n oauth: 2,\n authorize_url: 'https://www.patreon.com/oauth2/authorize',\n access_url: 'https://www.patreon.com/api/oauth2/token',\n scope_delimiter: ' ',\n },\n keycloak: {\n oauth: 2,\n authorize_url: 'https://[subdomain]/protocol/openid-connect/auth',\n access_url: 'https://[subdomain]/protocol/openid-connect/token',\n scope_delimiter: ' ',\n },\n};\n"],"names":["providers","discord","oauth","authorize_url","access_url","scope_delimiter","facebook","google","github","microsoft","twitter","request_url","instagram","vk","twitch","linkedin","cognito","reddit","token_endpoint_auth_method","auth0","cas","patreon","keycloak"],"mappings":";;;;;AAEA;;;AAGA,KACAA,SAAAA,GAAiB;QACfC,OAAAA,EAAS;YACPC,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,0CAAA;YACfC,UAAAA,EAAY,sCAAA;YACZC,eAAAA,EAAiB;AACrB,SAAA;QACEC,QAAAA,EAAU;YACRJ,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,uCAAA;YACfC,UAAAA,EAAY;AAChB,SAAA;QACEG,MAAAA,EAAQ;YACNL,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,8CAAA;YACfC,UAAAA,EAAY,qCAAA;YACZC,eAAAA,EAAiB;AACrB,SAAA;QACEG,MAAAA,EAAQ;YACNN,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,0CAAA;YACfC,UAAAA,EAAY;AAChB,SAAA;QACEK,SAAAA,EAAW;YACTP,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,gEAAA;YACfC,UAAAA,EAAY,4DAAA;YACZC,eAAAA,EAAiB;AACrB,SAAA;QACEK,OAAAA,EAAS;YACPR,KAAAA,EAAO,CAAA;YACPS,WAAAA,EAAa,6CAAA;YACbR,aAAAA,EAAe,4CAAA;YACfC,UAAAA,EAAY;AAChB,SAAA;QACEQ,SAAAA,EAAW;YACTV,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,2CAAA;YACfC,UAAAA,EAAY,8CAAA;YACZC,eAAAA,EAAiB;AACrB,SAAA;QACEQ,EAAAA,EAAI;YACFX,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,gCAAA;YACfC,UAAAA,EAAY;AAChB,SAAA;QACEU,MAAAA,EAAQ;YACNZ,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,uCAAA;YACfC,UAAAA,EAAY,mCAAA;YACZC,eAAAA,EAAiB;AACrB,SAAA;QACEU,QAAAA,EAAU;YACRb,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,iDAAA;YACfC,UAAAA,EAAY,+CAAA;YACZC,eAAAA,EAAiB;AACrB,SAAA;QACEW,OAAAA,EAAS;YACPd,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,sCAAA;YACfC,UAAAA,EAAY,kCAAA;YACZC,eAAAA,EAAiB;AACrB,SAAA;QACEY,MAAAA,EAAQ;YACNf,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,yCAAA;YACfC,UAAAA,EAAY,4CAAA;YACZc,0BAAAA,EAA4B;AAChC,SAAA;QACEC,KAAAA,EAAO;YACLjB,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,yCAAA;YACfC,UAAAA,EAAY,2CAAA;YACZC,eAAAA,EAAiB;AACrB,SAAA;QACEe,GAAAA,EAAK;YACHlB,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,oCAAA;YACfC,UAAAA,EAAY;AAChB,SAAA;QACEiB,OAAAA,EAAS;YACPnB,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,0CAAA;YACfC,UAAAA,EAAY,0CAAA;YACZC,eAAAA,EAAiB;AACrB,SAAA;QACEiB,QAAAA,EAAU;YACRpB,KAAAA,EAAO,CAAA;YACPC,aAAAA,EAAe,kDAAA;YACfC,UAAAA,EAAY,mDAAA;YACZC,eAAAA,EAAiB;AACrB;AACA,KAAA;;;;;;"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var providerHttp;
|
|
4
|
+
var hasRequiredProviderHttp;
|
|
5
|
+
function requireProviderHttp() {
|
|
6
|
+
if (hasRequiredProviderHttp) return providerHttp;
|
|
7
|
+
hasRequiredProviderHttp = 1;
|
|
8
|
+
const fetchJson = async (url, options = {})=>{
|
|
9
|
+
const response = await fetch(url, options);
|
|
10
|
+
const contentType = response.headers.get('content-type') || '';
|
|
11
|
+
let body;
|
|
12
|
+
if (contentType.includes('application/json')) {
|
|
13
|
+
body = await response.json();
|
|
14
|
+
} else {
|
|
15
|
+
const text = await response.text();
|
|
16
|
+
try {
|
|
17
|
+
body = JSON.parse(text);
|
|
18
|
+
} catch {
|
|
19
|
+
body = text;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
if (!response.ok) {
|
|
23
|
+
const message = typeof body === 'object' && body !== null ? body.error_description || body.error || body.message : body;
|
|
24
|
+
throw new Error(message || `HTTP ${response.status}`);
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
body
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
const bearerGet = (url, accessToken, { headers = {}, qs = {} } = {})=>{
|
|
31
|
+
const target = new URL(url);
|
|
32
|
+
Object.entries(qs).forEach(([key, value])=>{
|
|
33
|
+
if (value !== undefined && value !== null) {
|
|
34
|
+
target.searchParams.set(key, String(value));
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
return fetchJson(target, {
|
|
38
|
+
headers: {
|
|
39
|
+
Authorization: `Bearer ${accessToken}`,
|
|
40
|
+
...headers
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
providerHttp = {
|
|
45
|
+
fetchJson,
|
|
46
|
+
bearerGet
|
|
47
|
+
};
|
|
48
|
+
return providerHttp;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
exports.__require = requireProviderHttp;
|
|
52
|
+
//# sourceMappingURL=provider-http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-http.js","sources":["../../../server/src/utils/provider-http.js"],"sourcesContent":["'use strict';\n\nconst fetchJson = async (url, options = {}) => {\n const response = await fetch(url, options);\n const contentType = response.headers.get('content-type') || '';\n\n let body;\n if (contentType.includes('application/json')) {\n body = await response.json();\n } else {\n const text = await response.text();\n try {\n body = JSON.parse(text);\n } catch {\n body = text;\n }\n }\n\n if (!response.ok) {\n const message =\n typeof body === 'object' && body !== null\n ? body.error_description || body.error || body.message\n : body;\n throw new Error(message || `HTTP ${response.status}`);\n }\n\n return { body };\n};\n\nconst bearerGet = (url, accessToken, { headers = {}, qs = {} } = {}) => {\n const target = new URL(url);\n Object.entries(qs).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n target.searchParams.set(key, String(value));\n }\n });\n\n return fetchJson(target, {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n ...headers,\n },\n });\n};\n\nmodule.exports = {\n fetchJson,\n bearerGet,\n};\n"],"names":["fetchJson","url","options","response","fetch","contentType","headers","get","body","includes","json","text","JSON","parse","ok","message","error_description","error","Error","status","bearerGet","accessToken","qs","target","URL","Object","entries","forEach","key","value","undefined","searchParams","set","String","Authorization","providerHttp"],"mappings":";;;;;;;AAEA,IAAA,MAAMA,SAAAA,GAAY,OAAOC,GAAAA,EAAKC,OAAAA,GAAU,EAAE,GAAA;QACxC,MAAMC,QAAAA,GAAW,MAAMC,KAAAA,CAAMH,GAAAA,EAAKC,OAAAA,CAAAA;AAClC,QAAA,MAAMG,cAAcF,QAAAA,CAASG,OAAO,CAACC,GAAG,CAAC,cAAA,CAAA,IAAmB,EAAA;QAE5D,IAAIC,IAAAA;QACJ,IAAIH,WAAAA,CAAYI,QAAQ,CAAC,kBAAA,CAAA,EAAqB;YAC5CD,IAAAA,GAAO,MAAML,SAASO,IAAI,EAAA;QAC9B,CAAA,MAAS;YACL,MAAMC,IAAAA,GAAO,MAAMR,QAAAA,CAASQ,IAAI,EAAA;YAChC,IAAI;gBACFH,IAAAA,GAAOI,IAAAA,CAAKC,KAAK,CAACF,IAAAA,CAAAA;AACxB,YAAA,CAAA,CAAM,OAAM;gBACNH,IAAAA,GAAOG,IAAAA;AACb,YAAA;AACA,QAAA;QAEE,IAAI,CAACR,QAAAA,CAASW,EAAE,EAAE;AAChB,YAAA,MAAMC,OAAAA,GACJ,OAAOP,IAAAA,KAAS,QAAA,IAAYA,SAAS,IAAA,GACjCA,IAAAA,CAAKQ,iBAAiB,IAAIR,IAAAA,CAAKS,KAAK,IAAIT,IAAAA,CAAKO,OAAA,GAC7CP,IAAAA;YACN,MAAM,IAAIU,MAAMH,OAAAA,IAAW,CAAC,KAAK,EAAEZ,QAAAA,CAASgB,MAAM,CAAA,CAAE,CAAA;AACxD,QAAA;QAEE,OAAO;AAAEX,YAAAA;AAAI,SAAA;AACf,IAAA,CAAA;AAEA,IAAA,MAAMY,SAAAA,GAAY,CAACnB,GAAAA,EAAKoB,WAAAA,EAAa,EAAEf,OAAAA,GAAU,EAAE,EAAEgB,KAAK,EAAE,EAAE,GAAG,EAAE,GAAA;QACjE,MAAMC,MAAAA,GAAS,IAAIC,GAAAA,CAAIvB,GAAAA,CAAAA;QACvBwB,MAAAA,CAAOC,OAAO,CAACJ,EAAAA,CAAAA,CAAIK,OAAO,CAAC,CAAC,CAACC,KAAKC,KAAAA,CAAM,GAAA;YACtC,IAAIA,KAAAA,KAAUC,SAAAA,IAAaD,KAAAA,KAAU,IAAA,EAAM;AACzCN,gBAAAA,MAAAA,CAAOQ,YAAY,CAACC,GAAG,CAACJ,KAAKK,MAAAA,CAAOJ,KAAAA,CAAAA,CAAAA;AAC1C,YAAA;AACA,QAAA,CAAA,CAAA;AAEE,QAAA,OAAO7B,UAAUuB,MAAAA,EAAQ;YACvBjB,OAAAA,EAAS;gBACP4B,aAAAA,EAAe,CAAC,OAAO,EAAEb,WAAAA,CAAAA,CAAa;AACtC,gBAAA,GAAGf;AACT;AACA,SAAA,CAAA;AACA,IAAA,CAAA;IAEA6B,YAAAA,GAAiB;AACfnC,QAAAA,SAAAA;AACAoB,QAAAA;AACF,KAAA;;;;;;"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
var providerHttp;
|
|
2
|
+
var hasRequiredProviderHttp;
|
|
3
|
+
function requireProviderHttp() {
|
|
4
|
+
if (hasRequiredProviderHttp) return providerHttp;
|
|
5
|
+
hasRequiredProviderHttp = 1;
|
|
6
|
+
const fetchJson = async (url, options = {})=>{
|
|
7
|
+
const response = await fetch(url, options);
|
|
8
|
+
const contentType = response.headers.get('content-type') || '';
|
|
9
|
+
let body;
|
|
10
|
+
if (contentType.includes('application/json')) {
|
|
11
|
+
body = await response.json();
|
|
12
|
+
} else {
|
|
13
|
+
const text = await response.text();
|
|
14
|
+
try {
|
|
15
|
+
body = JSON.parse(text);
|
|
16
|
+
} catch {
|
|
17
|
+
body = text;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
if (!response.ok) {
|
|
21
|
+
const message = typeof body === 'object' && body !== null ? body.error_description || body.error || body.message : body;
|
|
22
|
+
throw new Error(message || `HTTP ${response.status}`);
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
body
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
const bearerGet = (url, accessToken, { headers = {}, qs = {} } = {})=>{
|
|
29
|
+
const target = new URL(url);
|
|
30
|
+
Object.entries(qs).forEach(([key, value])=>{
|
|
31
|
+
if (value !== undefined && value !== null) {
|
|
32
|
+
target.searchParams.set(key, String(value));
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
return fetchJson(target, {
|
|
36
|
+
headers: {
|
|
37
|
+
Authorization: `Bearer ${accessToken}`,
|
|
38
|
+
...headers
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
providerHttp = {
|
|
43
|
+
fetchJson,
|
|
44
|
+
bearerGet
|
|
45
|
+
};
|
|
46
|
+
return providerHttp;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export { requireProviderHttp as __require };
|
|
50
|
+
//# sourceMappingURL=provider-http.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-http.mjs","sources":["../../../server/src/utils/provider-http.js"],"sourcesContent":["'use strict';\n\nconst fetchJson = async (url, options = {}) => {\n const response = await fetch(url, options);\n const contentType = response.headers.get('content-type') || '';\n\n let body;\n if (contentType.includes('application/json')) {\n body = await response.json();\n } else {\n const text = await response.text();\n try {\n body = JSON.parse(text);\n } catch {\n body = text;\n }\n }\n\n if (!response.ok) {\n const message =\n typeof body === 'object' && body !== null\n ? body.error_description || body.error || body.message\n : body;\n throw new Error(message || `HTTP ${response.status}`);\n }\n\n return { body };\n};\n\nconst bearerGet = (url, accessToken, { headers = {}, qs = {} } = {}) => {\n const target = new URL(url);\n Object.entries(qs).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n target.searchParams.set(key, String(value));\n }\n });\n\n return fetchJson(target, {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n ...headers,\n },\n });\n};\n\nmodule.exports = {\n fetchJson,\n bearerGet,\n};\n"],"names":["fetchJson","url","options","response","fetch","contentType","headers","get","body","includes","json","text","JSON","parse","ok","message","error_description","error","Error","status","bearerGet","accessToken","qs","target","URL","Object","entries","forEach","key","value","undefined","searchParams","set","String","Authorization","providerHttp"],"mappings":";;;;;AAEA,IAAA,MAAMA,SAAAA,GAAY,OAAOC,GAAAA,EAAKC,OAAAA,GAAU,EAAE,GAAA;QACxC,MAAMC,QAAAA,GAAW,MAAMC,KAAAA,CAAMH,GAAAA,EAAKC,OAAAA,CAAAA;AAClC,QAAA,MAAMG,cAAcF,QAAAA,CAASG,OAAO,CAACC,GAAG,CAAC,cAAA,CAAA,IAAmB,EAAA;QAE5D,IAAIC,IAAAA;QACJ,IAAIH,WAAAA,CAAYI,QAAQ,CAAC,kBAAA,CAAA,EAAqB;YAC5CD,IAAAA,GAAO,MAAML,SAASO,IAAI,EAAA;QAC9B,CAAA,MAAS;YACL,MAAMC,IAAAA,GAAO,MAAMR,QAAAA,CAASQ,IAAI,EAAA;YAChC,IAAI;gBACFH,IAAAA,GAAOI,IAAAA,CAAKC,KAAK,CAACF,IAAAA,CAAAA;AACxB,YAAA,CAAA,CAAM,OAAM;gBACNH,IAAAA,GAAOG,IAAAA;AACb,YAAA;AACA,QAAA;QAEE,IAAI,CAACR,QAAAA,CAASW,EAAE,EAAE;AAChB,YAAA,MAAMC,OAAAA,GACJ,OAAOP,IAAAA,KAAS,QAAA,IAAYA,SAAS,IAAA,GACjCA,IAAAA,CAAKQ,iBAAiB,IAAIR,IAAAA,CAAKS,KAAK,IAAIT,IAAAA,CAAKO,OAAA,GAC7CP,IAAAA;YACN,MAAM,IAAIU,MAAMH,OAAAA,IAAW,CAAC,KAAK,EAAEZ,QAAAA,CAASgB,MAAM,CAAA,CAAE,CAAA;AACxD,QAAA;QAEE,OAAO;AAAEX,YAAAA;AAAI,SAAA;AACf,IAAA,CAAA;AAEA,IAAA,MAAMY,SAAAA,GAAY,CAACnB,GAAAA,EAAKoB,WAAAA,EAAa,EAAEf,OAAAA,GAAU,EAAE,EAAEgB,KAAK,EAAE,EAAE,GAAG,EAAE,GAAA;QACjE,MAAMC,MAAAA,GAAS,IAAIC,GAAAA,CAAIvB,GAAAA,CAAAA;QACvBwB,MAAAA,CAAOC,OAAO,CAACJ,EAAAA,CAAAA,CAAIK,OAAO,CAAC,CAAC,CAACC,KAAKC,KAAAA,CAAM,GAAA;YACtC,IAAIA,KAAAA,KAAUC,SAAAA,IAAaD,KAAAA,KAAU,IAAA,EAAM;AACzCN,gBAAAA,MAAAA,CAAOQ,YAAY,CAACC,GAAG,CAACJ,KAAKK,MAAAA,CAAOJ,KAAAA,CAAAA,CAAAA;AAC1C,YAAA;AACA,QAAA,CAAA,CAAA;AAEE,QAAA,OAAO7B,UAAUuB,MAAAA,EAAQ;YACvBjB,OAAAA,EAAS;gBACP4B,aAAAA,EAAe,CAAC,OAAO,EAAEb,WAAAA,CAAAA,CAAa;AACtC,gBAAA,GAAGf;AACT;AACA,SAAA,CAAA;AACA,IAAA,CAAA;IAEA6B,YAAAA,GAAiB;AACfnC,QAAAA,SAAAA;AACAoB,QAAAA;AACF,KAAA;;;;;;"}
|