@strapi/plugin-users-permissions 0.0.0-next.f7babb775ed9a7e18d8351cb7f74c63e016323c4 → 0.0.0-next.f8af92b375dc730ba47ed2117f25df893aae696c
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/.eslintignore +1 -2
- package/.eslintrc +17 -0
- package/admin/src/components/Permissions/{index.js → index.jsx} +2 -4
- package/admin/src/index.js +12 -23
- package/admin/src/pages/AdvancedSettings/{index.js → index.jsx} +41 -24
- package/admin/src/pages/EmailTemplates/{index.js → index.jsx} +62 -47
- package/admin/src/pages/Providers/{index.js → index.jsx} +64 -58
- package/admin/src/{hooks → pages/Roles/hooks}/usePlugins.js +15 -8
- package/admin/src/pages/Roles/{index.js → index.jsx} +10 -7
- package/admin/src/pages/Roles/pages/CreatePage.jsx +199 -0
- package/admin/src/pages/Roles/pages/EditPage.jsx +220 -0
- package/admin/src/pages/Roles/{ListPage/components/TableBody.js → pages/ListPage/components/TableBody.jsx} +44 -14
- package/admin/src/pages/Roles/{ListPage/index.js → pages/ListPage/index.jsx} +19 -15
- package/admin/src/translations/zh-Hans.json +80 -80
- package/dist/_chunks/ar-MvD8Ghac.mjs +44 -0
- package/dist/_chunks/ar-MvD8Ghac.mjs.map +1 -0
- package/dist/_chunks/ar-t5qTFaAD.js +44 -0
- package/dist/_chunks/ar-t5qTFaAD.js.map +1 -0
- package/dist/_chunks/cs-BMuXwxA1.mjs +50 -0
- package/dist/_chunks/cs-BMuXwxA1.mjs.map +1 -0
- package/dist/_chunks/cs-I8N4u-Sd.js +50 -0
- package/dist/_chunks/cs-I8N4u-Sd.js.map +1 -0
- package/dist/_chunks/de-YTjtq89K.js +62 -0
- package/dist/_chunks/de-YTjtq89K.js.map +1 -0
- package/dist/_chunks/de-zs2qqc0W.mjs +62 -0
- package/dist/_chunks/de-zs2qqc0W.mjs.map +1 -0
- package/dist/_chunks/dk-HctVBMsG.mjs +86 -0
- package/dist/_chunks/dk-HctVBMsG.mjs.map +1 -0
- package/dist/_chunks/dk-TF-dWjzl.js +86 -0
- package/dist/_chunks/dk-TF-dWjzl.js.map +1 -0
- package/dist/_chunks/en-CE3wEy_c.mjs +86 -0
- package/dist/_chunks/en-CE3wEy_c.mjs.map +1 -0
- package/dist/_chunks/en-m608rMZx.js +86 -0
- package/dist/_chunks/en-m608rMZx.js.map +1 -0
- package/dist/_chunks/es-9381tih_.mjs +86 -0
- package/dist/_chunks/es-9381tih_.mjs.map +1 -0
- package/dist/_chunks/es-XBQsB8_9.js +86 -0
- package/dist/_chunks/es-XBQsB8_9.js.map +1 -0
- package/dist/_chunks/fr-6cz3U-IF.js +50 -0
- package/dist/_chunks/fr-6cz3U-IF.js.map +1 -0
- package/dist/_chunks/fr-CMSc77If.mjs +50 -0
- package/dist/_chunks/fr-CMSc77If.mjs.map +1 -0
- package/dist/_chunks/id-RJ934rq-.js +62 -0
- package/dist/_chunks/id-RJ934rq-.js.map +1 -0
- package/dist/_chunks/id-SDuyIkZa.mjs +62 -0
- package/dist/_chunks/id-SDuyIkZa.mjs.map +1 -0
- package/dist/_chunks/index-9gWaMWEm.js +407 -0
- package/dist/_chunks/index-9gWaMWEm.js.map +1 -0
- package/dist/_chunks/index-GrQm7Vzp.mjs +385 -0
- package/dist/_chunks/index-GrQm7Vzp.mjs.map +1 -0
- package/dist/_chunks/index-IrxIszoz.mjs +250 -0
- package/dist/_chunks/index-IrxIszoz.mjs.map +1 -0
- package/dist/_chunks/index-OAhEloLu.mjs +615 -0
- package/dist/_chunks/index-OAhEloLu.mjs.map +1 -0
- package/dist/_chunks/index-Pd_ARJrq.js +1191 -0
- package/dist/_chunks/index-Pd_ARJrq.js.map +1 -0
- package/dist/_chunks/index-VwrATkHQ.js +320 -0
- package/dist/_chunks/index-VwrATkHQ.js.map +1 -0
- package/dist/_chunks/index-jmZgp6D6.mjs +1159 -0
- package/dist/_chunks/index-jmZgp6D6.mjs.map +1 -0
- package/dist/_chunks/index-oskitS-P.js +249 -0
- package/dist/_chunks/index-oskitS-P.js.map +1 -0
- package/dist/_chunks/index-uaeObIW1.js +638 -0
- package/dist/_chunks/index-uaeObIW1.js.map +1 -0
- package/dist/_chunks/index-x0N2TQLH.mjs +301 -0
- package/dist/_chunks/index-x0N2TQLH.mjs.map +1 -0
- package/dist/_chunks/it-YhZOlM2X.js +62 -0
- package/dist/_chunks/it-YhZOlM2X.js.map +1 -0
- package/dist/_chunks/it-bvH7DgQo.mjs +62 -0
- package/dist/_chunks/it-bvH7DgQo.mjs.map +1 -0
- package/dist/_chunks/ja-o_-JPvQv.mjs +48 -0
- package/dist/_chunks/ja-o_-JPvQv.mjs.map +1 -0
- package/dist/_chunks/ja-xssHUXFv.js +48 -0
- package/dist/_chunks/ja-xssHUXFv.js.map +1 -0
- package/dist/_chunks/ko-C3mHUSJa.js +86 -0
- package/dist/_chunks/ko-C3mHUSJa.js.map +1 -0
- package/dist/_chunks/ko-XJbPSez_.mjs +86 -0
- package/dist/_chunks/ko-XJbPSez_.mjs.map +1 -0
- package/dist/_chunks/ms-II5Ea73J.mjs +49 -0
- package/dist/_chunks/ms-II5Ea73J.mjs.map +1 -0
- package/dist/_chunks/ms-d0hfg65Z.js +49 -0
- package/dist/_chunks/ms-d0hfg65Z.js.map +1 -0
- package/dist/_chunks/nl-TA7TfK_5.js +48 -0
- package/dist/_chunks/nl-TA7TfK_5.js.map +1 -0
- package/dist/_chunks/nl-vEy6TN0K.mjs +48 -0
- package/dist/_chunks/nl-vEy6TN0K.mjs.map +1 -0
- package/dist/_chunks/pl-0pUL9hdA.js +86 -0
- package/dist/_chunks/pl-0pUL9hdA.js.map +1 -0
- package/dist/_chunks/pl-2VowaFGt.mjs +86 -0
- package/dist/_chunks/pl-2VowaFGt.mjs.map +1 -0
- package/dist/_chunks/pt-BR-WNOhafR4.js +44 -0
- package/dist/_chunks/pt-BR-WNOhafR4.js.map +1 -0
- package/dist/_chunks/pt-BR-sS1Xp3Jt.mjs +44 -0
- package/dist/_chunks/pt-BR-sS1Xp3Jt.mjs.map +1 -0
- package/dist/_chunks/pt-Rf9W51IO.mjs +48 -0
- package/dist/_chunks/pt-Rf9W51IO.mjs.map +1 -0
- package/dist/_chunks/pt-guNR9Gax.js +48 -0
- package/dist/_chunks/pt-guNR9Gax.js.map +1 -0
- package/dist/_chunks/ru-X3BMXDds.js +86 -0
- package/dist/_chunks/ru-X3BMXDds.js.map +1 -0
- package/dist/_chunks/ru-qKHnd5or.mjs +86 -0
- package/dist/_chunks/ru-qKHnd5or.mjs.map +1 -0
- package/dist/_chunks/sk-NWPw1oTN.js +50 -0
- package/dist/_chunks/sk-NWPw1oTN.js.map +1 -0
- package/dist/_chunks/sk-_Ryr-eTT.mjs +50 -0
- package/dist/_chunks/sk-_Ryr-eTT.mjs.map +1 -0
- package/dist/_chunks/sv-76NnbB__.js +86 -0
- package/dist/_chunks/sv-76NnbB__.js.map +1 -0
- package/dist/_chunks/sv-BqzScFXS.mjs +86 -0
- package/dist/_chunks/sv-BqzScFXS.mjs.map +1 -0
- package/dist/_chunks/th-WsknMEpq.mjs +60 -0
- package/dist/_chunks/th-WsknMEpq.mjs.map +1 -0
- package/dist/_chunks/th-cbppX21D.js +60 -0
- package/dist/_chunks/th-cbppX21D.js.map +1 -0
- package/dist/_chunks/tr-6mm_Fmz7.js +85 -0
- package/dist/_chunks/tr-6mm_Fmz7.js.map +1 -0
- package/dist/_chunks/tr-_DB1F1GW.mjs +85 -0
- package/dist/_chunks/tr-_DB1F1GW.mjs.map +1 -0
- package/dist/_chunks/uk-sI2I1ogF.js +49 -0
- package/dist/_chunks/uk-sI2I1ogF.js.map +1 -0
- package/dist/_chunks/uk-yxMSQAwI.mjs +49 -0
- package/dist/_chunks/uk-yxMSQAwI.mjs.map +1 -0
- package/dist/_chunks/vi-A3zJxaiI.js +50 -0
- package/dist/_chunks/vi-A3zJxaiI.js.map +1 -0
- package/dist/_chunks/vi-xY0zCW3d.mjs +50 -0
- package/dist/_chunks/vi-xY0zCW3d.mjs.map +1 -0
- package/dist/_chunks/zh-72SpmFXa.js +86 -0
- package/dist/_chunks/zh-72SpmFXa.js.map +1 -0
- package/dist/_chunks/zh-Hans-ArWWtyP4.js +86 -0
- package/dist/_chunks/zh-Hans-ArWWtyP4.js.map +1 -0
- package/dist/_chunks/zh-Hans-E84cu4kP.mjs +86 -0
- package/dist/_chunks/zh-Hans-E84cu4kP.mjs.map +1 -0
- package/dist/_chunks/zh-OFeldzbX.mjs +86 -0
- package/dist/_chunks/zh-OFeldzbX.mjs.map +1 -0
- package/dist/admin/index.js +5 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/index.mjs +6 -0
- package/dist/admin/index.mjs.map +1 -0
- package/documentation/content-api.yaml +1 -1
- package/jest.config.front.js +1 -1
- package/package.json +34 -14
- package/packup.config.ts +22 -0
- package/server/bootstrap/index.js +36 -0
- package/server/controllers/auth.js +51 -14
- package/server/controllers/user.js +12 -1
- package/server/middlewares/rateLimit.js +1 -1
- package/.eslintrc.js +0 -14
- package/admin/src/hooks/index.js +0 -5
- package/admin/src/hooks/useFetchRole/index.js +0 -67
- package/admin/src/hooks/useFetchRole/reducer.js +0 -31
- package/admin/src/hooks/useForm/index.js +0 -68
- package/admin/src/hooks/useForm/reducer.js +0 -40
- package/admin/src/hooks/useRolesList/index.js +0 -65
- package/admin/src/hooks/useRolesList/init.js +0 -5
- package/admin/src/hooks/useRolesList/reducer.js +0 -31
- package/admin/src/pages/AdvancedSettings/utils/api.js +0 -16
- package/admin/src/pages/EmailTemplates/utils/api.js +0 -16
- package/admin/src/pages/Providers/reducer.js +0 -54
- package/admin/src/pages/Providers/utils/api.js +0 -24
- package/admin/src/pages/Providers/utils/createProvidersArray.js +0 -21
- package/admin/src/pages/Roles/CreatePage.js +0 -185
- package/admin/src/pages/Roles/EditPage.js +0 -197
- package/admin/src/pages/Roles/ProtectedCreatePage.js +0 -15
- package/admin/src/pages/Roles/ProtectedEditPage.js +0 -15
- package/admin/src/pages/Roles/ProtectedListPage.js +0 -17
- package/strapi-admin.js +0 -3
- /package/admin/src/components/BoundRoute/{index.js → index.jsx} +0 -0
- /package/admin/src/components/FormModal/Input/{index.js → index.jsx} +0 -0
- /package/admin/src/components/FormModal/{index.js → index.jsx} +0 -0
- /package/admin/src/components/Permissions/PermissionRow/{CheckboxWrapper.js → CheckboxWrapper.jsx} +0 -0
- /package/admin/src/components/Permissions/PermissionRow/{SubCategory.js → SubCategory.jsx} +0 -0
- /package/admin/src/components/Permissions/PermissionRow/{index.js → index.jsx} +0 -0
- /package/admin/src/components/Policies/{index.js → index.jsx} +0 -0
- /package/admin/src/components/UsersPermissions/{index.js → index.jsx} +0 -0
- /package/admin/src/contexts/UsersPermissionsContext/{index.js → index.jsx} +0 -0
- /package/admin/src/pages/EmailTemplates/components/{EmailForm.js → EmailForm.jsx} +0 -0
- /package/admin/src/pages/EmailTemplates/components/{EmailTable.js → EmailTable.jsx} +0 -0
- /package/admin/src/pages/Roles/{ListPage → pages/ListPage}/utils/api.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-uaeObIW1.js","sources":["../../admin/src/components/FormModal/Input/index.jsx","../../admin/src/components/FormModal/index.jsx","../../admin/src/pages/Providers/utils/forms.js","../../admin/src/pages/Providers/index.jsx"],"sourcesContent":["/**\n *\n * Input\n *\n */\n\nimport React from 'react';\n\nimport { TextInput, ToggleInput } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nconst Input = ({\n description,\n disabled,\n intlLabel,\n error,\n name,\n onChange,\n placeholder,\n providerToEditName,\n type,\n value,\n}) => {\n const { formatMessage } = useIntl();\n const inputValue =\n name === 'noName'\n ? `${window.strapi.backendURL}/api/connect/${providerToEditName}/callback`\n : value;\n\n const label = formatMessage(\n { id: intlLabel.id, defaultMessage: intlLabel.defaultMessage },\n { provider: providerToEditName, ...intlLabel.values }\n );\n const hint = description\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { provider: providerToEditName, ...description.values }\n )\n : '';\n\n if (type === 'bool') {\n return (\n <ToggleInput\n aria-label={name}\n checked={value}\n disabled={disabled}\n hint={hint}\n label={label}\n name={name}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n onChange({ target: { name, value: e.target.checked } });\n }}\n />\n );\n }\n\n const formattedPlaceholder = placeholder\n ? formatMessage(\n { id: placeholder.id, defaultMessage: placeholder.defaultMessage },\n { ...placeholder.values }\n )\n : '';\n\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n\n return (\n <TextInput\n aria-label={name}\n disabled={disabled}\n error={errorMessage}\n label={label}\n name={name}\n onChange={onChange}\n placeholder={formattedPlaceholder}\n type={type}\n value={inputValue}\n />\n );\n};\n\nInput.defaultProps = {\n description: null,\n disabled: false,\n error: '',\n placeholder: null,\n value: '',\n};\n\nInput.propTypes = {\n description: PropTypes.shape({\n id: PropTypes.string.isRequired,\n defaultMessage: PropTypes.string.isRequired,\n values: PropTypes.object,\n }),\n disabled: PropTypes.bool,\n error: PropTypes.string,\n intlLabel: PropTypes.shape({\n id: PropTypes.string.isRequired,\n defaultMessage: PropTypes.string.isRequired,\n values: PropTypes.object,\n }).isRequired,\n name: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n placeholder: PropTypes.shape({\n id: PropTypes.string.isRequired,\n defaultMessage: PropTypes.string.isRequired,\n values: PropTypes.object,\n }),\n providerToEditName: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n value: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n};\n\nexport default Input;\n","/**\n *\n * FormModal\n *\n */\n\nimport React from 'react';\n\nimport {\n Button,\n Flex,\n Grid,\n GridItem,\n ModalBody,\n ModalFooter,\n ModalHeader,\n ModalLayout,\n} from '@strapi/design-system';\nimport { Breadcrumbs, Crumb } from '@strapi/design-system/v2';\nimport { Form } from '@strapi/helper-plugin';\nimport { Formik } from 'formik';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport Input from './Input';\n\nconst FormModal = ({\n headerBreadcrumbs,\n initialData,\n isSubmiting,\n layout,\n isOpen,\n onSubmit,\n onToggle,\n providerToEditName,\n}) => {\n const { formatMessage } = useIntl();\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <ModalLayout onClose={onToggle} labelledBy=\"title\">\n <ModalHeader>\n <Breadcrumbs label={headerBreadcrumbs.join(', ')}>\n {headerBreadcrumbs.map((crumb, index, arr) => (\n <Crumb isCurrent={index === arr.length - 1} key={crumb}>\n {crumb}\n </Crumb>\n ))}\n </Breadcrumbs>\n </ModalHeader>\n <Formik\n onSubmit={(values) => onSubmit(values)}\n initialValues={initialData}\n validationSchema={layout.schema}\n validateOnChange={false}\n >\n {({ errors, handleChange, values }) => {\n return (\n <Form>\n <ModalBody>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Grid gap={5}>\n {layout.form.map((row) => {\n return row.map((input) => {\n return (\n <GridItem key={input.name} col={input.size} xs={12}>\n <Input\n {...input}\n error={errors[input.name]}\n onChange={handleChange}\n value={values[input.name]}\n providerToEditName={providerToEditName}\n />\n </GridItem>\n );\n });\n })}\n </Grid>\n </Flex>\n </ModalBody>\n <ModalFooter\n startActions={\n <Button variant=\"tertiary\" onClick={onToggle} type=\"button\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n }\n endActions={\n <Button type=\"submit\" loading={isSubmiting}>\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n </Form>\n );\n }}\n </Formik>\n </ModalLayout>\n );\n};\n\nFormModal.defaultProps = {\n initialData: null,\n providerToEditName: null,\n};\n\nFormModal.propTypes = {\n headerBreadcrumbs: PropTypes.arrayOf(PropTypes.string).isRequired,\n initialData: PropTypes.object,\n layout: PropTypes.shape({\n form: PropTypes.arrayOf(PropTypes.array),\n schema: PropTypes.object,\n }).isRequired,\n isOpen: PropTypes.bool.isRequired,\n isSubmiting: PropTypes.bool.isRequired,\n onSubmit: PropTypes.func.isRequired,\n onToggle: PropTypes.func.isRequired,\n providerToEditName: PropTypes.string,\n};\n\nexport default FormModal;\n","import { translatedErrors } from '@strapi/helper-plugin';\nimport * as yup from 'yup';\n\nimport { getTrad } from '../../../utils';\n\nconst callbackLabel = {\n id: getTrad('PopUpForm.Providers.redirectURL.front-end.label'),\n defaultMessage: 'The redirect URL to your front-end app',\n};\nconst callbackPlaceholder = {\n id: 'http://www.client-app.com',\n defaultMessage: 'http://www.client-app.com',\n};\nconst enabledDescription = {\n id: getTrad('PopUpForm.Providers.enabled.description'),\n defaultMessage: \"If disabled, users won't be able to use this provider.\",\n};\nconst enabledLabel = {\n id: getTrad('PopUpForm.Providers.enabled.label'),\n defaultMessage: 'Enable',\n};\nconst keyLabel = { id: getTrad('PopUpForm.Providers.key.label'), defaultMessage: 'Client ID' };\nconst hintLabel = {\n id: getTrad('PopUpForm.Providers.redirectURL.label'),\n defaultMessage: 'The redirect URL to add in your {provider} application configurations',\n};\nconst textPlaceholder = {\n id: getTrad('PopUpForm.Providers.key.placeholder'),\n defaultMessage: 'TEXT',\n};\n\nconst secretLabel = {\n id: getTrad('PopUpForm.Providers.secret.label'),\n defaultMessage: 'Client Secret',\n};\n\nconst forms = {\n email: {\n form: [\n [\n {\n intlLabel: enabledLabel,\n name: 'enabled',\n type: 'bool',\n description: enabledDescription,\n size: 6,\n // TODO check if still needed\n // validations: {\n // required: true,\n // },\n },\n ],\n ],\n schema: yup.object().shape({\n enabled: yup.bool().required(translatedErrors.required),\n }),\n },\n providers: {\n form: [\n [\n {\n intlLabel: enabledLabel,\n name: 'enabled',\n type: 'bool',\n description: enabledDescription,\n size: 6,\n validations: {\n required: true,\n },\n },\n ],\n [\n {\n intlLabel: keyLabel,\n name: 'key',\n type: 'text',\n placeholder: textPlaceholder,\n size: 12,\n validations: {\n required: true,\n },\n },\n ],\n [\n {\n intlLabel: secretLabel,\n name: 'secret',\n type: 'text',\n placeholder: textPlaceholder,\n size: 12,\n validations: {\n required: true,\n },\n },\n ],\n [\n {\n intlLabel: callbackLabel,\n placeholder: callbackPlaceholder,\n name: 'callback',\n type: 'text',\n size: 12,\n validations: {\n required: true,\n },\n },\n ],\n [\n {\n intlLabel: hintLabel,\n name: 'noName',\n type: 'text',\n validations: {},\n size: 12,\n disabled: true,\n },\n ],\n ],\n schema: yup.object().shape({\n enabled: yup.bool().required(translatedErrors.required),\n key: yup.string().when('enabled', {\n is: true,\n then: yup.string().required(translatedErrors.required),\n otherwise: yup.string(),\n }),\n secret: yup.string().when('enabled', {\n is: true,\n then: yup.string().required(translatedErrors.required),\n otherwise: yup.string(),\n }),\n callback: yup.string().when('enabled', {\n is: true,\n then: yup.string().required(translatedErrors.required),\n otherwise: yup.string(),\n }),\n }),\n },\n providersWithSubdomain: {\n form: [\n [\n {\n intlLabel: enabledLabel,\n name: 'enabled',\n type: 'bool',\n description: enabledDescription,\n size: 6,\n validations: {\n required: true,\n },\n },\n ],\n [\n {\n intlLabel: keyLabel,\n name: 'key',\n type: 'text',\n placeholder: textPlaceholder,\n size: 12,\n validations: {\n required: true,\n },\n },\n ],\n [\n {\n intlLabel: secretLabel,\n name: 'secret',\n type: 'text',\n placeholder: textPlaceholder,\n size: 12,\n validations: {\n required: true,\n },\n },\n ],\n [\n {\n intlLabel: {\n id: getTrad({ id: 'PopUpForm.Providers.jwksurl.label' }),\n defaultMessage: 'JWKS URL',\n },\n name: 'jwksurl',\n type: 'text',\n placeholder: textPlaceholder,\n size: 12,\n validations: {\n required: false,\n },\n },\n ],\n\n [\n {\n intlLabel: {\n id: getTrad('PopUpForm.Providers.subdomain.label'),\n defaultMessage: 'Host URI (Subdomain)',\n },\n name: 'subdomain',\n type: 'text',\n placeholder: {\n id: getTrad('PopUpForm.Providers.subdomain.placeholder'),\n defaultMessage: 'my.subdomain.com',\n },\n size: 12,\n validations: {\n required: true,\n },\n },\n ],\n [\n {\n intlLabel: callbackLabel,\n placeholder: callbackPlaceholder,\n name: 'callback',\n type: 'text',\n size: 12,\n validations: {\n required: true,\n },\n },\n ],\n [\n {\n intlLabel: hintLabel,\n name: 'noName',\n type: 'text',\n validations: {},\n size: 12,\n disabled: true,\n },\n ],\n ],\n schema: yup.object().shape({\n enabled: yup.bool().required(translatedErrors.required),\n key: yup.string().when('enabled', {\n is: true,\n then: yup.string().required(translatedErrors.required),\n otherwise: yup.string(),\n }),\n secret: yup.string().when('enabled', {\n is: true,\n then: yup.string().required(translatedErrors.required),\n otherwise: yup.string(),\n }),\n subdomain: yup.string().when('enabled', {\n is: true,\n then: yup.string().required(translatedErrors.required),\n otherwise: yup.string(),\n }),\n callback: yup.string().when('enabled', {\n is: true,\n then: yup.string().required(translatedErrors.required),\n otherwise: yup.string(),\n }),\n }),\n },\n};\n\nexport default forms;\n","import * as React from 'react';\n\nimport {\n ContentLayout,\n HeaderLayout,\n IconButton,\n Layout,\n Main,\n Table,\n Tbody,\n Td,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n LoadingIndicatorPage,\n onRowClick,\n SettingsPageTitle,\n stopPropagation,\n useAPIErrorHandler,\n useCollator,\n useFetchClient,\n useFocusWhenNavigate,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n useTracking,\n} from '@strapi/helper-plugin';\nimport { Pencil } from '@strapi/icons';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery, useQueryClient } from 'react-query';\n\nimport FormModal from '../../components/FormModal';\nimport { PERMISSIONS } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport forms from './utils/forms';\n\nexport const ProvidersPage = () => {\n const { formatMessage, locale } = useIntl();\n const queryClient = useQueryClient();\n const { trackUsage } = useTracking();\n const [isOpen, setIsOpen] = React.useState(false);\n const [providerToEditName, setProviderToEditName] = React.useState(null);\n const toggleNotification = useNotification();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const { get, put } = useFetchClient();\n const { formatAPIError } = useAPIErrorHandler();\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n useFocusWhenNavigate();\n\n const {\n isLoading: isLoadingPermissions,\n allowedActions: { canUpdate },\n } = useRBAC({ update: PERMISSIONS.updateProviders });\n\n const { isLoading: isLoadingData, data } = useQuery(\n ['users-permissions', 'get-providers'],\n async () => {\n const { data } = await get('/users-permissions/providers');\n\n return data;\n },\n {\n initialData: {},\n }\n );\n\n const submitMutation = useMutation((body) => put('/users-permissions/providers', body), {\n async onSuccess() {\n await queryClient.invalidateQueries(['users-permissions', 'providers']);\n\n toggleNotification({\n type: 'success',\n message: { id: getTrad('notification.success.submit') },\n });\n\n trackUsage('didEditAuthenticationProvider');\n\n handleToggleModal();\n unlockApp();\n },\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n\n unlockApp();\n },\n refetchActive: false,\n });\n\n const providers = Object.entries(data)\n .reduce((acc, [name, provider]) => {\n const { icon, enabled, subdomain } = provider;\n\n acc.push({\n name,\n icon: icon === 'envelope' ? ['fas', 'envelope'] : ['fab', icon],\n enabled,\n subdomain,\n });\n\n return acc;\n }, [])\n .sort((a, b) => formatter.compare(a.name, b.name));\n\n const isLoading = isLoadingData || isLoadingPermissions;\n\n const isProviderWithSubdomain = React.useMemo(() => {\n if (!providerToEditName) {\n return false;\n }\n\n const providerToEdit = providers.find((obj) => obj.name === providerToEditName);\n\n return !!providerToEdit?.subdomain;\n }, [providers, providerToEditName]);\n\n const layoutToRender = React.useMemo(() => {\n if (providerToEditName === 'email') {\n return forms.email;\n }\n\n if (isProviderWithSubdomain) {\n return forms.providersWithSubdomain;\n }\n\n return forms.providers;\n }, [providerToEditName, isProviderWithSubdomain]);\n\n const handleToggleModal = () => {\n setIsOpen((prev) => !prev);\n };\n\n const handleClickEdit = (provider) => {\n if (canUpdate) {\n setProviderToEditName(provider.name);\n handleToggleModal();\n }\n };\n\n const handleSubmit = async (values) => {\n lockApp();\n\n trackUsage('willEditAuthenticationProvider');\n\n submitMutation.mutate({ providers: { ...data, [providerToEditName]: values } });\n };\n\n return (\n <Layout>\n <SettingsPageTitle\n name={formatMessage({\n id: getTrad('HeaderNav.link.providers'),\n defaultMessage: 'Providers',\n })}\n />\n <Main>\n <HeaderLayout\n title={formatMessage({\n id: getTrad('HeaderNav.link.providers'),\n defaultMessage: 'Providers',\n })}\n />\n {isLoading ? (\n <LoadingIndicatorPage />\n ) : (\n <ContentLayout>\n <Table colCount={3} rowCount={providers.length + 1}>\n <Thead>\n <Tr>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({ id: 'global.name', defaultMessage: 'Name' })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({ id: getTrad('Providers.status'), defaultMessage: 'Status' })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">\n <VisuallyHidden>\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </VisuallyHidden>\n </Typography>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {providers.map((provider) => (\n <Tr\n key={provider.name}\n {...onRowClick({\n fn: () => handleClickEdit(provider),\n condition: canUpdate,\n })}\n >\n <Td width=\"45%\">\n <Typography fontWeight=\"semiBold\" textColor=\"neutral800\">\n {provider.name}\n </Typography>\n </Td>\n <Td width=\"65%\">\n <Typography\n textColor={provider.enabled ? 'success600' : 'danger600'}\n data-testid={`enable-${provider.name}`}\n >\n {provider.enabled\n ? formatMessage({\n id: 'global.enabled',\n defaultMessage: 'Enabled',\n })\n : formatMessage({\n id: 'global.disabled',\n defaultMessage: 'Disabled',\n })}\n </Typography>\n </Td>\n <Td {...stopPropagation}>\n {canUpdate && (\n <IconButton\n onClick={() => handleClickEdit(provider)}\n noBorder\n icon={<Pencil />}\n label=\"Edit\"\n />\n )}\n </Td>\n </Tr>\n ))}\n </Tbody>\n </Table>\n </ContentLayout>\n )}\n </Main>\n <FormModal\n initialData={data[providerToEditName]}\n isOpen={isOpen}\n isSubmiting={submitMutation.isLoading}\n layout={layoutToRender}\n headerBreadcrumbs={[\n formatMessage({\n id: getTrad('PopUpForm.header.edit.providers'),\n defaultMessage: 'Edit Provider',\n }),\n upperFirst(providerToEditName),\n ]}\n onToggle={handleToggleModal}\n onSubmit={handleSubmit}\n providerToEditName={providerToEditName}\n />\n </Layout>\n );\n};\n\nconst ProtectedProvidersPage = () => (\n <CheckPagePermissions permissions={PERMISSIONS.readProviders}>\n <ProvidersPage />\n </CheckPagePermissions>\n);\n\nexport default ProtectedProvidersPage;\n"],"names":["useIntl","jsx","ToggleInput","TextInput","PropTypes","jsxs","ModalLayout","ModalHeader","Breadcrumbs","index","Crumb","Formik","Form","ModalBody","Flex","Grid","GridItem","ModalFooter","Button","getTrad","yup","translatedErrors","useQueryClient","useTracking","React","useNotification","useOverlayBlocker","useFetchClient","useAPIErrorHandler","useCollator","useFocusWhenNavigate","useRBAC","PERMISSIONS","useQuery","data","useMutation","Layout","SettingsPageTitle","Main","HeaderLayout","LoadingIndicatorPage","ContentLayout","Table","Thead","Tr","Th","Typography","VisuallyHidden","Tbody","onRowClick","Td","stopPropagation","IconButton","Pencil","upperFirst","CheckPagePermissions"],"mappings":"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"}
|
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import "react";
|
|
3
|
+
import { useNotifyAT, Main, HeaderLayout, ContentLayout, Button, Box, Flex, Typography, Grid, GridItem, Select, Option } from "@strapi/design-system";
|
|
4
|
+
import { translatedErrors, CheckPagePermissions, useNotification, useOverlayBlocker, useFetchClient, useAPIErrorHandler, useFocusWhenNavigate, useRBAC, SettingsPageTitle, LoadingIndicatorPage, Form, GenericInput } from "@strapi/helper-plugin";
|
|
5
|
+
import { Check } from "@strapi/icons";
|
|
6
|
+
import { Formik } from "formik";
|
|
7
|
+
import { useIntl } from "react-intl";
|
|
8
|
+
import { useQueryClient, useQuery, useMutation } from "react-query";
|
|
9
|
+
import { g as getTrad, P as PERMISSIONS } from "./index-IrxIszoz.mjs";
|
|
10
|
+
import "lodash/isEmpty";
|
|
11
|
+
import * as yup from "yup";
|
|
12
|
+
const layout = [
|
|
13
|
+
{
|
|
14
|
+
intlLabel: {
|
|
15
|
+
id: getTrad("EditForm.inputToggle.label.email"),
|
|
16
|
+
defaultMessage: "One account per email address"
|
|
17
|
+
},
|
|
18
|
+
description: {
|
|
19
|
+
id: getTrad("EditForm.inputToggle.description.email"),
|
|
20
|
+
defaultMessage: "Disallow the user to create multiple accounts using the same email address with different authentication providers."
|
|
21
|
+
},
|
|
22
|
+
name: "unique_email",
|
|
23
|
+
type: "bool",
|
|
24
|
+
size: {
|
|
25
|
+
col: 12,
|
|
26
|
+
xs: 12
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
intlLabel: {
|
|
31
|
+
id: getTrad("EditForm.inputToggle.label.sign-up"),
|
|
32
|
+
defaultMessage: "Enable sign-ups"
|
|
33
|
+
},
|
|
34
|
+
description: {
|
|
35
|
+
id: getTrad("EditForm.inputToggle.description.sign-up"),
|
|
36
|
+
defaultMessage: "When disabled (OFF), the registration process is forbidden. No one can subscribe anymore no matter the used provider."
|
|
37
|
+
},
|
|
38
|
+
name: "allow_register",
|
|
39
|
+
type: "bool",
|
|
40
|
+
size: {
|
|
41
|
+
col: 12,
|
|
42
|
+
xs: 12
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
intlLabel: {
|
|
47
|
+
id: getTrad("EditForm.inputToggle.label.email-reset-password"),
|
|
48
|
+
defaultMessage: "Reset password page"
|
|
49
|
+
},
|
|
50
|
+
description: {
|
|
51
|
+
id: getTrad("EditForm.inputToggle.description.email-reset-password"),
|
|
52
|
+
defaultMessage: "URL of your application's reset password page."
|
|
53
|
+
},
|
|
54
|
+
placeholder: {
|
|
55
|
+
id: getTrad("EditForm.inputToggle.placeholder.email-reset-password"),
|
|
56
|
+
defaultMessage: "ex: https://youtfrontend.com/reset-password"
|
|
57
|
+
},
|
|
58
|
+
name: "email_reset_password",
|
|
59
|
+
type: "text",
|
|
60
|
+
size: {
|
|
61
|
+
col: 6,
|
|
62
|
+
xs: 12
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
intlLabel: {
|
|
67
|
+
id: getTrad("EditForm.inputToggle.label.email-confirmation"),
|
|
68
|
+
defaultMessage: "Enable email confirmation"
|
|
69
|
+
},
|
|
70
|
+
description: {
|
|
71
|
+
id: getTrad("EditForm.inputToggle.description.email-confirmation"),
|
|
72
|
+
defaultMessage: "When enabled (ON), new registered users receive a confirmation email."
|
|
73
|
+
},
|
|
74
|
+
name: "email_confirmation",
|
|
75
|
+
type: "bool",
|
|
76
|
+
size: {
|
|
77
|
+
col: 12,
|
|
78
|
+
xs: 12
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
intlLabel: {
|
|
83
|
+
id: getTrad("EditForm.inputToggle.label.email-confirmation-redirection"),
|
|
84
|
+
defaultMessage: "Redirection url"
|
|
85
|
+
},
|
|
86
|
+
description: {
|
|
87
|
+
id: getTrad("EditForm.inputToggle.description.email-confirmation-redirection"),
|
|
88
|
+
defaultMessage: "After you confirmed your email, choose where you will be redirected."
|
|
89
|
+
},
|
|
90
|
+
placeholder: {
|
|
91
|
+
id: getTrad("EditForm.inputToggle.placeholder.email-confirmation-redirection"),
|
|
92
|
+
defaultMessage: "ex: https://youtfrontend.com/email-confirmation"
|
|
93
|
+
},
|
|
94
|
+
name: "email_confirmation_redirection",
|
|
95
|
+
type: "text",
|
|
96
|
+
size: {
|
|
97
|
+
col: 6,
|
|
98
|
+
xs: 12
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
];
|
|
102
|
+
const URL_REGEX = new RegExp("(^$)|((.+:\\/\\/.*)(d*)\\/?(.*))");
|
|
103
|
+
const schema = yup.object().shape({
|
|
104
|
+
email_confirmation_redirection: yup.mixed().when("email_confirmation", {
|
|
105
|
+
is: true,
|
|
106
|
+
then: yup.string().matches(URL_REGEX).required(),
|
|
107
|
+
otherwise: yup.string().nullable()
|
|
108
|
+
}),
|
|
109
|
+
email_reset_password: yup.string(translatedErrors.string).matches(URL_REGEX, translatedErrors.regex).nullable()
|
|
110
|
+
});
|
|
111
|
+
const ProtectedAdvancedSettingsPage = () => /* @__PURE__ */ jsx(CheckPagePermissions, { permissions: PERMISSIONS.readAdvancedSettings, children: /* @__PURE__ */ jsx(AdvancedSettingsPage, {}) });
|
|
112
|
+
const AdvancedSettingsPage = () => {
|
|
113
|
+
const { formatMessage } = useIntl();
|
|
114
|
+
const toggleNotification = useNotification();
|
|
115
|
+
const { lockApp, unlockApp } = useOverlayBlocker();
|
|
116
|
+
const { notifyStatus } = useNotifyAT();
|
|
117
|
+
const queryClient = useQueryClient();
|
|
118
|
+
const { get, put } = useFetchClient();
|
|
119
|
+
const { formatAPIError } = useAPIErrorHandler();
|
|
120
|
+
useFocusWhenNavigate();
|
|
121
|
+
const {
|
|
122
|
+
isLoading: isLoadingForPermissions,
|
|
123
|
+
allowedActions: { canUpdate }
|
|
124
|
+
} = useRBAC({ update: PERMISSIONS.updateAdvancedSettings });
|
|
125
|
+
const { isLoading: isLoadingData, data } = useQuery(
|
|
126
|
+
["users-permissions", "advanced"],
|
|
127
|
+
async () => {
|
|
128
|
+
const { data: data2 } = await get("/users-permissions/advanced");
|
|
129
|
+
return data2;
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
onSuccess() {
|
|
133
|
+
notifyStatus(
|
|
134
|
+
formatMessage({
|
|
135
|
+
id: getTrad("Form.advancedSettings.data.loaded"),
|
|
136
|
+
defaultMessage: "Advanced settings data has been loaded"
|
|
137
|
+
})
|
|
138
|
+
);
|
|
139
|
+
},
|
|
140
|
+
onError() {
|
|
141
|
+
toggleNotification({
|
|
142
|
+
type: "warning",
|
|
143
|
+
message: { id: getTrad("notification.error"), defaultMessage: "An error occured" }
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
);
|
|
148
|
+
const isLoading = isLoadingForPermissions || isLoadingData;
|
|
149
|
+
const submitMutation = useMutation((body) => put("/users-permissions/advanced", body), {
|
|
150
|
+
async onSuccess() {
|
|
151
|
+
await queryClient.invalidateQueries(["users-permissions", "advanced"]);
|
|
152
|
+
toggleNotification({
|
|
153
|
+
type: "success",
|
|
154
|
+
message: { id: getTrad("notification.success.saved"), defaultMessage: "Saved" }
|
|
155
|
+
});
|
|
156
|
+
unlockApp();
|
|
157
|
+
},
|
|
158
|
+
onError(error) {
|
|
159
|
+
toggleNotification({
|
|
160
|
+
type: "warning",
|
|
161
|
+
message: formatAPIError(error)
|
|
162
|
+
});
|
|
163
|
+
unlockApp();
|
|
164
|
+
},
|
|
165
|
+
refetchActive: true
|
|
166
|
+
});
|
|
167
|
+
const { isLoading: isSubmittingForm } = submitMutation;
|
|
168
|
+
const handleSubmit = async (body) => {
|
|
169
|
+
lockApp();
|
|
170
|
+
submitMutation.mutate({
|
|
171
|
+
...body,
|
|
172
|
+
email_confirmation_redirection: body.email_confirmation ? body.email_confirmation_redirection : ""
|
|
173
|
+
});
|
|
174
|
+
};
|
|
175
|
+
if (isLoading) {
|
|
176
|
+
return /* @__PURE__ */ jsxs(Main, { "aria-busy": "true", children: [
|
|
177
|
+
/* @__PURE__ */ jsx(
|
|
178
|
+
SettingsPageTitle,
|
|
179
|
+
{
|
|
180
|
+
name: formatMessage({
|
|
181
|
+
id: getTrad("HeaderNav.link.advancedSettings"),
|
|
182
|
+
defaultMessage: "Advanced Settings"
|
|
183
|
+
})
|
|
184
|
+
}
|
|
185
|
+
),
|
|
186
|
+
/* @__PURE__ */ jsx(
|
|
187
|
+
HeaderLayout,
|
|
188
|
+
{
|
|
189
|
+
title: formatMessage({
|
|
190
|
+
id: getTrad("HeaderNav.link.advancedSettings"),
|
|
191
|
+
defaultMessage: "Advanced Settings"
|
|
192
|
+
})
|
|
193
|
+
}
|
|
194
|
+
),
|
|
195
|
+
/* @__PURE__ */ jsx(ContentLayout, { children: /* @__PURE__ */ jsx(LoadingIndicatorPage, {}) })
|
|
196
|
+
] });
|
|
197
|
+
}
|
|
198
|
+
return /* @__PURE__ */ jsxs(Main, { "aria-busy": isSubmittingForm, children: [
|
|
199
|
+
/* @__PURE__ */ jsx(
|
|
200
|
+
SettingsPageTitle,
|
|
201
|
+
{
|
|
202
|
+
name: formatMessage({
|
|
203
|
+
id: getTrad("HeaderNav.link.advancedSettings"),
|
|
204
|
+
defaultMessage: "Advanced Settings"
|
|
205
|
+
})
|
|
206
|
+
}
|
|
207
|
+
),
|
|
208
|
+
/* @__PURE__ */ jsx(
|
|
209
|
+
Formik,
|
|
210
|
+
{
|
|
211
|
+
onSubmit: handleSubmit,
|
|
212
|
+
initialValues: data.settings,
|
|
213
|
+
validateOnChange: false,
|
|
214
|
+
validationSchema: schema,
|
|
215
|
+
enableReinitialize: true,
|
|
216
|
+
children: ({ errors, values, handleChange, isSubmitting, dirty }) => {
|
|
217
|
+
return /* @__PURE__ */ jsxs(Form, { children: [
|
|
218
|
+
/* @__PURE__ */ jsx(
|
|
219
|
+
HeaderLayout,
|
|
220
|
+
{
|
|
221
|
+
title: formatMessage({
|
|
222
|
+
id: getTrad("HeaderNav.link.advancedSettings"),
|
|
223
|
+
defaultMessage: "Advanced Settings"
|
|
224
|
+
}),
|
|
225
|
+
primaryAction: /* @__PURE__ */ jsx(
|
|
226
|
+
Button,
|
|
227
|
+
{
|
|
228
|
+
loading: isSubmitting,
|
|
229
|
+
type: "submit",
|
|
230
|
+
disabled: canUpdate ? !dirty : !canUpdate,
|
|
231
|
+
startIcon: /* @__PURE__ */ jsx(Check, {}),
|
|
232
|
+
size: "S",
|
|
233
|
+
children: formatMessage({ id: "global.save", defaultMessage: "Save" })
|
|
234
|
+
}
|
|
235
|
+
)
|
|
236
|
+
}
|
|
237
|
+
),
|
|
238
|
+
/* @__PURE__ */ jsx(ContentLayout, { children: /* @__PURE__ */ jsx(
|
|
239
|
+
Box,
|
|
240
|
+
{
|
|
241
|
+
background: "neutral0",
|
|
242
|
+
hasRadius: true,
|
|
243
|
+
shadow: "filterShadow",
|
|
244
|
+
paddingTop: 6,
|
|
245
|
+
paddingBottom: 6,
|
|
246
|
+
paddingLeft: 7,
|
|
247
|
+
paddingRight: 7,
|
|
248
|
+
children: /* @__PURE__ */ jsxs(Flex, { direction: "column", alignItems: "stretch", gap: 4, children: [
|
|
249
|
+
/* @__PURE__ */ jsx(Typography, { variant: "delta", as: "h2", children: formatMessage({
|
|
250
|
+
id: "global.settings",
|
|
251
|
+
defaultMessage: "Settings"
|
|
252
|
+
}) }),
|
|
253
|
+
/* @__PURE__ */ jsxs(Grid, { gap: 6, children: [
|
|
254
|
+
/* @__PURE__ */ jsx(GridItem, { col: 6, s: 12, children: /* @__PURE__ */ jsx(
|
|
255
|
+
Select,
|
|
256
|
+
{
|
|
257
|
+
label: formatMessage({
|
|
258
|
+
id: getTrad("EditForm.inputSelect.label.role"),
|
|
259
|
+
defaultMessage: "Default role for authenticated users"
|
|
260
|
+
}),
|
|
261
|
+
value: values.default_role,
|
|
262
|
+
hint: formatMessage({
|
|
263
|
+
id: getTrad("EditForm.inputSelect.description.role"),
|
|
264
|
+
defaultMessage: "It will attach the new authenticated user to the selected role."
|
|
265
|
+
}),
|
|
266
|
+
onChange: (e) => handleChange({ target: { name: "default_role", value: e } }),
|
|
267
|
+
children: data.roles.map((role) => {
|
|
268
|
+
return /* @__PURE__ */ jsx(Option, { value: role.type, children: role.name }, role.type);
|
|
269
|
+
})
|
|
270
|
+
}
|
|
271
|
+
) }),
|
|
272
|
+
layout.map((input) => {
|
|
273
|
+
let value = values[input.name];
|
|
274
|
+
if (!value) {
|
|
275
|
+
value = input.type === "bool" ? false : "";
|
|
276
|
+
}
|
|
277
|
+
return /* @__PURE__ */ jsx(GridItem, { ...input.size, children: /* @__PURE__ */ jsx(
|
|
278
|
+
GenericInput,
|
|
279
|
+
{
|
|
280
|
+
...input,
|
|
281
|
+
value,
|
|
282
|
+
error: errors[input.name],
|
|
283
|
+
disabled: input.name === "email_confirmation_redirection" && values.email_confirmation === false,
|
|
284
|
+
onChange: handleChange
|
|
285
|
+
}
|
|
286
|
+
) }, input.name);
|
|
287
|
+
})
|
|
288
|
+
] })
|
|
289
|
+
] })
|
|
290
|
+
}
|
|
291
|
+
) })
|
|
292
|
+
] });
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
)
|
|
296
|
+
] });
|
|
297
|
+
};
|
|
298
|
+
export {
|
|
299
|
+
ProtectedAdvancedSettingsPage as default
|
|
300
|
+
};
|
|
301
|
+
//# sourceMappingURL=index-x0N2TQLH.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-x0N2TQLH.mjs","sources":["../../admin/src/pages/AdvancedSettings/utils/layout.js","../../admin/src/pages/AdvancedSettings/utils/schema.js","../../admin/src/pages/AdvancedSettings/index.jsx"],"sourcesContent":["import { getTrad } from '../../../utils';\n\nconst layout = [\n {\n intlLabel: {\n id: getTrad('EditForm.inputToggle.label.email'),\n defaultMessage: 'One account per email address',\n },\n description: {\n id: getTrad('EditForm.inputToggle.description.email'),\n defaultMessage:\n 'Disallow the user to create multiple accounts using the same email address with different authentication providers.',\n },\n name: 'unique_email',\n type: 'bool',\n size: {\n col: 12,\n xs: 12,\n },\n },\n {\n intlLabel: {\n id: getTrad('EditForm.inputToggle.label.sign-up'),\n defaultMessage: 'Enable sign-ups',\n },\n description: {\n id: getTrad('EditForm.inputToggle.description.sign-up'),\n defaultMessage:\n 'When disabled (OFF), the registration process is forbidden. No one can subscribe anymore no matter the used provider.',\n },\n name: 'allow_register',\n type: 'bool',\n size: {\n col: 12,\n xs: 12,\n },\n },\n {\n intlLabel: {\n id: getTrad('EditForm.inputToggle.label.email-reset-password'),\n defaultMessage: 'Reset password page',\n },\n description: {\n id: getTrad('EditForm.inputToggle.description.email-reset-password'),\n defaultMessage: \"URL of your application's reset password page.\",\n },\n placeholder: {\n id: getTrad('EditForm.inputToggle.placeholder.email-reset-password'),\n defaultMessage: 'ex: https://youtfrontend.com/reset-password',\n },\n name: 'email_reset_password',\n type: 'text',\n size: {\n col: 6,\n xs: 12,\n },\n },\n {\n intlLabel: {\n id: getTrad('EditForm.inputToggle.label.email-confirmation'),\n defaultMessage: 'Enable email confirmation',\n },\n description: {\n id: getTrad('EditForm.inputToggle.description.email-confirmation'),\n defaultMessage: 'When enabled (ON), new registered users receive a confirmation email.',\n },\n name: 'email_confirmation',\n type: 'bool',\n size: {\n col: 12,\n xs: 12,\n },\n },\n {\n intlLabel: {\n id: getTrad('EditForm.inputToggle.label.email-confirmation-redirection'),\n defaultMessage: 'Redirection url',\n },\n description: {\n id: getTrad('EditForm.inputToggle.description.email-confirmation-redirection'),\n defaultMessage: 'After you confirmed your email, choose where you will be redirected.',\n },\n placeholder: {\n id: getTrad('EditForm.inputToggle.placeholder.email-confirmation-redirection'),\n defaultMessage: 'ex: https://youtfrontend.com/email-confirmation',\n },\n name: 'email_confirmation_redirection',\n type: 'text',\n size: {\n col: 6,\n xs: 12,\n },\n },\n];\n\nexport default layout;\n","import { translatedErrors } from '@strapi/helper-plugin';\nimport * as yup from 'yup';\n\n// eslint-disable-next-line prefer-regex-literals\nconst URL_REGEX = new RegExp('(^$)|((.+:\\\\/\\\\/.*)(d*)\\\\/?(.*))');\n\nconst schema = yup.object().shape({\n email_confirmation_redirection: yup.mixed().when('email_confirmation', {\n is: true,\n then: yup.string().matches(URL_REGEX).required(),\n otherwise: yup.string().nullable(),\n }),\n email_reset_password: yup\n .string(translatedErrors.string)\n .matches(URL_REGEX, translatedErrors.regex)\n .nullable(),\n});\n\nexport default schema;\n","import React from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Main,\n Option,\n Select,\n Typography,\n useNotifyAT,\n} from '@strapi/design-system';\nimport {\n CheckPagePermissions,\n Form,\n GenericInput,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFetchClient,\n useFocusWhenNavigate,\n useNotification,\n useOverlayBlocker,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { Check } from '@strapi/icons';\nimport { Formik } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery, useQueryClient } from 'react-query';\n\nimport { PERMISSIONS } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport layout from './utils/layout';\nimport schema from './utils/schema';\n\nconst ProtectedAdvancedSettingsPage = () => (\n <CheckPagePermissions permissions={PERMISSIONS.readAdvancedSettings}>\n <AdvancedSettingsPage />\n </CheckPagePermissions>\n);\n\nconst AdvancedSettingsPage = () => {\n const { formatMessage } = useIntl();\n const toggleNotification = useNotification();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const { notifyStatus } = useNotifyAT();\n const queryClient = useQueryClient();\n const { get, put } = useFetchClient();\n const { formatAPIError } = useAPIErrorHandler();\n\n useFocusWhenNavigate();\n\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canUpdate },\n } = useRBAC({ update: PERMISSIONS.updateAdvancedSettings });\n\n const { isLoading: isLoadingData, data } = useQuery(\n ['users-permissions', 'advanced'],\n async () => {\n const { data } = await get('/users-permissions/advanced');\n\n return data;\n },\n {\n onSuccess() {\n notifyStatus(\n formatMessage({\n id: getTrad('Form.advancedSettings.data.loaded'),\n defaultMessage: 'Advanced settings data has been loaded',\n })\n );\n },\n onError() {\n toggleNotification({\n type: 'warning',\n message: { id: getTrad('notification.error'), defaultMessage: 'An error occured' },\n });\n },\n }\n );\n\n const isLoading = isLoadingForPermissions || isLoadingData;\n\n const submitMutation = useMutation((body) => put('/users-permissions/advanced', body), {\n async onSuccess() {\n await queryClient.invalidateQueries(['users-permissions', 'advanced']);\n\n toggleNotification({\n type: 'success',\n message: { id: getTrad('notification.success.saved'), defaultMessage: 'Saved' },\n });\n\n unlockApp();\n },\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n\n unlockApp();\n },\n refetchActive: true,\n });\n\n const { isLoading: isSubmittingForm } = submitMutation;\n\n const handleSubmit = async (body) => {\n lockApp();\n\n submitMutation.mutate({\n ...body,\n email_confirmation_redirection: body.email_confirmation\n ? body.email_confirmation_redirection\n : '',\n });\n };\n\n if (isLoading) {\n return (\n <Main aria-busy=\"true\">\n <SettingsPageTitle\n name={formatMessage({\n id: getTrad('HeaderNav.link.advancedSettings'),\n defaultMessage: 'Advanced Settings',\n })}\n />\n <HeaderLayout\n title={formatMessage({\n id: getTrad('HeaderNav.link.advancedSettings'),\n defaultMessage: 'Advanced Settings',\n })}\n />\n <ContentLayout>\n <LoadingIndicatorPage />\n </ContentLayout>\n </Main>\n );\n }\n\n return (\n <Main aria-busy={isSubmittingForm}>\n <SettingsPageTitle\n name={formatMessage({\n id: getTrad('HeaderNav.link.advancedSettings'),\n defaultMessage: 'Advanced Settings',\n })}\n />\n <Formik\n onSubmit={handleSubmit}\n initialValues={data.settings}\n validateOnChange={false}\n validationSchema={schema}\n enableReinitialize\n >\n {({ errors, values, handleChange, isSubmitting, dirty }) => {\n return (\n <Form>\n <HeaderLayout\n title={formatMessage({\n id: getTrad('HeaderNav.link.advancedSettings'),\n defaultMessage: 'Advanced Settings',\n })}\n primaryAction={\n <Button\n loading={isSubmitting}\n type=\"submit\"\n disabled={canUpdate ? !dirty : !canUpdate}\n startIcon={<Check />}\n size=\"S\"\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n <ContentLayout>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid gap={6}>\n <GridItem col={6} s={12}>\n <Select\n label={formatMessage({\n id: getTrad('EditForm.inputSelect.label.role'),\n defaultMessage: 'Default role for authenticated users',\n })}\n value={values.default_role}\n hint={formatMessage({\n id: getTrad('EditForm.inputSelect.description.role'),\n defaultMessage:\n 'It will attach the new authenticated user to the selected role.',\n })}\n onChange={(e) =>\n handleChange({ target: { name: 'default_role', value: e } })\n }\n >\n {data.roles.map((role) => {\n return (\n <Option key={role.type} value={role.type}>\n {role.name}\n </Option>\n );\n })}\n </Select>\n </GridItem>\n {layout.map((input) => {\n let value = values[input.name];\n\n if (!value) {\n value = input.type === 'bool' ? false : '';\n }\n\n return (\n <GridItem key={input.name} {...input.size}>\n <GenericInput\n {...input}\n value={value}\n error={errors[input.name]}\n disabled={\n input.name === 'email_confirmation_redirection' &&\n values.email_confirmation === false\n }\n onChange={handleChange}\n />\n </GridItem>\n );\n })}\n </Grid>\n </Flex>\n </Box>\n </ContentLayout>\n </Form>\n );\n }}\n </Formik>\n </Main>\n );\n};\n\nexport default ProtectedAdvancedSettingsPage;\n"],"names":["data"],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const it = {
|
|
4
|
+
"BoundRoute.title": "Vincola route a",
|
|
5
|
+
"EditForm.inputSelect.description.role": "Questa operazione assocerà i nuovi utenti autenticati al ruolo selezionato.",
|
|
6
|
+
"EditForm.inputSelect.label.role": "Ruolo di default per gli utenti registrati",
|
|
7
|
+
"EditForm.inputToggle.description.email": "Non consentire all'utente di creare account multipli usando lo stesso indirizzo email con provider di autenticazione diversi.",
|
|
8
|
+
"EditForm.inputToggle.description.email-confirmation": "Quando abilitato (ON), i nuovi utenti registrati riceveranno una richiesta di conferma via email.",
|
|
9
|
+
"EditForm.inputToggle.description.email-confirmation-redirection": "Scegli dove redirigere gli utenti che completano la conferma dell'indirizzo email.",
|
|
10
|
+
"EditForm.inputToggle.description.email-reset-password": "URL della pagina per il reset della password della tua applicazione",
|
|
11
|
+
"EditForm.inputToggle.description.sign-up": "Quando disabilitata (OFF), il processo di registrazione è proibito. Nessuno può iscriversi indipendentemente dal provider utilizzato.",
|
|
12
|
+
"EditForm.inputToggle.label.email": "Un solo account per indirizzo email",
|
|
13
|
+
"EditForm.inputToggle.label.email-confirmation": "Abilita conferma email",
|
|
14
|
+
"EditForm.inputToggle.label.email-confirmation-redirection": "URL di reindirizzamento",
|
|
15
|
+
"EditForm.inputToggle.label.email-reset-password": "Pagina reset password",
|
|
16
|
+
"EditForm.inputToggle.label.sign-up": "Abilita registrazione",
|
|
17
|
+
"Email.template.email_confirmation": "Conferma dell'indirizzo Email",
|
|
18
|
+
"HeaderNav.link.advancedSettings": "Impostazioni avanzate",
|
|
19
|
+
"HeaderNav.link.emailTemplates": "Template delle Email",
|
|
20
|
+
"HeaderNav.link.providers": "Provider",
|
|
21
|
+
"Plugin.permissions.plugins.description": "Definisce tutte le azioni consentite per il plugin {name}.",
|
|
22
|
+
"Plugins.header.description": "Di seguito sono elencate solo le azioni vincolate da una route.",
|
|
23
|
+
"Plugins.header.title": "Permessi",
|
|
24
|
+
"Policies.header.hint": "Seleziona le azioni dell'applicazione o del plugin e clicca sull'ingranaggio per mostrare il percorso corrispondente",
|
|
25
|
+
"Policies.header.title": "Impostazioni avanzate",
|
|
26
|
+
"PopUpForm.Email.email_templates.inputDescription": "Se non sai bene come usare le variabili, {link}",
|
|
27
|
+
"PopUpForm.Email.link.documentation": "controlla la nostra documentazione.",
|
|
28
|
+
"PopUpForm.Email.options.from.email.label": "Email del mittente",
|
|
29
|
+
"PopUpForm.Email.options.from.email.placeholder": "kai@doe.com",
|
|
30
|
+
"PopUpForm.Email.options.from.name.label": "Nome del mittente",
|
|
31
|
+
"PopUpForm.Email.options.from.name.placeholder": "Kai Doe",
|
|
32
|
+
"PopUpForm.Email.options.message.label": "Messaggio",
|
|
33
|
+
"PopUpForm.Email.options.object.label": "Oggetto",
|
|
34
|
+
"PopUpForm.Email.options.object.placeholder": "Conferma il tuo indirizzo email per %APP_NAME%",
|
|
35
|
+
"PopUpForm.Email.options.response_email.label": "Email di risposta",
|
|
36
|
+
"PopUpForm.Email.options.response_email.placeholder": "kai@doe.com",
|
|
37
|
+
"PopUpForm.Providers.enabled.description": "Se disabilitato, gli utenti non potranno usare questo provider.",
|
|
38
|
+
"PopUpForm.Providers.enabled.label": "Abilita",
|
|
39
|
+
"PopUpForm.Providers.key.label": "Client ID",
|
|
40
|
+
"PopUpForm.Providers.key.placeholder": "TEXT",
|
|
41
|
+
"PopUpForm.Providers.redirectURL.front-end.label": "L'URL di reindirizzamento per la tua app di front-end",
|
|
42
|
+
"PopUpForm.Providers.redirectURL.label": "L'URL di reindirizzamento da aggiungere nelle impostazioni dell'applicazione di {provider}",
|
|
43
|
+
"PopUpForm.Providers.secret.label": "Client Secret",
|
|
44
|
+
"PopUpForm.Providers.secret.placeholder": "TEXT",
|
|
45
|
+
"PopUpForm.Providers.subdomain.label": "Host URI (Sottodominio)",
|
|
46
|
+
"PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com",
|
|
47
|
+
"PopUpForm.header.edit.email-templates": "Modifica i Template Email",
|
|
48
|
+
"PopUpForm.header.edit.providers": "Modifica Provider",
|
|
49
|
+
"Settings.roles.deleted": "Ruolo eliminato",
|
|
50
|
+
"Settings.roles.edited": "Ruolo modificato",
|
|
51
|
+
"Settings.section-label": "Plugin Utenti & Permessi",
|
|
52
|
+
"notification.success.submit": "Impostazioni aggiornate",
|
|
53
|
+
"plugin.description.long": "Proteggi le tue API con un processo di autenticazione completo basato su JWT. Questo plugin è implementato con una strategia ACL che ti consente di gestire i permessi tra i gruppi di utenti.",
|
|
54
|
+
"plugin.description.short": "Proteggi le tue API con un processo di autenticazione completo basato su JWT",
|
|
55
|
+
"plugin.name": "Plugin Utenti & Permessi",
|
|
56
|
+
"popUpWarning.button.cancel": "Annulla",
|
|
57
|
+
"popUpWarning.button.confirm": "Conferma",
|
|
58
|
+
"popUpWarning.title": "Si prega di confermare",
|
|
59
|
+
"popUpWarning.warning.cancel": "Sei sicuro di voler annullare le tue modifiche?"
|
|
60
|
+
};
|
|
61
|
+
exports.default = it;
|
|
62
|
+
//# sourceMappingURL=it-YhZOlM2X.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"it-YhZOlM2X.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
const it = {
|
|
2
|
+
"BoundRoute.title": "Vincola route a",
|
|
3
|
+
"EditForm.inputSelect.description.role": "Questa operazione assocerà i nuovi utenti autenticati al ruolo selezionato.",
|
|
4
|
+
"EditForm.inputSelect.label.role": "Ruolo di default per gli utenti registrati",
|
|
5
|
+
"EditForm.inputToggle.description.email": "Non consentire all'utente di creare account multipli usando lo stesso indirizzo email con provider di autenticazione diversi.",
|
|
6
|
+
"EditForm.inputToggle.description.email-confirmation": "Quando abilitato (ON), i nuovi utenti registrati riceveranno una richiesta di conferma via email.",
|
|
7
|
+
"EditForm.inputToggle.description.email-confirmation-redirection": "Scegli dove redirigere gli utenti che completano la conferma dell'indirizzo email.",
|
|
8
|
+
"EditForm.inputToggle.description.email-reset-password": "URL della pagina per il reset della password della tua applicazione",
|
|
9
|
+
"EditForm.inputToggle.description.sign-up": "Quando disabilitata (OFF), il processo di registrazione è proibito. Nessuno può iscriversi indipendentemente dal provider utilizzato.",
|
|
10
|
+
"EditForm.inputToggle.label.email": "Un solo account per indirizzo email",
|
|
11
|
+
"EditForm.inputToggle.label.email-confirmation": "Abilita conferma email",
|
|
12
|
+
"EditForm.inputToggle.label.email-confirmation-redirection": "URL di reindirizzamento",
|
|
13
|
+
"EditForm.inputToggle.label.email-reset-password": "Pagina reset password",
|
|
14
|
+
"EditForm.inputToggle.label.sign-up": "Abilita registrazione",
|
|
15
|
+
"Email.template.email_confirmation": "Conferma dell'indirizzo Email",
|
|
16
|
+
"HeaderNav.link.advancedSettings": "Impostazioni avanzate",
|
|
17
|
+
"HeaderNav.link.emailTemplates": "Template delle Email",
|
|
18
|
+
"HeaderNav.link.providers": "Provider",
|
|
19
|
+
"Plugin.permissions.plugins.description": "Definisce tutte le azioni consentite per il plugin {name}.",
|
|
20
|
+
"Plugins.header.description": "Di seguito sono elencate solo le azioni vincolate da una route.",
|
|
21
|
+
"Plugins.header.title": "Permessi",
|
|
22
|
+
"Policies.header.hint": "Seleziona le azioni dell'applicazione o del plugin e clicca sull'ingranaggio per mostrare il percorso corrispondente",
|
|
23
|
+
"Policies.header.title": "Impostazioni avanzate",
|
|
24
|
+
"PopUpForm.Email.email_templates.inputDescription": "Se non sai bene come usare le variabili, {link}",
|
|
25
|
+
"PopUpForm.Email.link.documentation": "controlla la nostra documentazione.",
|
|
26
|
+
"PopUpForm.Email.options.from.email.label": "Email del mittente",
|
|
27
|
+
"PopUpForm.Email.options.from.email.placeholder": "kai@doe.com",
|
|
28
|
+
"PopUpForm.Email.options.from.name.label": "Nome del mittente",
|
|
29
|
+
"PopUpForm.Email.options.from.name.placeholder": "Kai Doe",
|
|
30
|
+
"PopUpForm.Email.options.message.label": "Messaggio",
|
|
31
|
+
"PopUpForm.Email.options.object.label": "Oggetto",
|
|
32
|
+
"PopUpForm.Email.options.object.placeholder": "Conferma il tuo indirizzo email per %APP_NAME%",
|
|
33
|
+
"PopUpForm.Email.options.response_email.label": "Email di risposta",
|
|
34
|
+
"PopUpForm.Email.options.response_email.placeholder": "kai@doe.com",
|
|
35
|
+
"PopUpForm.Providers.enabled.description": "Se disabilitato, gli utenti non potranno usare questo provider.",
|
|
36
|
+
"PopUpForm.Providers.enabled.label": "Abilita",
|
|
37
|
+
"PopUpForm.Providers.key.label": "Client ID",
|
|
38
|
+
"PopUpForm.Providers.key.placeholder": "TEXT",
|
|
39
|
+
"PopUpForm.Providers.redirectURL.front-end.label": "L'URL di reindirizzamento per la tua app di front-end",
|
|
40
|
+
"PopUpForm.Providers.redirectURL.label": "L'URL di reindirizzamento da aggiungere nelle impostazioni dell'applicazione di {provider}",
|
|
41
|
+
"PopUpForm.Providers.secret.label": "Client Secret",
|
|
42
|
+
"PopUpForm.Providers.secret.placeholder": "TEXT",
|
|
43
|
+
"PopUpForm.Providers.subdomain.label": "Host URI (Sottodominio)",
|
|
44
|
+
"PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com",
|
|
45
|
+
"PopUpForm.header.edit.email-templates": "Modifica i Template Email",
|
|
46
|
+
"PopUpForm.header.edit.providers": "Modifica Provider",
|
|
47
|
+
"Settings.roles.deleted": "Ruolo eliminato",
|
|
48
|
+
"Settings.roles.edited": "Ruolo modificato",
|
|
49
|
+
"Settings.section-label": "Plugin Utenti & Permessi",
|
|
50
|
+
"notification.success.submit": "Impostazioni aggiornate",
|
|
51
|
+
"plugin.description.long": "Proteggi le tue API con un processo di autenticazione completo basato su JWT. Questo plugin è implementato con una strategia ACL che ti consente di gestire i permessi tra i gruppi di utenti.",
|
|
52
|
+
"plugin.description.short": "Proteggi le tue API con un processo di autenticazione completo basato su JWT",
|
|
53
|
+
"plugin.name": "Plugin Utenti & Permessi",
|
|
54
|
+
"popUpWarning.button.cancel": "Annulla",
|
|
55
|
+
"popUpWarning.button.confirm": "Conferma",
|
|
56
|
+
"popUpWarning.title": "Si prega di confermare",
|
|
57
|
+
"popUpWarning.warning.cancel": "Sei sicuro di voler annullare le tue modifiche?"
|
|
58
|
+
};
|
|
59
|
+
export {
|
|
60
|
+
it as default
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=it-bvH7DgQo.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"it-bvH7DgQo.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
const ja = {
|
|
2
|
+
"BoundRoute.title": "Bound route to",
|
|
3
|
+
"EditForm.inputSelect.description.role": "新しい認証されたユーザーが選択された役割にアタッチされます。",
|
|
4
|
+
"EditForm.inputSelect.label.role": "認証されたユーザーのデフォルトの役割",
|
|
5
|
+
"EditForm.inputToggle.description.email": "ユーザーが異なる認証プロバイダで同じ電子メールアドレスを使用して複数のアカウントを作成できないようにします。",
|
|
6
|
+
"EditForm.inputToggle.description.email-confirmation": "有効(ON)にすると、新しい登録ユーザーに確認メールが送信されます。",
|
|
7
|
+
"EditForm.inputToggle.description.email-confirmation-redirection": "あなたのEメールを確認したら、リダイレクト先を選択してください。",
|
|
8
|
+
"EditForm.inputToggle.description.sign-up": "あなたの電子メールを確認した後、リダイレクト先を選択しました。",
|
|
9
|
+
"EditForm.inputToggle.label.email": "メールアドレスごとに1つのアカウント",
|
|
10
|
+
"EditForm.inputToggle.label.email-confirmation": "Eメールの確認を有効にする",
|
|
11
|
+
"EditForm.inputToggle.label.email-confirmation-redirection": "リダイレクトURL",
|
|
12
|
+
"EditForm.inputToggle.label.sign-up": "申し込みを有効にする",
|
|
13
|
+
"HeaderNav.link.advancedSettings": "高度な設定",
|
|
14
|
+
"HeaderNav.link.emailTemplates": "メールテンプレート",
|
|
15
|
+
"HeaderNav.link.providers": "プロバイダー",
|
|
16
|
+
"Plugin.permissions.plugins.description": "{name} 個のプラグインに対して許可されたすべてのアクションを定義する",
|
|
17
|
+
"Plugins.header.description": "ルートにバインドされたアクションのみが以下にリストされています",
|
|
18
|
+
"Plugins.header.title": "権限",
|
|
19
|
+
"Policies.header.hint": "アプリケーションのアクションまたはプラグインのアクションを選択し、コグアイコンをクリックしてバインドされたルートを表示します",
|
|
20
|
+
"Policies.header.title": "高度な設定",
|
|
21
|
+
"PopUpForm.Email.email_templates.inputDescription": "変数の使用方法がわからない場合は、{link}",
|
|
22
|
+
"PopUpForm.Email.options.from.email.label": "送信者Eメール",
|
|
23
|
+
"PopUpForm.Email.options.from.email.placeholder": "kai@doe.com",
|
|
24
|
+
"PopUpForm.Email.options.from.name.label": "送信者名",
|
|
25
|
+
"PopUpForm.Email.options.from.name.placeholder": "Kai Doe",
|
|
26
|
+
"PopUpForm.Email.options.message.label": "メッセージ",
|
|
27
|
+
"PopUpForm.Email.options.object.label": "件名",
|
|
28
|
+
"PopUpForm.Email.options.response_email.label": "応答メール",
|
|
29
|
+
"PopUpForm.Email.options.response_email.placeholder": "kai@doe.com",
|
|
30
|
+
"PopUpForm.Providers.enabled.description": "無効にすると、ユーザーはこのプロバイダを使用できなくなります。",
|
|
31
|
+
"PopUpForm.Providers.enabled.label": "有効にする",
|
|
32
|
+
"PopUpForm.Providers.key.label": "クライアントID",
|
|
33
|
+
"PopUpForm.Providers.key.placeholder": "TEXT",
|
|
34
|
+
"PopUpForm.Providers.redirectURL.front-end.label": "フロントエンドアプリへのリダイレクトURL",
|
|
35
|
+
"PopUpForm.Providers.secret.label": "クライアントの秘密",
|
|
36
|
+
"PopUpForm.Providers.secret.placeholder": "TEXT",
|
|
37
|
+
"PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)",
|
|
38
|
+
"PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com",
|
|
39
|
+
"PopUpForm.header.edit.email-templates": "メールテンプレートの編集",
|
|
40
|
+
"notification.success.submit": "設定が更新されました",
|
|
41
|
+
"plugin.description.long": "JWTに基づいた完全な認証プロセスでAPIを保護します。このプラグインには、ユーザーのグループ間で権限を管理できるACL戦略もあります。",
|
|
42
|
+
"plugin.description.short": "JWTに基づく完全な認証プロセスでAPIを保護する",
|
|
43
|
+
"plugin.name": "ロールと権限"
|
|
44
|
+
};
|
|
45
|
+
export {
|
|
46
|
+
ja as default
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=ja-o_-JPvQv.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ja-o_-JPvQv.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|