@strapi/admin 5.51.0 → 5.51.2
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/admin/admin/src/StrapiApp.js +3 -3
- package/dist/admin/admin/src/StrapiApp.js.map +1 -1
- package/dist/admin/admin/src/StrapiApp.mjs +3 -3
- package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.js +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.mjs +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
- package/dist/admin/admin/src/features/Tracking.js +1 -1
- package/dist/admin/admin/src/features/Tracking.js.map +1 -1
- package/dist/admin/admin/src/features/Tracking.mjs +1 -1
- package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.js +1 -1
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.js.map +1 -1
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.mjs +1 -1
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.js +35 -26
- package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.mjs +35 -27
- package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +1 -3
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs +1 -3
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.js +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.js.map +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.mjs +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.mjs.map +1 -1
- package/dist/admin/admin/src/utils/baseQuery.js +3 -2
- package/dist/admin/admin/src/utils/baseQuery.js.map +1 -1
- package/dist/admin/admin/src/utils/baseQuery.mjs +3 -2
- package/dist/admin/admin/src/utils/baseQuery.mjs.map +1 -1
- package/dist/admin/admin/src/utils/users.js +1 -1
- package/dist/admin/admin/src/utils/users.js.map +1 -1
- package/dist/admin/admin/src/utils/users.mjs +1 -1
- package/dist/admin/admin/src/utils/users.mjs.map +1 -1
- package/dist/admin/admin/tests/server.js +642 -664
- package/dist/admin/admin/tests/server.js.map +1 -1
- package/dist/admin/admin/tests/server.mjs +642 -664
- package/dist/admin/admin/tests/server.mjs.map +1 -1
- package/dist/admin/ee/admin/src/constants.js +22 -26
- package/dist/admin/ee/admin/src/constants.js.map +1 -1
- package/dist/admin/ee/admin/src/constants.mjs +22 -26
- package/dist/admin/ee/admin/src/constants.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js +38 -7
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs +18 -7
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.js +4 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.mjs +4 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js +17 -6
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.mjs +18 -7
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.js +23 -26
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.mjs +23 -26
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm.js +16 -20
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm.mjs +16 -20
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm.mjs.map +1 -1
- package/dist/admin/ee/admin/src/services/auditLogs.js +10 -1
- package/dist/admin/ee/admin/src/services/auditLogs.js.map +1 -1
- package/dist/admin/ee/admin/src/services/auditLogs.mjs +10 -2
- package/dist/admin/ee/admin/src/services/auditLogs.mjs.map +1 -1
- package/dist/admin/shared/utils/auth-cookie-domain.js +1 -0
- package/dist/admin/shared/utils/auth-cookie-domain.js.map +1 -1
- package/dist/admin/shared/utils/auth-cookie-domain.mjs +1 -0
- package/dist/admin/shared/utils/auth-cookie-domain.mjs.map +1 -1
- package/dist/admin/shared/utils/auth-cookie-path.js +1 -0
- package/dist/admin/shared/utils/auth-cookie-path.js.map +1 -1
- package/dist/admin/shared/utils/auth-cookie-path.mjs +1 -0
- package/dist/admin/shared/utils/auth-cookie-path.mjs.map +1 -1
- package/dist/admin/src/pages/Auth/components/Register.d.ts +10 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.d.ts +6 -1
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.d.ts +5 -3
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.d.ts +8 -4
- package/dist/ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm.d.ts +3 -1
- package/dist/ee/admin/src/services/auditLogs.d.ts +5 -2
- package/dist/ee/server/src/audit-logs/controllers/audit-logs.d.ts +1 -0
- package/dist/ee/server/src/audit-logs/controllers/audit-logs.d.ts.map +1 -1
- package/dist/ee/server/src/audit-logs/routes/audit-logs.d.ts.map +1 -1
- package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts +16 -0
- package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts.map +1 -1
- package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts +2 -0
- package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts.map +1 -1
- package/dist/ee/server/src/destroy.d.ts +1 -4
- package/dist/ee/server/src/destroy.d.ts.map +1 -1
- package/dist/ee/server/src/index.d.ts +1 -0
- package/dist/ee/server/src/index.d.ts.map +1 -1
- package/dist/server/ee/server/src/audit-logs/controllers/audit-logs.js +10 -0
- package/dist/server/ee/server/src/audit-logs/controllers/audit-logs.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/controllers/audit-logs.mjs +11 -1
- package/dist/server/ee/server/src/audit-logs/controllers/audit-logs.mjs.map +1 -1
- package/dist/server/ee/server/src/audit-logs/routes/audit-logs.js +24 -32
- package/dist/server/ee/server/src/audit-logs/routes/audit-logs.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/routes/audit-logs.mjs +24 -32
- package/dist/server/ee/server/src/audit-logs/routes/audit-logs.mjs.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/audit-logs.js +36 -4
- package/dist/server/ee/server/src/audit-logs/services/audit-logs.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/audit-logs.mjs +36 -4
- package/dist/server/ee/server/src/audit-logs/services/audit-logs.mjs.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.js +1 -1
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs +1 -1
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs.map +1 -1
- package/dist/server/ee/server/src/audit-logs/validation/audit-logs.js +8 -0
- package/dist/server/ee/server/src/audit-logs/validation/audit-logs.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/validation/audit-logs.mjs +8 -1
- package/dist/server/ee/server/src/audit-logs/validation/audit-logs.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.js +1 -1
- package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.mjs +1 -1
- package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/ee/server/src/destroy.js +1 -1
- package/dist/server/ee/server/src/destroy.js.map +1 -1
- package/dist/server/ee/server/src/destroy.mjs +1 -1
- package/dist/server/ee/server/src/destroy.mjs.map +1 -1
- package/dist/server/ee/server/src/index.js +1 -3
- package/dist/server/ee/server/src/index.js.map +1 -1
- package/dist/server/ee/server/src/index.mjs +1 -3
- package/dist/server/ee/server/src/index.mjs.map +1 -1
- package/dist/server/ee/server/src/services/index.js.map +1 -1
- package/dist/server/ee/server/src/services/index.mjs +2 -2
- package/dist/server/ee/server/src/services/index.mjs.map +1 -1
- package/dist/server/ee/server/src/services/persist-tables.js +2 -2
- package/dist/server/ee/server/src/services/persist-tables.js.map +1 -1
- package/dist/server/ee/server/src/services/persist-tables.mjs +4 -4
- package/dist/server/ee/server/src/services/persist-tables.mjs.map +1 -1
- package/dist/server/server/src/ai/controllers/ai.js +2 -2
- package/dist/server/server/src/ai/controllers/ai.js.map +1 -1
- package/dist/server/server/src/ai/controllers/ai.mjs +2 -2
- package/dist/server/server/src/ai/controllers/ai.mjs.map +1 -1
- package/dist/server/server/src/middlewares/rateLimit.js +1 -2
- package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
- package/dist/server/server/src/middlewares/rateLimit.mjs +2 -2
- package/dist/server/server/src/middlewares/rateLimit.mjs.map +1 -1
- package/dist/server/server/src/services/encryption.js +1 -1
- package/dist/server/server/src/services/encryption.js.map +1 -1
- package/dist/server/server/src/services/encryption.mjs +1 -1
- package/dist/server/server/src/services/encryption.mjs.map +1 -1
- package/dist/server/server/src/services/permission/engine.js +4 -8
- package/dist/server/server/src/services/permission/engine.js.map +1 -1
- package/dist/server/server/src/services/permission/engine.mjs +5 -5
- package/dist/server/server/src/services/permission/engine.mjs.map +1 -1
- package/dist/server/server/src/services/transfer/permission.js +1 -5
- package/dist/server/server/src/services/transfer/permission.js.map +1 -1
- package/dist/server/server/src/services/transfer/permission.mjs +2 -2
- package/dist/server/server/src/services/transfer/permission.mjs.map +1 -1
- package/dist/server/server/src/services/user.js +1 -1
- package/dist/server/server/src/services/user.js.map +1 -1
- package/dist/server/server/src/services/user.mjs +1 -1
- package/dist/server/server/src/services/user.mjs.map +1 -1
- package/dist/server/shared/utils/auth-cookie-domain.js +1 -0
- package/dist/server/shared/utils/auth-cookie-domain.js.map +1 -1
- package/dist/server/shared/utils/auth-cookie-domain.mjs +1 -0
- package/dist/server/shared/utils/auth-cookie-domain.mjs.map +1 -1
- package/dist/server/shared/utils/auth-cookie-path.js +1 -0
- package/dist/server/shared/utils/auth-cookie-path.js.map +1 -1
- package/dist/server/shared/utils/auth-cookie-path.mjs +1 -0
- package/dist/server/shared/utils/auth-cookie-path.mjs.map +1 -1
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/middlewares/index.d.ts.map +1 -1
- package/dist/server/src/services/permission/engine.d.ts +1 -1
- package/dist/server/src/services/permission/engine.d.ts.map +1 -1
- package/dist/server/src/services/transfer/permission.d.ts +2 -2
- package/dist/server/src/services/transfer/permission.d.ts.map +1 -1
- package/dist/shared/contracts/api-token.d.ts +2 -2
- package/dist/shared/contracts/api-token.d.ts.map +1 -1
- package/dist/shared/contracts/audit-logs.d.ts +19 -1
- package/dist/shared/contracts/audit-logs.d.ts.map +1 -1
- package/dist/shared/contracts/authentication.d.ts +1 -1
- package/dist/shared/contracts/authentication.d.ts.map +1 -1
- package/dist/shared/contracts/homepage.d.ts +2 -2
- package/dist/shared/contracts/homepage.d.ts.map +1 -1
- package/dist/shared/contracts/user.d.ts +1 -1
- package/dist/shared/contracts/user.d.ts.map +1 -1
- package/dist/shared/utils/auth-cookie-domain.d.ts.map +1 -1
- package/dist/shared/utils/auth-cookie-path.d.ts.map +1 -1
- package/package.json +12 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SingleSignOnPage.js","sources":["../../../../../../../../ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.tsx"],"sourcesContent":["import {\n Button,\n Flex,\n Grid,\n MultiSelect,\n MultiSelectOption,\n Typography,\n Field,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport {\n Form,\n FormHelpers,\n InputProps,\n useField,\n} from '../../../../../../admin/src/components/Form';\nimport { InputRenderer } from '../../../../../../admin/src/components/FormInputs/Renderer';\nimport { GradientBadge } from '../../../../../../admin/src/components/GradientBadge';\nimport { Layouts } from '../../../../../../admin/src/components/Layouts/Layout';\nimport { Page } from '../../../../../../admin/src/components/PageHelpers';\nimport { useTypedSelector } from '../../../../../../admin/src/core/store/hooks';\nimport { useNotification } from '../../../../../../admin/src/features/Notifications';\nimport { useAdminRoles } from '../../../../../../admin/src/hooks/useAdminRoles';\nimport { useAPIErrorHandler } from '../../../../../../admin/src/hooks/useAPIErrorHandler';\nimport { useRBAC } from '../../../../../../admin/src/hooks/useRBAC';\nimport {\n useGetProviderOptionsQuery,\n useUpdateProviderOptionsMutation,\n} from '../../../../../../admin/src/services/auth';\nimport { isBaseQueryError } from '../../../../../../admin/src/utils/baseQuery';\nimport { translatedErrors } from '../../../../../../admin/src/utils/translatedErrors';\nimport { ProvidersOptions } from '../../../../../../shared/contracts/admin';\n\nconst SCHEMA = yup.object().shape({\n autoRegister: yup.bool().required(translatedErrors.required),\n defaultRole: yup.mixed().when('autoRegister', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n }),\n ssoLockedRoles: yup\n .array()\n .nullable()\n .of(\n yup.mixed().when('ssoLockedRoles', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n })\n ),\n});\n\nexport const SingleSignOnPage = () => {\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const { toggleNotification } = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingProviderOptions, data } = useGetProviderOptionsQuery();\n\n const [updateProviderOptions, { isLoading: isSubmittingForm }] =\n useUpdateProviderOptionsMutation();\n\n const {\n isLoading: isLoadingPermissions,\n allowedActions: { canUpdate, canRead: canReadRoles },\n } = useRBAC({\n ...permissions.settings?.sso,\n readRoles: permissions.settings?.roles.read ?? [],\n });\n\n const { roles, isLoading: isLoadingRoles } = useAdminRoles(undefined, {\n skip: !canReadRoles,\n });\n\n const handleSubmit = async (\n body: ProvidersOptions.Request['body'],\n helpers: FormHelpers<ProvidersOptions.Request['body']>\n ) => {\n try {\n const res = await updateProviderOptions(body);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n helpers.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved' }),\n });\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again.',\n }),\n });\n }\n };\n\n const isLoadingData = isLoadingRoles || isLoadingPermissions || isLoadingProviderOptions;\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'SSO',\n }\n )}\n </Page.Title>\n <Page.Main aria-busy={isSubmittingForm || isLoadingData} tabIndex={-1}>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n validationSchema={SCHEMA}\n disabled={!canUpdate}\n initialValues={\n data || {\n autoRegister: false,\n defaultRole: null,\n ssoLockedRoles: null,\n }\n }\n >\n {({ modified, isSubmitting }) => (\n <>\n <Layouts.Header\n primaryAction={\n <Button\n disabled={!modified}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n title={formatMessage({\n id: 'Settings.sso.title',\n defaultMessage: 'Single Sign-On',\n })}\n subtitle={formatMessage({\n id: 'Settings.sso.description',\n defaultMessage: 'Configure the settings for the Single Sign-On feature.',\n })}\n secondaryAction={\n <GradientBadge\n label={formatMessage({\n id: 'components.premiumFeature.title',\n defaultMessage: 'Premium feature',\n })}\n />\n }\n />\n <Layouts.Content>\n {isSubmitting || isLoadingData ? (\n <Page.Loading />\n ) : (\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n background=\"neutral0\"\n padding={6}\n shadow=\"filterShadow\"\n hasRadius\n >\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid.Root gap={4}>\n {[\n {\n hint: formatMessage({\n id: 'Settings.sso.form.registration.description',\n defaultMessage: 'Create new user on SSO login if no account exists',\n }),\n label: formatMessage({\n id: 'Settings.sso.form.registration.label',\n defaultMessage: 'Auto-registration',\n }),\n name: 'autoRegister',\n size: 6,\n type: 'boolean' as const,\n },\n {\n hint: formatMessage({\n id: 'Settings.sso.form.defaultRole.description',\n defaultMessage:\n 'It will attach the new authenticated user to the selected role',\n }),\n label: formatMessage({\n id: 'Settings.sso.form.defaultRole.label',\n defaultMessage: 'Default role',\n }),\n name: 'defaultRole',\n options: roles.map(({ id, name }) => ({\n label: name,\n value: id.toString(),\n })),\n placeholder: formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n {\n hint: formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.description',\n defaultMessage:\n 'Select the roles for which you want to disable the local authentication',\n }),\n label: formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.label',\n defaultMessage: 'Local authentication lock-out',\n }),\n name: 'ssoLockedRoles',\n options: roles.map(({ id, name }) => ({\n label: name,\n value: id.toString(),\n })),\n placeholder: formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n }),\n size: 6,\n type: 'multi' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n col={size}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <FormInputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Flex>\n )}\n </Layouts.Content>\n </>\n )}\n </Form>\n </Page.Main>\n </>\n );\n};\n\ntype FormInputProps = InputProps | MultiSelectInputProps;\n\nconst FormInputRenderer = (props: FormInputProps) => {\n switch (props.type) {\n case 'multi':\n return <MultiSelectInput {...props} />;\n default:\n return <InputRenderer {...props} />;\n }\n};\n\ntype MultiSelectInputProps = Omit<Extract<InputProps, { type: 'enumeration' }>, 'type'> & {\n type: 'multi';\n};\n\nconst MultiSelectInput = ({ hint, label, name, options, ...props }: MultiSelectInputProps) => {\n const field = useField<string[]>(name);\n\n return (\n <Field.Root name={name} hint={hint} error={field.error}>\n <Field.Label>{label}</Field.Label>\n <MultiSelect\n onChange={(value) => field.onChange('ssoLockedRoles', value)}\n onClear={() => field.onChange('ssoLockedRoles', [])}\n value={field.value ?? []}\n withTags\n {...props}\n >\n {options.map(({ label, value }) => (\n <MultiSelectOption key={value} value={value}>\n {label}\n </MultiSelectOption>\n ))}\n </MultiSelect>\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n};\n\nexport const ProtectedSSO = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.sso?.main);\n\n return (\n <Page.Protect permissions={permissions}>\n <SingleSignOnPage />\n </Page.Protect>\n );\n};\n"],"names":["SCHEMA","yup","object","shape","autoRegister","bool","required","translatedErrors","defaultRole","mixed","when","value","initSchema","nullable","ssoLockedRoles","array","of","SingleSignOnPage","formatMessage","useIntl","permissions","useTypedSelector","state","admin_app","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","isLoading","isLoadingProviderOptions","data","useGetProviderOptionsQuery","updateProviderOptions","isSubmittingForm","useUpdateProviderOptionsMutation","isLoadingPermissions","allowedActions","canUpdate","canRead","canReadRoles","useRBAC","settings","sso","readRoles","roles","read","isLoadingRoles","useAdminRoles","undefined","skip","handleSubmit","body","helpers","res","isBaseQueryError","error","name","setErrors","type","message","id","err","defaultMessage","isLoadingData","_jsxs","_Fragment","_jsx","Page","Title","Main","aria-busy","tabIndex","Form","method","onSubmit","validationSchema","disabled","initialValues","modified","isSubmitting","Layouts","Header","primaryAction","Button","loading","startIcon","Check","fullWidth","title","subtitle","secondaryAction","GradientBadge","label","Content","Loading","Flex","direction","alignItems","gap","background","padding","shadow","hasRadius","Typography","variant","tag","Grid","Root","hint","size","options","map","toString","placeholder","field","Item","col","xs","FormInputRenderer","props","MultiSelectInput","InputRenderer","useField","Field","Label","MultiSelect","onChange","onClear","withTags","MultiSelectOption","Hint","Error","ProtectedSSO","main","Protect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SingleSignOnPage.js","sources":["../../../../../../../../ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.tsx"],"sourcesContent":["import {\n Button,\n Flex,\n Grid,\n MultiSelect,\n MultiSelectOption,\n Typography,\n Field,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport {\n Form,\n FormHelpers,\n InputProps,\n useField,\n} from '../../../../../../admin/src/components/Form';\nimport { InputRenderer } from '../../../../../../admin/src/components/FormInputs/Renderer';\nimport { GradientBadge } from '../../../../../../admin/src/components/GradientBadge';\nimport { Layouts } from '../../../../../../admin/src/components/Layouts/Layout';\nimport { Page } from '../../../../../../admin/src/components/PageHelpers';\nimport { useTypedSelector } from '../../../../../../admin/src/core/store/hooks';\nimport { useNotification } from '../../../../../../admin/src/features/Notifications';\nimport { useAdminRoles } from '../../../../../../admin/src/hooks/useAdminRoles';\nimport { useAPIErrorHandler } from '../../../../../../admin/src/hooks/useAPIErrorHandler';\nimport { useRBAC } from '../../../../../../admin/src/hooks/useRBAC';\nimport {\n useGetProviderOptionsQuery,\n useUpdateProviderOptionsMutation,\n} from '../../../../../../admin/src/services/auth';\nimport { isBaseQueryError } from '../../../../../../admin/src/utils/baseQuery';\nimport { translatedErrors } from '../../../../../../admin/src/utils/translatedErrors';\nimport { ProvidersOptions } from '../../../../../../shared/contracts/admin';\n\nconst SCHEMA = yup.object().shape({\n autoRegister: yup.bool().required(translatedErrors.required),\n defaultRole: yup.mixed().when('autoRegister', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n }),\n ssoLockedRoles: yup\n .array()\n .nullable()\n .of(\n yup.mixed().when('ssoLockedRoles', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n })\n ),\n});\n\nexport const SingleSignOnPage = () => {\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const { toggleNotification } = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingProviderOptions, data } = useGetProviderOptionsQuery();\n\n const [updateProviderOptions, { isLoading: isSubmittingForm }] =\n useUpdateProviderOptionsMutation();\n\n const {\n isLoading: isLoadingPermissions,\n allowedActions: { canUpdate, canRead: canReadRoles },\n } = useRBAC({\n ...permissions.settings?.sso,\n readRoles: permissions.settings?.roles.read ?? [],\n });\n\n const { roles, isLoading: isLoadingRoles } = useAdminRoles(undefined, {\n skip: !canReadRoles,\n });\n\n const handleSubmit = async (\n body: ProvidersOptions.Request['body'],\n helpers: FormHelpers<ProvidersOptions.Request['body']>\n ) => {\n try {\n const res = await updateProviderOptions(body);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n helpers.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved' }),\n });\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again.',\n }),\n });\n }\n };\n\n const isLoadingData = isLoadingRoles || isLoadingPermissions || isLoadingProviderOptions;\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'SSO',\n }\n )}\n </Page.Title>\n <Page.Main aria-busy={isSubmittingForm || isLoadingData} tabIndex={-1}>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n validationSchema={SCHEMA}\n disabled={!canUpdate}\n initialValues={\n data || {\n autoRegister: false,\n defaultRole: null,\n ssoLockedRoles: null,\n }\n }\n >\n {({ modified, isSubmitting }) => (\n <>\n <Layouts.Header\n primaryAction={\n <Button\n disabled={!modified}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n title={formatMessage({\n id: 'Settings.sso.title',\n defaultMessage: 'Single Sign-On',\n })}\n subtitle={formatMessage({\n id: 'Settings.sso.description',\n defaultMessage: 'Configure the settings for the Single Sign-On feature.',\n })}\n secondaryAction={\n <GradientBadge\n label={formatMessage({\n id: 'components.premiumFeature.title',\n defaultMessage: 'Premium feature',\n })}\n />\n }\n />\n <Layouts.Content>\n {isSubmitting || isLoadingData ? (\n <Page.Loading />\n ) : (\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n background=\"neutral0\"\n padding={6}\n shadow=\"filterShadow\"\n hasRadius\n >\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid.Root gap={4}>\n {[\n {\n hint: formatMessage({\n id: 'Settings.sso.form.registration.description',\n defaultMessage: 'Create new user on SSO login if no account exists',\n }),\n label: formatMessage({\n id: 'Settings.sso.form.registration.label',\n defaultMessage: 'Auto-registration',\n }),\n name: 'autoRegister',\n size: 6,\n type: 'boolean' as const,\n },\n {\n hint: formatMessage({\n id: 'Settings.sso.form.defaultRole.description',\n defaultMessage:\n 'It will attach the new authenticated user to the selected role',\n }),\n label: formatMessage({\n id: 'Settings.sso.form.defaultRole.label',\n defaultMessage: 'Default role',\n }),\n name: 'defaultRole',\n options: roles.map(({ id, name }) => ({\n label: name,\n value: id.toString(),\n })),\n placeholder: formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n {\n hint: formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.description',\n defaultMessage:\n 'Select the roles for which you want to disable the local authentication',\n }),\n label: formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.label',\n defaultMessage: 'Local authentication lock-out',\n }),\n name: 'ssoLockedRoles',\n options: roles.map(({ id, name }) => ({\n label: name,\n value: id.toString(),\n })),\n placeholder: formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n }),\n size: 6,\n type: 'multi' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n col={size}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <FormInputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Flex>\n )}\n </Layouts.Content>\n </>\n )}\n </Form>\n </Page.Main>\n </>\n );\n};\n\ntype FormInputProps = InputProps | MultiSelectInputProps;\n\nconst FormInputRenderer = (props: FormInputProps) => {\n switch (props.type) {\n case 'multi':\n return <MultiSelectInput {...props} />;\n default:\n return <InputRenderer {...props} />;\n }\n};\n\ntype MultiSelectInputProps = Omit<Extract<InputProps, { type: 'enumeration' }>, 'type'> & {\n type: 'multi';\n};\n\nconst MultiSelectInput = ({ hint, label, name, options, ...props }: MultiSelectInputProps) => {\n const field = useField<string[]>(name);\n\n return (\n <Field.Root name={name} hint={hint} error={field.error}>\n <Field.Label>{label}</Field.Label>\n <MultiSelect\n onChange={(value) => field.onChange('ssoLockedRoles', value)}\n onClear={() => field.onChange('ssoLockedRoles', [])}\n value={field.value ?? []}\n withTags\n {...props}\n >\n {options.map(({ label, value }) => (\n <MultiSelectOption key={value} value={value}>\n {label}\n </MultiSelectOption>\n ))}\n </MultiSelect>\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n};\n\nexport const ProtectedSSO = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.sso?.main);\n\n return (\n <Page.Protect permissions={permissions}>\n <SingleSignOnPage />\n </Page.Protect>\n );\n};\n"],"names":["SCHEMA","yup","object","shape","autoRegister","bool","required","translatedErrors","defaultRole","mixed","when","value","initSchema","nullable","ssoLockedRoles","array","of","SingleSignOnPage","formatMessage","useIntl","permissions","useTypedSelector","state","admin_app","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","isLoading","isLoadingProviderOptions","data","useGetProviderOptionsQuery","updateProviderOptions","isSubmittingForm","useUpdateProviderOptionsMutation","isLoadingPermissions","allowedActions","canUpdate","canRead","canReadRoles","useRBAC","settings","sso","readRoles","roles","read","isLoadingRoles","useAdminRoles","undefined","skip","handleSubmit","body","helpers","res","isBaseQueryError","error","name","setErrors","type","message","id","defaultMessage","isLoadingData","_jsxs","_Fragment","_jsx","Page","Title","Main","aria-busy","tabIndex","Form","method","onSubmit","validationSchema","disabled","initialValues","modified","isSubmitting","Layouts","Header","primaryAction","Button","loading","startIcon","Check","fullWidth","title","subtitle","secondaryAction","GradientBadge","label","Content","Loading","Flex","direction","alignItems","gap","background","padding","shadow","hasRadius","Typography","variant","tag","Grid","Root","hint","size","options","map","toString","placeholder","field","Item","col","xs","FormInputRenderer","props","MultiSelectInput","InputRenderer","useField","Field","Label","MultiSelect","onChange","onClear","withTags","MultiSelectOption","Hint","Error","ProtectedSSO","main","Protect"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SingleSignOnPage.mjs","sources":["../../../../../../../../ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.tsx"],"sourcesContent":["import {\n Button,\n Flex,\n Grid,\n MultiSelect,\n MultiSelectOption,\n Typography,\n Field,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport {\n Form,\n FormHelpers,\n InputProps,\n useField,\n} from '../../../../../../admin/src/components/Form';\nimport { InputRenderer } from '../../../../../../admin/src/components/FormInputs/Renderer';\nimport { GradientBadge } from '../../../../../../admin/src/components/GradientBadge';\nimport { Layouts } from '../../../../../../admin/src/components/Layouts/Layout';\nimport { Page } from '../../../../../../admin/src/components/PageHelpers';\nimport { useTypedSelector } from '../../../../../../admin/src/core/store/hooks';\nimport { useNotification } from '../../../../../../admin/src/features/Notifications';\nimport { useAdminRoles } from '../../../../../../admin/src/hooks/useAdminRoles';\nimport { useAPIErrorHandler } from '../../../../../../admin/src/hooks/useAPIErrorHandler';\nimport { useRBAC } from '../../../../../../admin/src/hooks/useRBAC';\nimport {\n useGetProviderOptionsQuery,\n useUpdateProviderOptionsMutation,\n} from '../../../../../../admin/src/services/auth';\nimport { isBaseQueryError } from '../../../../../../admin/src/utils/baseQuery';\nimport { translatedErrors } from '../../../../../../admin/src/utils/translatedErrors';\nimport { ProvidersOptions } from '../../../../../../shared/contracts/admin';\n\nconst SCHEMA = yup.object().shape({\n autoRegister: yup.bool().required(translatedErrors.required),\n defaultRole: yup.mixed().when('autoRegister', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n }),\n ssoLockedRoles: yup\n .array()\n .nullable()\n .of(\n yup.mixed().when('ssoLockedRoles', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n })\n ),\n});\n\nexport const SingleSignOnPage = () => {\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const { toggleNotification } = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingProviderOptions, data } = useGetProviderOptionsQuery();\n\n const [updateProviderOptions, { isLoading: isSubmittingForm }] =\n useUpdateProviderOptionsMutation();\n\n const {\n isLoading: isLoadingPermissions,\n allowedActions: { canUpdate, canRead: canReadRoles },\n } = useRBAC({\n ...permissions.settings?.sso,\n readRoles: permissions.settings?.roles.read ?? [],\n });\n\n const { roles, isLoading: isLoadingRoles } = useAdminRoles(undefined, {\n skip: !canReadRoles,\n });\n\n const handleSubmit = async (\n body: ProvidersOptions.Request['body'],\n helpers: FormHelpers<ProvidersOptions.Request['body']>\n ) => {\n try {\n const res = await updateProviderOptions(body);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n helpers.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved' }),\n });\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again.',\n }),\n });\n }\n };\n\n const isLoadingData = isLoadingRoles || isLoadingPermissions || isLoadingProviderOptions;\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'SSO',\n }\n )}\n </Page.Title>\n <Page.Main aria-busy={isSubmittingForm || isLoadingData} tabIndex={-1}>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n validationSchema={SCHEMA}\n disabled={!canUpdate}\n initialValues={\n data || {\n autoRegister: false,\n defaultRole: null,\n ssoLockedRoles: null,\n }\n }\n >\n {({ modified, isSubmitting }) => (\n <>\n <Layouts.Header\n primaryAction={\n <Button\n disabled={!modified}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n title={formatMessage({\n id: 'Settings.sso.title',\n defaultMessage: 'Single Sign-On',\n })}\n subtitle={formatMessage({\n id: 'Settings.sso.description',\n defaultMessage: 'Configure the settings for the Single Sign-On feature.',\n })}\n secondaryAction={\n <GradientBadge\n label={formatMessage({\n id: 'components.premiumFeature.title',\n defaultMessage: 'Premium feature',\n })}\n />\n }\n />\n <Layouts.Content>\n {isSubmitting || isLoadingData ? (\n <Page.Loading />\n ) : (\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n background=\"neutral0\"\n padding={6}\n shadow=\"filterShadow\"\n hasRadius\n >\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid.Root gap={4}>\n {[\n {\n hint: formatMessage({\n id: 'Settings.sso.form.registration.description',\n defaultMessage: 'Create new user on SSO login if no account exists',\n }),\n label: formatMessage({\n id: 'Settings.sso.form.registration.label',\n defaultMessage: 'Auto-registration',\n }),\n name: 'autoRegister',\n size: 6,\n type: 'boolean' as const,\n },\n {\n hint: formatMessage({\n id: 'Settings.sso.form.defaultRole.description',\n defaultMessage:\n 'It will attach the new authenticated user to the selected role',\n }),\n label: formatMessage({\n id: 'Settings.sso.form.defaultRole.label',\n defaultMessage: 'Default role',\n }),\n name: 'defaultRole',\n options: roles.map(({ id, name }) => ({\n label: name,\n value: id.toString(),\n })),\n placeholder: formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n {\n hint: formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.description',\n defaultMessage:\n 'Select the roles for which you want to disable the local authentication',\n }),\n label: formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.label',\n defaultMessage: 'Local authentication lock-out',\n }),\n name: 'ssoLockedRoles',\n options: roles.map(({ id, name }) => ({\n label: name,\n value: id.toString(),\n })),\n placeholder: formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n }),\n size: 6,\n type: 'multi' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n col={size}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <FormInputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Flex>\n )}\n </Layouts.Content>\n </>\n )}\n </Form>\n </Page.Main>\n </>\n );\n};\n\ntype FormInputProps = InputProps | MultiSelectInputProps;\n\nconst FormInputRenderer = (props: FormInputProps) => {\n switch (props.type) {\n case 'multi':\n return <MultiSelectInput {...props} />;\n default:\n return <InputRenderer {...props} />;\n }\n};\n\ntype MultiSelectInputProps = Omit<Extract<InputProps, { type: 'enumeration' }>, 'type'> & {\n type: 'multi';\n};\n\nconst MultiSelectInput = ({ hint, label, name, options, ...props }: MultiSelectInputProps) => {\n const field = useField<string[]>(name);\n\n return (\n <Field.Root name={name} hint={hint} error={field.error}>\n <Field.Label>{label}</Field.Label>\n <MultiSelect\n onChange={(value) => field.onChange('ssoLockedRoles', value)}\n onClear={() => field.onChange('ssoLockedRoles', [])}\n value={field.value ?? []}\n withTags\n {...props}\n >\n {options.map(({ label, value }) => (\n <MultiSelectOption key={value} value={value}>\n {label}\n </MultiSelectOption>\n ))}\n </MultiSelect>\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n};\n\nexport const ProtectedSSO = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.sso?.main);\n\n return (\n <Page.Protect permissions={permissions}>\n <SingleSignOnPage />\n </Page.Protect>\n );\n};\n"],"names":["SCHEMA","yup","object","shape","autoRegister","bool","required","translatedErrors","defaultRole","mixed","when","value","initSchema","nullable","ssoLockedRoles","array","of","SingleSignOnPage","formatMessage","useIntl","permissions","useTypedSelector","state","admin_app","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","isLoading","isLoadingProviderOptions","data","useGetProviderOptionsQuery","updateProviderOptions","isSubmittingForm","useUpdateProviderOptionsMutation","isLoadingPermissions","allowedActions","canUpdate","canRead","canReadRoles","useRBAC","settings","sso","readRoles","roles","read","isLoadingRoles","useAdminRoles","undefined","skip","handleSubmit","body","helpers","res","isBaseQueryError","error","name","setErrors","type","message","id","err","defaultMessage","isLoadingData","_jsxs","_Fragment","_jsx","Page","Title","Main","aria-busy","tabIndex","Form","method","onSubmit","validationSchema","disabled","initialValues","modified","isSubmitting","Layouts","Header","primaryAction","Button","loading","startIcon","Check","fullWidth","title","subtitle","secondaryAction","GradientBadge","label","Content","Loading","Flex","direction","alignItems","gap","background","padding","shadow","hasRadius","Typography","variant","tag","Grid","Root","hint","size","options","map","toString","placeholder","field","Item","col","xs","FormInputRenderer","props","MultiSelectInput","InputRenderer","useField","Field","Label","MultiSelect","onChange","onClear","withTags","MultiSelectOption","Hint","Error","ProtectedSSO","main","Protect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SingleSignOnPage.mjs","sources":["../../../../../../../../ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.tsx"],"sourcesContent":["import {\n Button,\n Flex,\n Grid,\n MultiSelect,\n MultiSelectOption,\n Typography,\n Field,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport {\n Form,\n FormHelpers,\n InputProps,\n useField,\n} from '../../../../../../admin/src/components/Form';\nimport { InputRenderer } from '../../../../../../admin/src/components/FormInputs/Renderer';\nimport { GradientBadge } from '../../../../../../admin/src/components/GradientBadge';\nimport { Layouts } from '../../../../../../admin/src/components/Layouts/Layout';\nimport { Page } from '../../../../../../admin/src/components/PageHelpers';\nimport { useTypedSelector } from '../../../../../../admin/src/core/store/hooks';\nimport { useNotification } from '../../../../../../admin/src/features/Notifications';\nimport { useAdminRoles } from '../../../../../../admin/src/hooks/useAdminRoles';\nimport { useAPIErrorHandler } from '../../../../../../admin/src/hooks/useAPIErrorHandler';\nimport { useRBAC } from '../../../../../../admin/src/hooks/useRBAC';\nimport {\n useGetProviderOptionsQuery,\n useUpdateProviderOptionsMutation,\n} from '../../../../../../admin/src/services/auth';\nimport { isBaseQueryError } from '../../../../../../admin/src/utils/baseQuery';\nimport { translatedErrors } from '../../../../../../admin/src/utils/translatedErrors';\nimport { ProvidersOptions } from '../../../../../../shared/contracts/admin';\n\nconst SCHEMA = yup.object().shape({\n autoRegister: yup.bool().required(translatedErrors.required),\n defaultRole: yup.mixed().when('autoRegister', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n }),\n ssoLockedRoles: yup\n .array()\n .nullable()\n .of(\n yup.mixed().when('ssoLockedRoles', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required) : initSchema.nullable();\n })\n ),\n});\n\nexport const SingleSignOnPage = () => {\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const { toggleNotification } = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingProviderOptions, data } = useGetProviderOptionsQuery();\n\n const [updateProviderOptions, { isLoading: isSubmittingForm }] =\n useUpdateProviderOptionsMutation();\n\n const {\n isLoading: isLoadingPermissions,\n allowedActions: { canUpdate, canRead: canReadRoles },\n } = useRBAC({\n ...permissions.settings?.sso,\n readRoles: permissions.settings?.roles.read ?? [],\n });\n\n const { roles, isLoading: isLoadingRoles } = useAdminRoles(undefined, {\n skip: !canReadRoles,\n });\n\n const handleSubmit = async (\n body: ProvidersOptions.Request['body'],\n helpers: FormHelpers<ProvidersOptions.Request['body']>\n ) => {\n try {\n const res = await updateProviderOptions(body);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n helpers.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved' }),\n });\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again.',\n }),\n });\n }\n };\n\n const isLoadingData = isLoadingRoles || isLoadingPermissions || isLoadingProviderOptions;\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'SSO',\n }\n )}\n </Page.Title>\n <Page.Main aria-busy={isSubmittingForm || isLoadingData} tabIndex={-1}>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n validationSchema={SCHEMA}\n disabled={!canUpdate}\n initialValues={\n data || {\n autoRegister: false,\n defaultRole: null,\n ssoLockedRoles: null,\n }\n }\n >\n {({ modified, isSubmitting }) => (\n <>\n <Layouts.Header\n primaryAction={\n <Button\n disabled={!modified}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n title={formatMessage({\n id: 'Settings.sso.title',\n defaultMessage: 'Single Sign-On',\n })}\n subtitle={formatMessage({\n id: 'Settings.sso.description',\n defaultMessage: 'Configure the settings for the Single Sign-On feature.',\n })}\n secondaryAction={\n <GradientBadge\n label={formatMessage({\n id: 'components.premiumFeature.title',\n defaultMessage: 'Premium feature',\n })}\n />\n }\n />\n <Layouts.Content>\n {isSubmitting || isLoadingData ? (\n <Page.Loading />\n ) : (\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n background=\"neutral0\"\n padding={6}\n shadow=\"filterShadow\"\n hasRadius\n >\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid.Root gap={4}>\n {[\n {\n hint: formatMessage({\n id: 'Settings.sso.form.registration.description',\n defaultMessage: 'Create new user on SSO login if no account exists',\n }),\n label: formatMessage({\n id: 'Settings.sso.form.registration.label',\n defaultMessage: 'Auto-registration',\n }),\n name: 'autoRegister',\n size: 6,\n type: 'boolean' as const,\n },\n {\n hint: formatMessage({\n id: 'Settings.sso.form.defaultRole.description',\n defaultMessage:\n 'It will attach the new authenticated user to the selected role',\n }),\n label: formatMessage({\n id: 'Settings.sso.form.defaultRole.label',\n defaultMessage: 'Default role',\n }),\n name: 'defaultRole',\n options: roles.map(({ id, name }) => ({\n label: name,\n value: id.toString(),\n })),\n placeholder: formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n {\n hint: formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.description',\n defaultMessage:\n 'Select the roles for which you want to disable the local authentication',\n }),\n label: formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.label',\n defaultMessage: 'Local authentication lock-out',\n }),\n name: 'ssoLockedRoles',\n options: roles.map(({ id, name }) => ({\n label: name,\n value: id.toString(),\n })),\n placeholder: formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n }),\n size: 6,\n type: 'multi' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n col={size}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <FormInputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Flex>\n )}\n </Layouts.Content>\n </>\n )}\n </Form>\n </Page.Main>\n </>\n );\n};\n\ntype FormInputProps = InputProps | MultiSelectInputProps;\n\nconst FormInputRenderer = (props: FormInputProps) => {\n switch (props.type) {\n case 'multi':\n return <MultiSelectInput {...props} />;\n default:\n return <InputRenderer {...props} />;\n }\n};\n\ntype MultiSelectInputProps = Omit<Extract<InputProps, { type: 'enumeration' }>, 'type'> & {\n type: 'multi';\n};\n\nconst MultiSelectInput = ({ hint, label, name, options, ...props }: MultiSelectInputProps) => {\n const field = useField<string[]>(name);\n\n return (\n <Field.Root name={name} hint={hint} error={field.error}>\n <Field.Label>{label}</Field.Label>\n <MultiSelect\n onChange={(value) => field.onChange('ssoLockedRoles', value)}\n onClear={() => field.onChange('ssoLockedRoles', [])}\n value={field.value ?? []}\n withTags\n {...props}\n >\n {options.map(({ label, value }) => (\n <MultiSelectOption key={value} value={value}>\n {label}\n </MultiSelectOption>\n ))}\n </MultiSelect>\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n};\n\nexport const ProtectedSSO = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.sso?.main);\n\n return (\n <Page.Protect permissions={permissions}>\n <SingleSignOnPage />\n </Page.Protect>\n );\n};\n"],"names":["SCHEMA","yup","object","shape","autoRegister","bool","required","translatedErrors","defaultRole","mixed","when","value","initSchema","nullable","ssoLockedRoles","array","of","SingleSignOnPage","formatMessage","useIntl","permissions","useTypedSelector","state","admin_app","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","isLoading","isLoadingProviderOptions","data","useGetProviderOptionsQuery","updateProviderOptions","isSubmittingForm","useUpdateProviderOptionsMutation","isLoadingPermissions","allowedActions","canUpdate","canRead","canReadRoles","useRBAC","settings","sso","readRoles","roles","read","isLoadingRoles","useAdminRoles","undefined","skip","handleSubmit","body","helpers","res","isBaseQueryError","error","name","setErrors","type","message","id","defaultMessage","isLoadingData","_jsxs","_Fragment","_jsx","Page","Title","Main","aria-busy","tabIndex","Form","method","onSubmit","validationSchema","disabled","initialValues","modified","isSubmitting","Layouts","Header","primaryAction","Button","loading","startIcon","Check","fullWidth","title","subtitle","secondaryAction","GradientBadge","label","Content","Loading","Flex","direction","alignItems","gap","background","padding","shadow","hasRadius","Typography","variant","tag","Grid","Root","hint","size","options","map","toString","placeholder","field","Item","col","xs","FormInputRenderer","props","MultiSelectInput","InputRenderer","useField","Field","Label","MultiSelect","onChange","onClear","withTags","MultiSelectOption","Hint","Error","ProtectedSSO","main","Protect"],"mappings":"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"}
|
|
@@ -1,25 +1,21 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const FORM_INITIAL_VALUES = {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
]
|
|
21
|
-
] : []
|
|
22
|
-
];
|
|
3
|
+
const FORM_INITIAL_VALUES = window.strapi.features.isEnabled(window.strapi.features.SSO) ? {
|
|
4
|
+
useSSORegistration: true
|
|
5
|
+
} : {};
|
|
6
|
+
const ROLE_LAYOUT = window.strapi.features.isEnabled(window.strapi.features.SSO) ? [
|
|
7
|
+
[
|
|
8
|
+
{
|
|
9
|
+
label: {
|
|
10
|
+
id: 'Settings.permissions.users.form.sso',
|
|
11
|
+
defaultMessage: 'Connect with SSO'
|
|
12
|
+
},
|
|
13
|
+
name: 'useSSORegistration',
|
|
14
|
+
type: 'boolean',
|
|
15
|
+
size: 6
|
|
16
|
+
}
|
|
17
|
+
]
|
|
18
|
+
] : [];
|
|
23
19
|
|
|
24
20
|
exports.FORM_INITIAL_VALUES = FORM_INITIAL_VALUES;
|
|
25
21
|
exports.ROLE_LAYOUT = ROLE_LAYOUT;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalForm.js","sources":["../../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm.tsx"],"sourcesContent":["import type { FormLayoutInputProps } from '../../../../../../../../admin/src/types/forms';\n\nexport const FORM_INITIAL_VALUES =
|
|
1
|
+
{"version":3,"file":"ModalForm.js","sources":["../../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm.tsx"],"sourcesContent":["import type { FormLayoutInputProps } from '../../../../../../../../admin/src/types/forms';\n\nexport const FORM_INITIAL_VALUES = window.strapi.features.isEnabled(window.strapi.features.SSO)\n ? {\n useSSORegistration: true,\n }\n : {};\n\nexport const ROLE_LAYOUT = (\n window.strapi.features.isEnabled(window.strapi.features.SSO)\n ? [\n [\n {\n label: {\n id: 'Settings.permissions.users.form.sso',\n defaultMessage: 'Connect with SSO',\n },\n name: 'useSSORegistration',\n type: 'boolean' as const,\n size: 6,\n },\n ],\n ]\n : []\n) satisfies FormLayoutInputProps[][];\n"],"names":["FORM_INITIAL_VALUES","window","strapi","features","isEnabled","SSO","useSSORegistration","ROLE_LAYOUT","label","id","defaultMessage","name","type","size"],"mappings":";;AAEO,MAAMA,mBAAAA,GAAsBC,MAAAA,CAAOC,MAAM,CAACC,QAAQ,CAACC,SAAS,CAACH,OAAOC,MAAM,CAACC,QAAQ,CAACE,GAAG,CAAA,GAC1F;IACEC,kBAAAA,EAAoB;AACtB,CAAA,GACA;AAEG,MAAMC,WAAAA,GACXN,MAAAA,CAAOC,MAAM,CAACC,QAAQ,CAACC,SAAS,CAACH,OAAOC,MAAM,CAACC,QAAQ,CAACE,GAAG,CAAA,GACvD;AACE,IAAA;AACE,QAAA;YACEG,KAAAA,EAAO;gBACLC,EAAAA,EAAI,qCAAA;gBACJC,cAAAA,EAAgB;AAClB,aAAA;YACAC,IAAAA,EAAM,oBAAA;YACNC,IAAAA,EAAM,SAAA;YACNC,IAAAA,EAAM;AACR;AACD;AACF,CAAA,GACD;;;;;"}
|
|
@@ -1,23 +1,19 @@
|
|
|
1
|
-
const FORM_INITIAL_VALUES = {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
]
|
|
19
|
-
] : []
|
|
20
|
-
];
|
|
1
|
+
const FORM_INITIAL_VALUES = window.strapi.features.isEnabled(window.strapi.features.SSO) ? {
|
|
2
|
+
useSSORegistration: true
|
|
3
|
+
} : {};
|
|
4
|
+
const ROLE_LAYOUT = window.strapi.features.isEnabled(window.strapi.features.SSO) ? [
|
|
5
|
+
[
|
|
6
|
+
{
|
|
7
|
+
label: {
|
|
8
|
+
id: 'Settings.permissions.users.form.sso',
|
|
9
|
+
defaultMessage: 'Connect with SSO'
|
|
10
|
+
},
|
|
11
|
+
name: 'useSSORegistration',
|
|
12
|
+
type: 'boolean',
|
|
13
|
+
size: 6
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
] : [];
|
|
21
17
|
|
|
22
18
|
export { FORM_INITIAL_VALUES, ROLE_LAYOUT };
|
|
23
19
|
//# sourceMappingURL=ModalForm.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalForm.mjs","sources":["../../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm.tsx"],"sourcesContent":["import type { FormLayoutInputProps } from '../../../../../../../../admin/src/types/forms';\n\nexport const FORM_INITIAL_VALUES =
|
|
1
|
+
{"version":3,"file":"ModalForm.mjs","sources":["../../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm.tsx"],"sourcesContent":["import type { FormLayoutInputProps } from '../../../../../../../../admin/src/types/forms';\n\nexport const FORM_INITIAL_VALUES = window.strapi.features.isEnabled(window.strapi.features.SSO)\n ? {\n useSSORegistration: true,\n }\n : {};\n\nexport const ROLE_LAYOUT = (\n window.strapi.features.isEnabled(window.strapi.features.SSO)\n ? [\n [\n {\n label: {\n id: 'Settings.permissions.users.form.sso',\n defaultMessage: 'Connect with SSO',\n },\n name: 'useSSORegistration',\n type: 'boolean' as const,\n size: 6,\n },\n ],\n ]\n : []\n) satisfies FormLayoutInputProps[][];\n"],"names":["FORM_INITIAL_VALUES","window","strapi","features","isEnabled","SSO","useSSORegistration","ROLE_LAYOUT","label","id","defaultMessage","name","type","size"],"mappings":"AAEO,MAAMA,mBAAAA,GAAsBC,MAAAA,CAAOC,MAAM,CAACC,QAAQ,CAACC,SAAS,CAACH,OAAOC,MAAM,CAACC,QAAQ,CAACE,GAAG,CAAA,GAC1F;IACEC,kBAAAA,EAAoB;AACtB,CAAA,GACA;AAEG,MAAMC,WAAAA,GACXN,MAAAA,CAAOC,MAAM,CAACC,QAAQ,CAACC,SAAS,CAACH,OAAOC,MAAM,CAACC,QAAQ,CAACE,GAAG,CAAA,GACvD;AACE,IAAA;AACE,QAAA;YACEG,KAAAA,EAAO;gBACLC,EAAAA,EAAI,qCAAA;gBACJC,cAAAA,EAAgB;AAClB,aAAA;YACAC,IAAAA,EAAM,oBAAA;YACNC,IAAAA,EAAM,SAAA;YACNC,IAAAA,EAAM;AACR;AACD;AACF,CAAA,GACD;;;;"}
|
|
@@ -14,12 +14,21 @@ const auditLogsService = api.adminApi.injectEndpoints({
|
|
|
14
14
|
}),
|
|
15
15
|
getAuditLog: builder.query({
|
|
16
16
|
query: (id)=>`/admin/audit-logs/${id}`
|
|
17
|
+
}),
|
|
18
|
+
getAuditLogUsers: builder.query({
|
|
19
|
+
query: (params)=>({
|
|
20
|
+
url: `/admin/audit-logs/users`,
|
|
21
|
+
config: {
|
|
22
|
+
params
|
|
23
|
+
}
|
|
24
|
+
})
|
|
17
25
|
})
|
|
18
26
|
}),
|
|
19
27
|
overrideExisting: false
|
|
20
28
|
});
|
|
21
|
-
const { useGetAuditLogsQuery, useGetAuditLogQuery } = auditLogsService;
|
|
29
|
+
const { useGetAuditLogsQuery, useGetAuditLogQuery, useGetAuditLogUsersQuery } = auditLogsService;
|
|
22
30
|
|
|
23
31
|
exports.useGetAuditLogQuery = useGetAuditLogQuery;
|
|
32
|
+
exports.useGetAuditLogUsersQuery = useGetAuditLogUsersQuery;
|
|
24
33
|
exports.useGetAuditLogsQuery = useGetAuditLogsQuery;
|
|
25
34
|
//# sourceMappingURL=auditLogs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auditLogs.js","sources":["../../../../../../ee/admin/src/services/auditLogs.ts"],"sourcesContent":["import { adminApi } from '../../../../admin/src/services/api';\nimport * as AuditLogs from '../../../../shared/contracts/audit-logs';\n\nconst auditLogsService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n getAuditLogs: builder.query<AuditLogs.GetAll.Response, AuditLogs.GetAll.Request['query']>({\n query: (params) => ({\n url: `/admin/audit-logs`,\n config: {\n params,\n },\n }),\n }),\n getAuditLog: builder.query<AuditLogs.Get.Response, AuditLogs.Get.Params['id']>({\n query: (id) => `/admin/audit-logs/${id}`,\n }),\n }),\n overrideExisting: false,\n});\n\nconst { useGetAuditLogsQuery, useGetAuditLogQuery } = auditLogsService;\n\nexport { useGetAuditLogsQuery, useGetAuditLogQuery };\n"],"names":["auditLogsService","adminApi","injectEndpoints","endpoints","builder","getAuditLogs","query","params","url","config","getAuditLog","id","overrideExisting","useGetAuditLogsQuery","useGetAuditLogQuery"],"mappings":";;;;AAGA,MAAMA,gBAAAA,GAAmBC,YAAAA,CAASC,eAAe,CAAC;IAChDC,SAAAA,EAAW,CAACC,WAAa;YACvBC,YAAAA,EAAcD,OAAAA,CAAQE,KAAK,CAA+D;gBACxFA,KAAAA,EAAO,CAACC,UAAY;wBAClBC,GAAAA,EAAK,CAAC,iBAAiB,CAAC;wBACxBC,MAAAA,EAAQ;AACNF,4BAAAA;AACF;qBACF;AACF,aAAA,CAAA;YACAG,WAAAA,EAAaN,OAAAA,CAAQE,KAAK,CAAqD;AAC7EA,gBAAAA,KAAAA,EAAO,CAACK,EAAAA,GAAO,CAAC,kBAAkB,EAAEA,EAAAA,CAAAA;AACtC,aAAA;SACF,CAAA;
|
|
1
|
+
{"version":3,"file":"auditLogs.js","sources":["../../../../../../ee/admin/src/services/auditLogs.ts"],"sourcesContent":["import { adminApi } from '../../../../admin/src/services/api';\nimport * as AuditLogs from '../../../../shared/contracts/audit-logs';\n\nconst auditLogsService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n getAuditLogs: builder.query<AuditLogs.GetAll.Response, AuditLogs.GetAll.Request['query']>({\n query: (params) => ({\n url: `/admin/audit-logs`,\n config: {\n params,\n },\n }),\n }),\n getAuditLog: builder.query<AuditLogs.Get.Response, AuditLogs.Get.Params['id']>({\n query: (id) => `/admin/audit-logs/${id}`,\n }),\n getAuditLogUsers: builder.query<\n AuditLogs.GetUsers.Response,\n AuditLogs.GetUsers.Request['query']\n >({\n query: (params) => ({\n url: `/admin/audit-logs/users`,\n config: {\n params,\n },\n }),\n }),\n }),\n overrideExisting: false,\n});\n\nconst { useGetAuditLogsQuery, useGetAuditLogQuery, useGetAuditLogUsersQuery } = auditLogsService;\n\nexport { useGetAuditLogsQuery, useGetAuditLogQuery, useGetAuditLogUsersQuery };\n"],"names":["auditLogsService","adminApi","injectEndpoints","endpoints","builder","getAuditLogs","query","params","url","config","getAuditLog","id","getAuditLogUsers","overrideExisting","useGetAuditLogsQuery","useGetAuditLogQuery","useGetAuditLogUsersQuery"],"mappings":";;;;AAGA,MAAMA,gBAAAA,GAAmBC,YAAAA,CAASC,eAAe,CAAC;IAChDC,SAAAA,EAAW,CAACC,WAAa;YACvBC,YAAAA,EAAcD,OAAAA,CAAQE,KAAK,CAA+D;gBACxFA,KAAAA,EAAO,CAACC,UAAY;wBAClBC,GAAAA,EAAK,CAAC,iBAAiB,CAAC;wBACxBC,MAAAA,EAAQ;AACNF,4BAAAA;AACF;qBACF;AACF,aAAA,CAAA;YACAG,WAAAA,EAAaN,OAAAA,CAAQE,KAAK,CAAqD;AAC7EA,gBAAAA,KAAAA,EAAO,CAACK,EAAAA,GAAO,CAAC,kBAAkB,EAAEA,EAAAA,CAAAA;AACtC,aAAA,CAAA;YACAC,gBAAAA,EAAkBR,OAAAA,CAAQE,KAAK,CAG7B;gBACAA,KAAAA,EAAO,CAACC,UAAY;wBAClBC,GAAAA,EAAK,CAAC,uBAAuB,CAAC;wBAC9BC,MAAAA,EAAQ;AACNF,4BAAAA;AACF;qBACF;AACF,aAAA;SACF,CAAA;IACAM,gBAAAA,EAAkB;AACpB,CAAA,CAAA;AAEA,MAAM,EAAEC,oBAAoB,EAAEC,mBAAmB,EAAEC,wBAAwB,EAAE,GAAGhB;;;;;;"}
|
|
@@ -12,11 +12,19 @@ const auditLogsService = adminApi.injectEndpoints({
|
|
|
12
12
|
}),
|
|
13
13
|
getAuditLog: builder.query({
|
|
14
14
|
query: (id)=>`/admin/audit-logs/${id}`
|
|
15
|
+
}),
|
|
16
|
+
getAuditLogUsers: builder.query({
|
|
17
|
+
query: (params)=>({
|
|
18
|
+
url: `/admin/audit-logs/users`,
|
|
19
|
+
config: {
|
|
20
|
+
params
|
|
21
|
+
}
|
|
22
|
+
})
|
|
15
23
|
})
|
|
16
24
|
}),
|
|
17
25
|
overrideExisting: false
|
|
18
26
|
});
|
|
19
|
-
const { useGetAuditLogsQuery, useGetAuditLogQuery } = auditLogsService;
|
|
27
|
+
const { useGetAuditLogsQuery, useGetAuditLogQuery, useGetAuditLogUsersQuery } = auditLogsService;
|
|
20
28
|
|
|
21
|
-
export { useGetAuditLogQuery, useGetAuditLogsQuery };
|
|
29
|
+
export { useGetAuditLogQuery, useGetAuditLogUsersQuery, useGetAuditLogsQuery };
|
|
22
30
|
//# sourceMappingURL=auditLogs.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auditLogs.mjs","sources":["../../../../../../ee/admin/src/services/auditLogs.ts"],"sourcesContent":["import { adminApi } from '../../../../admin/src/services/api';\nimport * as AuditLogs from '../../../../shared/contracts/audit-logs';\n\nconst auditLogsService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n getAuditLogs: builder.query<AuditLogs.GetAll.Response, AuditLogs.GetAll.Request['query']>({\n query: (params) => ({\n url: `/admin/audit-logs`,\n config: {\n params,\n },\n }),\n }),\n getAuditLog: builder.query<AuditLogs.Get.Response, AuditLogs.Get.Params['id']>({\n query: (id) => `/admin/audit-logs/${id}`,\n }),\n }),\n overrideExisting: false,\n});\n\nconst { useGetAuditLogsQuery, useGetAuditLogQuery } = auditLogsService;\n\nexport { useGetAuditLogsQuery, useGetAuditLogQuery };\n"],"names":["auditLogsService","adminApi","injectEndpoints","endpoints","builder","getAuditLogs","query","params","url","config","getAuditLog","id","overrideExisting","useGetAuditLogsQuery","useGetAuditLogQuery"],"mappings":";;AAGA,MAAMA,gBAAAA,GAAmBC,QAAAA,CAASC,eAAe,CAAC;IAChDC,SAAAA,EAAW,CAACC,WAAa;YACvBC,YAAAA,EAAcD,OAAAA,CAAQE,KAAK,CAA+D;gBACxFA,KAAAA,EAAO,CAACC,UAAY;wBAClBC,GAAAA,EAAK,CAAC,iBAAiB,CAAC;wBACxBC,MAAAA,EAAQ;AACNF,4BAAAA;AACF;qBACF;AACF,aAAA,CAAA;YACAG,WAAAA,EAAaN,OAAAA,CAAQE,KAAK,CAAqD;AAC7EA,gBAAAA,KAAAA,EAAO,CAACK,EAAAA,GAAO,CAAC,kBAAkB,EAAEA,EAAAA,CAAAA;AACtC,aAAA;SACF,CAAA;
|
|
1
|
+
{"version":3,"file":"auditLogs.mjs","sources":["../../../../../../ee/admin/src/services/auditLogs.ts"],"sourcesContent":["import { adminApi } from '../../../../admin/src/services/api';\nimport * as AuditLogs from '../../../../shared/contracts/audit-logs';\n\nconst auditLogsService = adminApi.injectEndpoints({\n endpoints: (builder) => ({\n getAuditLogs: builder.query<AuditLogs.GetAll.Response, AuditLogs.GetAll.Request['query']>({\n query: (params) => ({\n url: `/admin/audit-logs`,\n config: {\n params,\n },\n }),\n }),\n getAuditLog: builder.query<AuditLogs.Get.Response, AuditLogs.Get.Params['id']>({\n query: (id) => `/admin/audit-logs/${id}`,\n }),\n getAuditLogUsers: builder.query<\n AuditLogs.GetUsers.Response,\n AuditLogs.GetUsers.Request['query']\n >({\n query: (params) => ({\n url: `/admin/audit-logs/users`,\n config: {\n params,\n },\n }),\n }),\n }),\n overrideExisting: false,\n});\n\nconst { useGetAuditLogsQuery, useGetAuditLogQuery, useGetAuditLogUsersQuery } = auditLogsService;\n\nexport { useGetAuditLogsQuery, useGetAuditLogQuery, useGetAuditLogUsersQuery };\n"],"names":["auditLogsService","adminApi","injectEndpoints","endpoints","builder","getAuditLogs","query","params","url","config","getAuditLog","id","getAuditLogUsers","overrideExisting","useGetAuditLogsQuery","useGetAuditLogQuery","useGetAuditLogUsersQuery"],"mappings":";;AAGA,MAAMA,gBAAAA,GAAmBC,QAAAA,CAASC,eAAe,CAAC;IAChDC,SAAAA,EAAW,CAACC,WAAa;YACvBC,YAAAA,EAAcD,OAAAA,CAAQE,KAAK,CAA+D;gBACxFA,KAAAA,EAAO,CAACC,UAAY;wBAClBC,GAAAA,EAAK,CAAC,iBAAiB,CAAC;wBACxBC,MAAAA,EAAQ;AACNF,4BAAAA;AACF;qBACF;AACF,aAAA,CAAA;YACAG,WAAAA,EAAaN,OAAAA,CAAQE,KAAK,CAAqD;AAC7EA,gBAAAA,KAAAA,EAAO,CAACK,EAAAA,GAAO,CAAC,kBAAkB,EAAEA,EAAAA,CAAAA;AACtC,aAAA,CAAA;YACAC,gBAAAA,EAAkBR,OAAAA,CAAQE,KAAK,CAG7B;gBACAA,KAAAA,EAAO,CAACC,UAAY;wBAClBC,GAAAA,EAAK,CAAC,uBAAuB,CAAC;wBAC9BC,MAAAA,EAAQ;AACNF,4BAAAA;AACF;qBACF;AACF,aAAA;SACF,CAAA;IACAM,gBAAAA,EAAkB;AACpB,CAAA,CAAA;AAEA,MAAM,EAAEC,oBAAoB,EAAEC,mBAAmB,EAAEC,wBAAwB,EAAE,GAAGhB;;;;"}
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
const isValidCookieDomain = (domain)=>{
|
|
23
23
|
// RFC 6265 domain-av: a host name. No leading dot required, no scheme, no
|
|
24
24
|
// path, no port, and none of the control/attribute-separator characters.
|
|
25
|
+
// eslint-disable-next-line no-control-regex -- CTL chars are exactly what RFC 6265 forbids
|
|
25
26
|
return !/[\x00-\x1F\x7F;,\s/:]/.test(domain);
|
|
26
27
|
};
|
|
27
28
|
const resolveAuthCookieDomain = (configuredDomain, warn = console.warn)=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-cookie-domain.js","sources":["../../../../shared/utils/auth-cookie-domain.ts"],"sourcesContent":["/**\n * Domain attribute of the admin auth (access) token cookie, configurable\n * through `admin.auth.cookie.domain` (falling back to `admin.auth.domain`) so\n * multiple Strapi instances under the same parent domain share, or stay\n * isolated to, the intended host.\n *\n * Browser-safe single source for both sides of the handoff: the admin panel\n * cannot read server config, so the build transports the config value into\n * the bundle through the internal `STRAPI_ADMIN_AUTH_COOKIE_DOMAIN` variable\n * (see create-build-context.ts in @strapi/strapi); the server resolves the\n * same config at runtime. Changing the domain requires an admin rebuild, like\n * any other admin config change.\n *\n * Defaults to `undefined` (host-only cookie) to match the browser default and\n * the refresh-cookie behaviour in `getRefreshCookieOptions` when no domain is\n * configured. A host-only cookie and a `Domain`-scoped cookie are distinct\n * entries in the browser cookie store, so set and delete must agree on the\n * domain or logout leaves a colliding copy behind.\n */\nexport const DEFAULT_AUTH_COOKIE_DOMAIN = undefined;\n\nconst isValidCookieDomain = (domain: string): boolean => {\n // RFC 6265 domain-av: a host name. No leading dot required, no scheme, no\n // path, no port, and none of the control/attribute-separator characters.\n return !/[\\x00-\\x1F\\x7F;,\\s/:]/.test(domain);\n};\n\nexport const resolveAuthCookieDomain = (\n configuredDomain?: string,\n warn: (message: string) => void = console.warn\n): string | undefined => {\n const cookieDomain = (configuredDomain || '').trim();\n\n if (!cookieDomain) {\n return DEFAULT_AUTH_COOKIE_DOMAIN;\n }\n\n if (!isValidCookieDomain(cookieDomain)) {\n warn(\n `Ignoring invalid admin auth cookie domain \"${cookieDomain}\" (must be a bare host name); using a host-only cookie instead.`\n );\n return DEFAULT_AUTH_COOKIE_DOMAIN;\n }\n\n return cookieDomain;\n};\n"],"names":["DEFAULT_AUTH_COOKIE_DOMAIN","undefined","isValidCookieDomain","domain","test","resolveAuthCookieDomain","configuredDomain","warn","console","cookieDomain","trim"],"mappings":";;AAAA;;;;;;;;;;;;;;;;;;IAmBO,MAAMA,0BAAAA,GAA6BC;AAE1C,MAAMC,sBAAsB,CAACC,MAAAA,GAAAA
|
|
1
|
+
{"version":3,"file":"auth-cookie-domain.js","sources":["../../../../shared/utils/auth-cookie-domain.ts"],"sourcesContent":["/**\n * Domain attribute of the admin auth (access) token cookie, configurable\n * through `admin.auth.cookie.domain` (falling back to `admin.auth.domain`) so\n * multiple Strapi instances under the same parent domain share, or stay\n * isolated to, the intended host.\n *\n * Browser-safe single source for both sides of the handoff: the admin panel\n * cannot read server config, so the build transports the config value into\n * the bundle through the internal `STRAPI_ADMIN_AUTH_COOKIE_DOMAIN` variable\n * (see create-build-context.ts in @strapi/strapi); the server resolves the\n * same config at runtime. Changing the domain requires an admin rebuild, like\n * any other admin config change.\n *\n * Defaults to `undefined` (host-only cookie) to match the browser default and\n * the refresh-cookie behaviour in `getRefreshCookieOptions` when no domain is\n * configured. A host-only cookie and a `Domain`-scoped cookie are distinct\n * entries in the browser cookie store, so set and delete must agree on the\n * domain or logout leaves a colliding copy behind.\n */\nexport const DEFAULT_AUTH_COOKIE_DOMAIN = undefined;\n\nconst isValidCookieDomain = (domain: string): boolean => {\n // RFC 6265 domain-av: a host name. No leading dot required, no scheme, no\n // path, no port, and none of the control/attribute-separator characters.\n // eslint-disable-next-line no-control-regex -- CTL chars are exactly what RFC 6265 forbids\n return !/[\\x00-\\x1F\\x7F;,\\s/:]/.test(domain);\n};\n\nexport const resolveAuthCookieDomain = (\n configuredDomain?: string,\n warn: (message: string) => void = console.warn\n): string | undefined => {\n const cookieDomain = (configuredDomain || '').trim();\n\n if (!cookieDomain) {\n return DEFAULT_AUTH_COOKIE_DOMAIN;\n }\n\n if (!isValidCookieDomain(cookieDomain)) {\n warn(\n `Ignoring invalid admin auth cookie domain \"${cookieDomain}\" (must be a bare host name); using a host-only cookie instead.`\n );\n return DEFAULT_AUTH_COOKIE_DOMAIN;\n }\n\n return cookieDomain;\n};\n"],"names":["DEFAULT_AUTH_COOKIE_DOMAIN","undefined","isValidCookieDomain","domain","test","resolveAuthCookieDomain","configuredDomain","warn","console","cookieDomain","trim"],"mappings":";;AAAA;;;;;;;;;;;;;;;;;;IAmBO,MAAMA,0BAAAA,GAA6BC;AAE1C,MAAMC,sBAAsB,CAACC,MAAAA,GAAAA;;;;IAI3B,OAAO,CAAC,uBAAA,CAAwBC,IAAI,CAACD,MAAAA,CAAAA;AACvC,CAAA;MAEaE,uBAAAA,GAA0B,CACrCC,gBAAAA,EACAC,IAAAA,GAAkCC,QAAQD,IAAI,GAAA;AAE9C,IAAA,MAAME,eAAe,CAACH,gBAAAA,IAAoB,EAAC,EAAGI,IAAI,EAAA;AAElD,IAAA,IAAI,CAACD,YAAAA,EAAc;QACjB,OAAOT,0BAAAA;AACT,IAAA;IAEA,IAAI,CAACE,oBAAoBO,YAAAA,CAAAA,EAAe;AACtCF,QAAAA,IAAAA,CACE,CAAC,2CAA2C,EAAEE,YAAAA,CAAa,+DAA+D,CAAC,CAAA;QAE7H,OAAOT,0BAAAA;AACT,IAAA;IAEA,OAAOS,YAAAA;AACT;;;;;"}
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
const isValidCookieDomain = (domain)=>{
|
|
21
21
|
// RFC 6265 domain-av: a host name. No leading dot required, no scheme, no
|
|
22
22
|
// path, no port, and none of the control/attribute-separator characters.
|
|
23
|
+
// eslint-disable-next-line no-control-regex -- CTL chars are exactly what RFC 6265 forbids
|
|
23
24
|
return !/[\x00-\x1F\x7F;,\s/:]/.test(domain);
|
|
24
25
|
};
|
|
25
26
|
const resolveAuthCookieDomain = (configuredDomain, warn = console.warn)=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-cookie-domain.mjs","sources":["../../../../shared/utils/auth-cookie-domain.ts"],"sourcesContent":["/**\n * Domain attribute of the admin auth (access) token cookie, configurable\n * through `admin.auth.cookie.domain` (falling back to `admin.auth.domain`) so\n * multiple Strapi instances under the same parent domain share, or stay\n * isolated to, the intended host.\n *\n * Browser-safe single source for both sides of the handoff: the admin panel\n * cannot read server config, so the build transports the config value into\n * the bundle through the internal `STRAPI_ADMIN_AUTH_COOKIE_DOMAIN` variable\n * (see create-build-context.ts in @strapi/strapi); the server resolves the\n * same config at runtime. Changing the domain requires an admin rebuild, like\n * any other admin config change.\n *\n * Defaults to `undefined` (host-only cookie) to match the browser default and\n * the refresh-cookie behaviour in `getRefreshCookieOptions` when no domain is\n * configured. A host-only cookie and a `Domain`-scoped cookie are distinct\n * entries in the browser cookie store, so set and delete must agree on the\n * domain or logout leaves a colliding copy behind.\n */\nexport const DEFAULT_AUTH_COOKIE_DOMAIN = undefined;\n\nconst isValidCookieDomain = (domain: string): boolean => {\n // RFC 6265 domain-av: a host name. No leading dot required, no scheme, no\n // path, no port, and none of the control/attribute-separator characters.\n return !/[\\x00-\\x1F\\x7F;,\\s/:]/.test(domain);\n};\n\nexport const resolveAuthCookieDomain = (\n configuredDomain?: string,\n warn: (message: string) => void = console.warn\n): string | undefined => {\n const cookieDomain = (configuredDomain || '').trim();\n\n if (!cookieDomain) {\n return DEFAULT_AUTH_COOKIE_DOMAIN;\n }\n\n if (!isValidCookieDomain(cookieDomain)) {\n warn(\n `Ignoring invalid admin auth cookie domain \"${cookieDomain}\" (must be a bare host name); using a host-only cookie instead.`\n );\n return DEFAULT_AUTH_COOKIE_DOMAIN;\n }\n\n return cookieDomain;\n};\n"],"names":["DEFAULT_AUTH_COOKIE_DOMAIN","undefined","isValidCookieDomain","domain","test","resolveAuthCookieDomain","configuredDomain","warn","console","cookieDomain","trim"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;IAmBO,MAAMA,0BAAAA,GAA6BC;AAE1C,MAAMC,sBAAsB,CAACC,MAAAA,GAAAA
|
|
1
|
+
{"version":3,"file":"auth-cookie-domain.mjs","sources":["../../../../shared/utils/auth-cookie-domain.ts"],"sourcesContent":["/**\n * Domain attribute of the admin auth (access) token cookie, configurable\n * through `admin.auth.cookie.domain` (falling back to `admin.auth.domain`) so\n * multiple Strapi instances under the same parent domain share, or stay\n * isolated to, the intended host.\n *\n * Browser-safe single source for both sides of the handoff: the admin panel\n * cannot read server config, so the build transports the config value into\n * the bundle through the internal `STRAPI_ADMIN_AUTH_COOKIE_DOMAIN` variable\n * (see create-build-context.ts in @strapi/strapi); the server resolves the\n * same config at runtime. Changing the domain requires an admin rebuild, like\n * any other admin config change.\n *\n * Defaults to `undefined` (host-only cookie) to match the browser default and\n * the refresh-cookie behaviour in `getRefreshCookieOptions` when no domain is\n * configured. A host-only cookie and a `Domain`-scoped cookie are distinct\n * entries in the browser cookie store, so set and delete must agree on the\n * domain or logout leaves a colliding copy behind.\n */\nexport const DEFAULT_AUTH_COOKIE_DOMAIN = undefined;\n\nconst isValidCookieDomain = (domain: string): boolean => {\n // RFC 6265 domain-av: a host name. No leading dot required, no scheme, no\n // path, no port, and none of the control/attribute-separator characters.\n // eslint-disable-next-line no-control-regex -- CTL chars are exactly what RFC 6265 forbids\n return !/[\\x00-\\x1F\\x7F;,\\s/:]/.test(domain);\n};\n\nexport const resolveAuthCookieDomain = (\n configuredDomain?: string,\n warn: (message: string) => void = console.warn\n): string | undefined => {\n const cookieDomain = (configuredDomain || '').trim();\n\n if (!cookieDomain) {\n return DEFAULT_AUTH_COOKIE_DOMAIN;\n }\n\n if (!isValidCookieDomain(cookieDomain)) {\n warn(\n `Ignoring invalid admin auth cookie domain \"${cookieDomain}\" (must be a bare host name); using a host-only cookie instead.`\n );\n return DEFAULT_AUTH_COOKIE_DOMAIN;\n }\n\n return cookieDomain;\n};\n"],"names":["DEFAULT_AUTH_COOKIE_DOMAIN","undefined","isValidCookieDomain","domain","test","resolveAuthCookieDomain","configuredDomain","warn","console","cookieDomain","trim"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;IAmBO,MAAMA,0BAAAA,GAA6BC;AAE1C,MAAMC,sBAAsB,CAACC,MAAAA,GAAAA;;;;IAI3B,OAAO,CAAC,uBAAA,CAAwBC,IAAI,CAACD,MAAAA,CAAAA;AACvC,CAAA;MAEaE,uBAAAA,GAA0B,CACrCC,gBAAAA,EACAC,IAAAA,GAAkCC,QAAQD,IAAI,GAAA;AAE9C,IAAA,MAAME,eAAe,CAACH,gBAAAA,IAAoB,EAAC,EAAGI,IAAI,EAAA;AAElD,IAAA,IAAI,CAACD,YAAAA,EAAc;QACjB,OAAOT,0BAAAA;AACT,IAAA;IAEA,IAAI,CAACE,oBAAoBO,YAAAA,CAAAA,EAAe;AACtCF,QAAAA,IAAAA,CACE,CAAC,2CAA2C,EAAEE,YAAAA,CAAa,+DAA+D,CAAC,CAAA;QAE7H,OAAOT,0BAAAA;AACT,IAAA;IAEA,OAAOS,YAAAA;AACT;;;;"}
|
|
@@ -20,6 +20,7 @@ const isValidCookiePath = (path)=>{
|
|
|
20
20
|
return false;
|
|
21
21
|
}
|
|
22
22
|
// RFC 6265 path-av: any CHAR except CTLs or ";".
|
|
23
|
+
// eslint-disable-next-line no-control-regex -- CTL chars are exactly what RFC 6265 forbids
|
|
23
24
|
return !/[\x00-\x1F\x7F;]/.test(path);
|
|
24
25
|
};
|
|
25
26
|
const resolveAuthCookiePath = (configuredPath, warn = console.warn)=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-cookie-path.js","sources":["../../../../shared/utils/auth-cookie-path.ts"],"sourcesContent":["/**\n * Path attribute of the admin auth (access) token cookie, configurable\n * through `admin.auth.cookie.path` so multiple Strapi instances on the same\n * parent domain can keep separate cookies (e.g. `/strapi-de/admin`).\n *\n * Browser-safe single source for both sides of the handoff: the admin panel\n * cannot read server config, so the build transports the config value into\n * the bundle through the internal `STRAPI_ADMIN_AUTH_COOKIE_PATH` variable\n * (see create-build-context.ts in @strapi/strapi); the server resolves the\n * same config at runtime. Changing the path requires an admin rebuild, like\n * any other admin config change.\n *\n * Defaults to `/admin` to match the refresh-cookie path used by\n * `getRefreshCookieOptions`.\n */\nexport const DEFAULT_AUTH_COOKIE_PATH = '/admin';\n\nconst isValidCookiePath = (path: string): boolean => {\n if (!path.startsWith('/')) {\n return false;\n }\n\n // RFC 6265 path-av: any CHAR except CTLs or \";\".\n return !/[\\x00-\\x1F\\x7F;]/.test(path);\n};\n\nexport const resolveAuthCookiePath = (\n configuredPath?: string,\n warn: (message: string) => void = console.warn\n): string => {\n const cookiePath = (configuredPath || '').trim();\n\n if (!cookiePath) {\n return DEFAULT_AUTH_COOKIE_PATH;\n }\n\n if (!isValidCookiePath(cookiePath)) {\n warn(\n `Ignoring invalid admin auth cookie path \"${cookiePath}\" (must be an absolute path without \";\"); using \"${DEFAULT_AUTH_COOKIE_PATH}\" instead.`\n );\n return DEFAULT_AUTH_COOKIE_PATH;\n }\n\n return cookiePath;\n};\n"],"names":["DEFAULT_AUTH_COOKIE_PATH","isValidCookiePath","path","startsWith","test","resolveAuthCookiePath","configuredPath","warn","console","cookiePath","trim"],"mappings":";;AAAA;;;;;;;;;;;;;;IAeO,MAAMA,wBAAAA,GAA2B;AAExC,MAAMC,oBAAoB,CAACC,IAAAA,GAAAA;AACzB,IAAA,IAAI,CAACA,IAAAA,CAAKC,UAAU,CAAC,GAAA,CAAA,EAAM;QACzB,OAAO,KAAA;AACT,IAAA
|
|
1
|
+
{"version":3,"file":"auth-cookie-path.js","sources":["../../../../shared/utils/auth-cookie-path.ts"],"sourcesContent":["/**\n * Path attribute of the admin auth (access) token cookie, configurable\n * through `admin.auth.cookie.path` so multiple Strapi instances on the same\n * parent domain can keep separate cookies (e.g. `/strapi-de/admin`).\n *\n * Browser-safe single source for both sides of the handoff: the admin panel\n * cannot read server config, so the build transports the config value into\n * the bundle through the internal `STRAPI_ADMIN_AUTH_COOKIE_PATH` variable\n * (see create-build-context.ts in @strapi/strapi); the server resolves the\n * same config at runtime. Changing the path requires an admin rebuild, like\n * any other admin config change.\n *\n * Defaults to `/admin` to match the refresh-cookie path used by\n * `getRefreshCookieOptions`.\n */\nexport const DEFAULT_AUTH_COOKIE_PATH = '/admin';\n\nconst isValidCookiePath = (path: string): boolean => {\n if (!path.startsWith('/')) {\n return false;\n }\n\n // RFC 6265 path-av: any CHAR except CTLs or \";\".\n // eslint-disable-next-line no-control-regex -- CTL chars are exactly what RFC 6265 forbids\n return !/[\\x00-\\x1F\\x7F;]/.test(path);\n};\n\nexport const resolveAuthCookiePath = (\n configuredPath?: string,\n warn: (message: string) => void = console.warn\n): string => {\n const cookiePath = (configuredPath || '').trim();\n\n if (!cookiePath) {\n return DEFAULT_AUTH_COOKIE_PATH;\n }\n\n if (!isValidCookiePath(cookiePath)) {\n warn(\n `Ignoring invalid admin auth cookie path \"${cookiePath}\" (must be an absolute path without \";\"); using \"${DEFAULT_AUTH_COOKIE_PATH}\" instead.`\n );\n return DEFAULT_AUTH_COOKIE_PATH;\n }\n\n return cookiePath;\n};\n"],"names":["DEFAULT_AUTH_COOKIE_PATH","isValidCookiePath","path","startsWith","test","resolveAuthCookiePath","configuredPath","warn","console","cookiePath","trim"],"mappings":";;AAAA;;;;;;;;;;;;;;IAeO,MAAMA,wBAAAA,GAA2B;AAExC,MAAMC,oBAAoB,CAACC,IAAAA,GAAAA;AACzB,IAAA,IAAI,CAACA,IAAAA,CAAKC,UAAU,CAAC,GAAA,CAAA,EAAM;QACzB,OAAO,KAAA;AACT,IAAA;;;IAIA,OAAO,CAAC,kBAAA,CAAmBC,IAAI,CAACF,IAAAA,CAAAA;AAClC,CAAA;MAEaG,qBAAAA,GAAwB,CACnCC,cAAAA,EACAC,IAAAA,GAAkCC,QAAQD,IAAI,GAAA;AAE9C,IAAA,MAAME,aAAa,CAACH,cAAAA,IAAkB,EAAC,EAAGI,IAAI,EAAA;AAE9C,IAAA,IAAI,CAACD,UAAAA,EAAY;QACf,OAAOT,wBAAAA;AACT,IAAA;IAEA,IAAI,CAACC,kBAAkBQ,UAAAA,CAAAA,EAAa;QAClCF,IAAAA,CACE,CAAC,yCAAyC,EAAEE,UAAAA,CAAW,iDAAiD,EAAET,wBAAAA,CAAyB,UAAU,CAAC,CAAA;QAEhJ,OAAOA,wBAAAA;AACT,IAAA;IAEA,OAAOS,UAAAA;AACT;;;;;"}
|
|
@@ -18,6 +18,7 @@ const isValidCookiePath = (path)=>{
|
|
|
18
18
|
return false;
|
|
19
19
|
}
|
|
20
20
|
// RFC 6265 path-av: any CHAR except CTLs or ";".
|
|
21
|
+
// eslint-disable-next-line no-control-regex -- CTL chars are exactly what RFC 6265 forbids
|
|
21
22
|
return !/[\x00-\x1F\x7F;]/.test(path);
|
|
22
23
|
};
|
|
23
24
|
const resolveAuthCookiePath = (configuredPath, warn = console.warn)=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-cookie-path.mjs","sources":["../../../../shared/utils/auth-cookie-path.ts"],"sourcesContent":["/**\n * Path attribute of the admin auth (access) token cookie, configurable\n * through `admin.auth.cookie.path` so multiple Strapi instances on the same\n * parent domain can keep separate cookies (e.g. `/strapi-de/admin`).\n *\n * Browser-safe single source for both sides of the handoff: the admin panel\n * cannot read server config, so the build transports the config value into\n * the bundle through the internal `STRAPI_ADMIN_AUTH_COOKIE_PATH` variable\n * (see create-build-context.ts in @strapi/strapi); the server resolves the\n * same config at runtime. Changing the path requires an admin rebuild, like\n * any other admin config change.\n *\n * Defaults to `/admin` to match the refresh-cookie path used by\n * `getRefreshCookieOptions`.\n */\nexport const DEFAULT_AUTH_COOKIE_PATH = '/admin';\n\nconst isValidCookiePath = (path: string): boolean => {\n if (!path.startsWith('/')) {\n return false;\n }\n\n // RFC 6265 path-av: any CHAR except CTLs or \";\".\n return !/[\\x00-\\x1F\\x7F;]/.test(path);\n};\n\nexport const resolveAuthCookiePath = (\n configuredPath?: string,\n warn: (message: string) => void = console.warn\n): string => {\n const cookiePath = (configuredPath || '').trim();\n\n if (!cookiePath) {\n return DEFAULT_AUTH_COOKIE_PATH;\n }\n\n if (!isValidCookiePath(cookiePath)) {\n warn(\n `Ignoring invalid admin auth cookie path \"${cookiePath}\" (must be an absolute path without \";\"); using \"${DEFAULT_AUTH_COOKIE_PATH}\" instead.`\n );\n return DEFAULT_AUTH_COOKIE_PATH;\n }\n\n return cookiePath;\n};\n"],"names":["DEFAULT_AUTH_COOKIE_PATH","isValidCookiePath","path","startsWith","test","resolveAuthCookiePath","configuredPath","warn","console","cookiePath","trim"],"mappings":"AAAA;;;;;;;;;;;;;;IAeO,MAAMA,wBAAAA,GAA2B;AAExC,MAAMC,oBAAoB,CAACC,IAAAA,GAAAA;AACzB,IAAA,IAAI,CAACA,IAAAA,CAAKC,UAAU,CAAC,GAAA,CAAA,EAAM;QACzB,OAAO,KAAA;AACT,IAAA
|
|
1
|
+
{"version":3,"file":"auth-cookie-path.mjs","sources":["../../../../shared/utils/auth-cookie-path.ts"],"sourcesContent":["/**\n * Path attribute of the admin auth (access) token cookie, configurable\n * through `admin.auth.cookie.path` so multiple Strapi instances on the same\n * parent domain can keep separate cookies (e.g. `/strapi-de/admin`).\n *\n * Browser-safe single source for both sides of the handoff: the admin panel\n * cannot read server config, so the build transports the config value into\n * the bundle through the internal `STRAPI_ADMIN_AUTH_COOKIE_PATH` variable\n * (see create-build-context.ts in @strapi/strapi); the server resolves the\n * same config at runtime. Changing the path requires an admin rebuild, like\n * any other admin config change.\n *\n * Defaults to `/admin` to match the refresh-cookie path used by\n * `getRefreshCookieOptions`.\n */\nexport const DEFAULT_AUTH_COOKIE_PATH = '/admin';\n\nconst isValidCookiePath = (path: string): boolean => {\n if (!path.startsWith('/')) {\n return false;\n }\n\n // RFC 6265 path-av: any CHAR except CTLs or \";\".\n // eslint-disable-next-line no-control-regex -- CTL chars are exactly what RFC 6265 forbids\n return !/[\\x00-\\x1F\\x7F;]/.test(path);\n};\n\nexport const resolveAuthCookiePath = (\n configuredPath?: string,\n warn: (message: string) => void = console.warn\n): string => {\n const cookiePath = (configuredPath || '').trim();\n\n if (!cookiePath) {\n return DEFAULT_AUTH_COOKIE_PATH;\n }\n\n if (!isValidCookiePath(cookiePath)) {\n warn(\n `Ignoring invalid admin auth cookie path \"${cookiePath}\" (must be an absolute path without \";\"); using \"${DEFAULT_AUTH_COOKIE_PATH}\" instead.`\n );\n return DEFAULT_AUTH_COOKIE_PATH;\n }\n\n return cookiePath;\n};\n"],"names":["DEFAULT_AUTH_COOKIE_PATH","isValidCookiePath","path","startsWith","test","resolveAuthCookiePath","configuredPath","warn","console","cookiePath","trim"],"mappings":"AAAA;;;;;;;;;;;;;;IAeO,MAAMA,wBAAAA,GAA2B;AAExC,MAAMC,oBAAoB,CAACC,IAAAA,GAAAA;AACzB,IAAA,IAAI,CAACA,IAAAA,CAAKC,UAAU,CAAC,GAAA,CAAA,EAAM;QACzB,OAAO,KAAA;AACT,IAAA;;;IAIA,OAAO,CAAC,kBAAA,CAAmBC,IAAI,CAACF,IAAAA,CAAAA;AAClC,CAAA;MAEaG,qBAAAA,GAAwB,CACnCC,cAAAA,EACAC,IAAAA,GAAkCC,QAAQD,IAAI,GAAA;AAE9C,IAAA,MAAME,aAAa,CAACH,cAAAA,IAAkB,EAAC,EAAGI,IAAI,EAAA;AAE9C,IAAA,IAAI,CAACD,UAAAA,EAAY;QACf,OAAOT,wBAAAA;AACT,IAAA;IAEA,IAAI,CAACC,kBAAkBQ,UAAAA,CAAAA,EAAa;QAClCF,IAAAA,CACE,CAAC,yCAAyC,EAAEE,UAAAA,CAAW,iDAAiD,EAAET,wBAAAA,CAAyB,UAAU,CAAC,CAAA;QAEhJ,OAAOA,wBAAAA;AACT,IAAA;IAEA,OAAOS,UAAAA;AACT;;;;"}
|
|
@@ -1,6 +1,16 @@
|
|
|
1
|
+
import { type IntlShape } from 'react-intl';
|
|
1
2
|
interface RegisterProps {
|
|
2
3
|
hasAdmin?: boolean;
|
|
3
4
|
}
|
|
5
|
+
/**
|
|
6
|
+
* @description Turns a yup validation message into a displayable string. The message can be a
|
|
7
|
+
* plain string, a descriptor, or a descriptor wrapped in `{ message }` / `{ errors: [] }`.
|
|
8
|
+
*
|
|
9
|
+
* `values` is forwarded to `formatMessage`, otherwise react-intl cannot interpolate placeholders
|
|
10
|
+
* such as the `{min}` of `components.Input.error.validation.minLength` and renders the raw
|
|
11
|
+
* pattern instead. See strapi/strapi#19030.
|
|
12
|
+
*/
|
|
13
|
+
export declare const formatValidationMessage: (msg: unknown, formatMessage: IntlShape["formatMessage"]) => string;
|
|
4
14
|
declare const Register: ({ hasAdmin }: RegisterProps) => import("react/jsx-runtime").JSX.Element;
|
|
5
15
|
export { Register };
|
|
6
16
|
export type { RegisterProps };
|
|
@@ -1,2 +1,7 @@
|
|
|
1
1
|
import { Filters } from '../../../../../../../../admin/src/components/Filters';
|
|
2
|
-
export
|
|
2
|
+
export interface ComboboxFilterProps extends Filters.ValueInputProps {
|
|
3
|
+
loading?: boolean;
|
|
4
|
+
hasMoreItems?: boolean;
|
|
5
|
+
onLoadMore?: () => void;
|
|
6
|
+
}
|
|
7
|
+
export declare const ComboboxFilter: ({ loading, hasMoreItems, onLoadMore, ...props }: ComboboxFilterProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
export declare const useAuditLogsData: ({ canReadAuditLogs,
|
|
1
|
+
export declare const useAuditLogsData: ({ canReadAuditLogs, usersPageSize, }: {
|
|
2
2
|
canReadAuditLogs: boolean;
|
|
3
|
-
|
|
3
|
+
usersPageSize: number;
|
|
4
4
|
}) => {
|
|
5
5
|
auditLogs: import("../../../../../../../../shared/contracts/audit-logs").GetAll.Response | undefined;
|
|
6
|
-
users: import("../../../../../../../../
|
|
6
|
+
users: Pick<import("../../../../../../../../shared/contracts/audit-logs").SanitizedAdminUserForAuditLogs, "displayName" | "id" | "email">[];
|
|
7
|
+
usersPagination: import("../../../../../../../../shared/contracts/shared").Pagination | undefined;
|
|
8
|
+
isLoadingUsers: boolean;
|
|
7
9
|
isLoading: boolean;
|
|
8
10
|
hasError: boolean;
|
|
9
11
|
};
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { IntlShape } from 'react-intl';
|
|
2
2
|
import { Filters } from '../../../../../../../../admin/src/components/Filters';
|
|
3
|
-
import {
|
|
4
|
-
|
|
3
|
+
import { GetUsers } from '../../../../../../../../shared/contracts/audit-logs';
|
|
4
|
+
import { ComboboxFilterProps } from '../components/ComboboxFilter';
|
|
5
|
+
type UsersFilterProps = Pick<ComboboxFilterProps, 'loading' | 'hasMoreItems' | 'onLoadMore'>;
|
|
6
|
+
type AuditLogUser = NonNullable<GetUsers.Response['results']>[number];
|
|
7
|
+
export declare const getDisplayedFilters: ({ formatMessage, users, usersFilter, }: {
|
|
5
8
|
formatMessage: IntlShape["formatMessage"];
|
|
6
|
-
users:
|
|
7
|
-
|
|
9
|
+
users: AuditLogUser[];
|
|
10
|
+
usersFilter?: UsersFilterProps;
|
|
8
11
|
}) => Filters.Filter[];
|
|
12
|
+
export {};
|