@strapi/plugin-users-permissions 5.50.2 → 5.51.1
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/admin/src/pages/Roles/pages/EditPage.jsx +1 -1
- package/admin/src/translations/en.json +2 -0
- package/dist/admin/pages/Roles/pages/EditPage.js +1 -1
- package/dist/admin/pages/Roles/pages/EditPage.js.map +1 -1
- package/dist/admin/pages/Roles/pages/EditPage.mjs +1 -1
- package/dist/admin/pages/Roles/pages/EditPage.mjs.map +1 -1
- package/dist/admin/translations/en.json.js +1 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +1 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/server/_virtual/_node_crypto.js +10 -0
- package/dist/server/_virtual/_node_crypto.js.map +1 -0
- package/dist/server/_virtual/_node_crypto.mjs +7 -0
- package/dist/server/_virtual/_node_crypto.mjs.map +1 -0
- package/dist/server/_virtual/_node_url.js +10 -0
- package/dist/server/_virtual/_node_url.js.map +1 -0
- package/dist/server/_virtual/_node_url.mjs +7 -0
- package/dist/server/_virtual/_node_url.mjs.map +1 -0
- package/dist/server/controllers/auth.js +19 -19
- package/dist/server/controllers/auth.js.map +1 -1
- package/dist/server/controllers/auth.mjs +19 -18
- package/dist/server/controllers/auth.mjs.map +1 -1
- package/dist/server/services/providers-registry.js +121 -242
- package/dist/server/services/providers-registry.js.map +1 -1
- package/dist/server/services/providers-registry.mjs +121 -239
- package/dist/server/services/providers-registry.mjs.map +1 -1
- package/dist/server/utils/oauth-connect/index.js +236 -0
- package/dist/server/utils/oauth-connect/index.js.map +1 -0
- package/dist/server/utils/oauth-connect/index.mjs +230 -0
- package/dist/server/utils/oauth-connect/index.mjs.map +1 -0
- package/dist/server/utils/oauth-connect/oauth1.js +138 -0
- package/dist/server/utils/oauth-connect/oauth1.js.map +1 -0
- package/dist/server/utils/oauth-connect/oauth1.mjs +136 -0
- package/dist/server/utils/oauth-connect/oauth1.mjs.map +1 -0
- package/dist/server/utils/oauth-connect/oauth2.js +117 -0
- package/dist/server/utils/oauth-connect/oauth2.js.map +1 -0
- package/dist/server/utils/oauth-connect/oauth2.mjs +115 -0
- package/dist/server/utils/oauth-connect/oauth2.mjs.map +1 -0
- package/dist/server/utils/oauth-connect/providers.js +109 -0
- package/dist/server/utils/oauth-connect/providers.js.map +1 -0
- package/dist/server/utils/oauth-connect/providers.mjs +107 -0
- package/dist/server/utils/oauth-connect/providers.mjs.map +1 -0
- package/dist/server/utils/provider-http.js +52 -0
- package/dist/server/utils/provider-http.js.map +1 -0
- package/dist/server/utils/provider-http.mjs +50 -0
- package/dist/server/utils/provider-http.mjs.map +1 -0
- package/dist/server/utils/verify-jwt-with-jwks.js +60 -0
- package/dist/server/utils/verify-jwt-with-jwks.js.map +1 -0
- package/dist/server/utils/verify-jwt-with-jwks.mjs +54 -0
- package/dist/server/utils/verify-jwt-with-jwks.mjs.map +1 -0
- package/package.json +4 -7
- package/server/controllers/auth.js +13 -20
- package/server/services/providers-registry.js +137 -293
- package/server/utils/oauth-connect/index.js +256 -0
- package/server/utils/oauth-connect/oauth1.js +169 -0
- package/server/utils/oauth-connect/oauth2.js +123 -0
- package/server/utils/oauth-connect/providers.js +100 -0
- package/server/utils/provider-http.js +49 -0
- package/server/utils/verify-jwt-with-jwks.js +43 -0
|
@@ -58,8 +58,10 @@
|
|
|
58
58
|
"Providers.status": "Status",
|
|
59
59
|
"Roles.empty": "You don't have any roles yet.",
|
|
60
60
|
"Roles.empty.search": "No roles match the search.",
|
|
61
|
+
"Settings.roles.created": "Role created",
|
|
61
62
|
"Settings.roles.deleted": "Role deleted",
|
|
62
63
|
"Settings.roles.edited": "Role edited",
|
|
64
|
+
"Settings.roles.created": "Role created",
|
|
63
65
|
"Settings.section-label": "Users & Permissions plugin",
|
|
64
66
|
"components.Input.error.validation.email": "This is not a valid email",
|
|
65
67
|
"components.Input.error.validation.json": "This doesn't match the JSON format",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditPage.js","sources":["../../../../../admin/src/pages/Roles/pages/EditPage.jsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Button,\n Flex,\n TextInput,\n Textarea,\n Typography,\n Grid,\n Field,\n Box,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport {\n Page,\n BackButton,\n useAPIErrorHandler,\n useNotification,\n useFetchClient,\n Layouts,\n} from '@strapi/strapi/admin';\nimport { Formik, Form } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useQuery, useMutation } from 'react-query';\nimport { useMatch } from 'react-router-dom';\n\nimport UsersPermissions from '../../../components/UsersPermissions';\nimport { PERMISSIONS } from '../../../constants';\nimport getTrad from '../../../utils/getTrad';\nimport { createRoleSchema } from '../constants';\nimport { usePlugins } from '../hooks/usePlugins';\n\nexport const EditPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const {\n params: { id },\n } = useMatch(`/settings/users-permissions/roles/:id`);\n const { get } = useFetchClient();\n const { isLoading: isLoadingPlugins, routes } = usePlugins();\n const {\n data: role,\n isLoading: isLoadingRole,\n refetch: refetchRole,\n } = useQuery(['users-permissions', 'role', id], async () => {\n // TODO: why doesn't this endpoint follow the admin API conventions?\n const {\n data: { role },\n } = await get(`/users-permissions/roles/${id}`);\n\n return role;\n });\n\n const permissionsRef = React.useRef();\n const { put } = useFetchClient();\n const { formatAPIError } = useAPIErrorHandler();\n const mutation = useMutation((body) => put(`/users-permissions/roles/${id}`, body), {\n onError(error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n },\n\n async onSuccess() {\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTrad('Settings.roles.created'),\n defaultMessage: 'Role edited',\n }),\n });\n\n await refetchRole();\n },\n });\n\n const handleEditRoleSubmit = async (data) => {\n const permissions = permissionsRef.current.getPermissions();\n\n await mutation.mutate({ ...data, ...permissions, users: [] });\n };\n\n if (isLoadingRole) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: 'Roles' }\n )}\n </Page.Title>\n <Formik\n enableReinitialize\n initialValues={{ name: role.name, description: role.description }}\n onSubmit={handleEditRoleSubmit}\n validationSchema={createRoleSchema}\n >\n {({ handleSubmit, values, handleChange, errors }) => (\n <Form noValidate onSubmit={handleSubmit}>\n <Layouts.Header\n primaryAction={\n !isLoadingPlugins ? (\n <Button\n disabled={role.code === 'strapi-super-admin'}\n type=\"submit\"\n loading={mutation.isLoading}\n startIcon={<Check />}\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n ) : null\n }\n title={role.name}\n subtitle={role.description}\n navigationAction={\n // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton fallback=\"..\" />\n </Box>\n }\n />\n <Layouts.Content>\n <Flex\n background=\"neutral0\"\n direction=\"column\"\n alignItems=\"stretch\"\n gap={7}\n hasRadius\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n shadow=\"filterShadow\"\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('EditPage.form.roles'),\n defaultMessage: 'Role details',\n })}\n </Typography>\n\n <Grid.Root gap={4}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"name\"\n error={\n errors?.name\n ? formatMessage({\n id: errors.name,\n defaultMessage: 'Name is required',\n })\n : false\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput type=\"text\" value={values.name || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"description\"\n error={\n errors?.description\n ? formatMessage({\n id: errors.description,\n defaultMessage: 'Description is required',\n })\n : false\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Field.Label>\n <Textarea value={values.description || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n\n {!isLoadingPlugins && (\n <UsersPermissions\n ref={permissionsRef}\n permissions={role.permissions}\n routes={routes}\n />\n )}\n </Flex>\n </Layouts.Content>\n </Form>\n )}\n </Formik>\n </Page.Main>\n );\n};\n\nexport const ProtectedRolesEditPage = () => (\n <Page.Protect permissions={PERMISSIONS.updateRole}>\n <EditPage />\n </Page.Protect>\n);\n"],"names":["EditPage","formatMessage","useIntl","toggleNotification","useNotification","params","id","useMatch","get","useFetchClient","isLoading","isLoadingPlugins","routes","usePlugins","data","role","isLoadingRole","refetch","refetchRole","useQuery","permissionsRef","React","useRef","put","formatAPIError","useAPIErrorHandler","mutation","useMutation","body","onError","error","type","message","onSuccess","getTrad","defaultMessage","handleEditRoleSubmit","permissions","current","getPermissions","mutate","users","_jsx","Page","Loading","_jsxs","Main","Title","name","Formik","enableReinitialize","initialValues","description","onSubmit","validationSchema","createRoleSchema","handleSubmit","values","handleChange","errors","Form","noValidate","Layouts","Header","primaryAction","Button","disabled","code","loading","startIcon","Check","fullWidth","title","subtitle","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","Flex","background","direction","alignItems","gap","hasRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","shadow","Typography","variant","tag","Grid","Root","Item","col","xs","Field","required","Label","TextInput","value","onChange","Error","Textarea","UsersPermissions","ref","ProtectedRolesEditPage","Protect","PERMISSIONS","updateRole"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EditPage.js","sources":["../../../../../admin/src/pages/Roles/pages/EditPage.jsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Button,\n Flex,\n TextInput,\n Textarea,\n Typography,\n Grid,\n Field,\n Box,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport {\n Page,\n BackButton,\n useAPIErrorHandler,\n useNotification,\n useFetchClient,\n Layouts,\n} from '@strapi/strapi/admin';\nimport { Formik, Form } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useQuery, useMutation } from 'react-query';\nimport { useMatch } from 'react-router-dom';\n\nimport UsersPermissions from '../../../components/UsersPermissions';\nimport { PERMISSIONS } from '../../../constants';\nimport getTrad from '../../../utils/getTrad';\nimport { createRoleSchema } from '../constants';\nimport { usePlugins } from '../hooks/usePlugins';\n\nexport const EditPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const {\n params: { id },\n } = useMatch(`/settings/users-permissions/roles/:id`);\n const { get } = useFetchClient();\n const { isLoading: isLoadingPlugins, routes } = usePlugins();\n const {\n data: role,\n isLoading: isLoadingRole,\n refetch: refetchRole,\n } = useQuery(['users-permissions', 'role', id], async () => {\n // TODO: why doesn't this endpoint follow the admin API conventions?\n const {\n data: { role },\n } = await get(`/users-permissions/roles/${id}`);\n\n return role;\n });\n\n const permissionsRef = React.useRef();\n const { put } = useFetchClient();\n const { formatAPIError } = useAPIErrorHandler();\n const mutation = useMutation((body) => put(`/users-permissions/roles/${id}`, body), {\n onError(error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n },\n\n async onSuccess() {\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTrad('Settings.roles.edited'),\n defaultMessage: 'Role edited',\n }),\n });\n\n await refetchRole();\n },\n });\n\n const handleEditRoleSubmit = async (data) => {\n const permissions = permissionsRef.current.getPermissions();\n\n await mutation.mutate({ ...data, ...permissions, users: [] });\n };\n\n if (isLoadingRole) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: 'Roles' }\n )}\n </Page.Title>\n <Formik\n enableReinitialize\n initialValues={{ name: role.name, description: role.description }}\n onSubmit={handleEditRoleSubmit}\n validationSchema={createRoleSchema}\n >\n {({ handleSubmit, values, handleChange, errors }) => (\n <Form noValidate onSubmit={handleSubmit}>\n <Layouts.Header\n primaryAction={\n !isLoadingPlugins ? (\n <Button\n disabled={role.code === 'strapi-super-admin'}\n type=\"submit\"\n loading={mutation.isLoading}\n startIcon={<Check />}\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n ) : null\n }\n title={role.name}\n subtitle={role.description}\n navigationAction={\n // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton fallback=\"..\" />\n </Box>\n }\n />\n <Layouts.Content>\n <Flex\n background=\"neutral0\"\n direction=\"column\"\n alignItems=\"stretch\"\n gap={7}\n hasRadius\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n shadow=\"filterShadow\"\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('EditPage.form.roles'),\n defaultMessage: 'Role details',\n })}\n </Typography>\n\n <Grid.Root gap={4}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"name\"\n error={\n errors?.name\n ? formatMessage({\n id: errors.name,\n defaultMessage: 'Name is required',\n })\n : false\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput type=\"text\" value={values.name || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"description\"\n error={\n errors?.description\n ? formatMessage({\n id: errors.description,\n defaultMessage: 'Description is required',\n })\n : false\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Field.Label>\n <Textarea value={values.description || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n\n {!isLoadingPlugins && (\n <UsersPermissions\n ref={permissionsRef}\n permissions={role.permissions}\n routes={routes}\n />\n )}\n </Flex>\n </Layouts.Content>\n </Form>\n )}\n </Formik>\n </Page.Main>\n );\n};\n\nexport const ProtectedRolesEditPage = () => (\n <Page.Protect permissions={PERMISSIONS.updateRole}>\n <EditPage />\n </Page.Protect>\n);\n"],"names":["EditPage","formatMessage","useIntl","toggleNotification","useNotification","params","id","useMatch","get","useFetchClient","isLoading","isLoadingPlugins","routes","usePlugins","data","role","isLoadingRole","refetch","refetchRole","useQuery","permissionsRef","React","useRef","put","formatAPIError","useAPIErrorHandler","mutation","useMutation","body","onError","error","type","message","onSuccess","getTrad","defaultMessage","handleEditRoleSubmit","permissions","current","getPermissions","mutate","users","_jsx","Page","Loading","_jsxs","Main","Title","name","Formik","enableReinitialize","initialValues","description","onSubmit","validationSchema","createRoleSchema","handleSubmit","values","handleChange","errors","Form","noValidate","Layouts","Header","primaryAction","Button","disabled","code","loading","startIcon","Check","fullWidth","title","subtitle","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","Flex","background","direction","alignItems","gap","hasRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","shadow","Typography","variant","tag","Grid","Root","Item","col","xs","Field","required","Label","TextInput","value","onChange","Error","Textarea","UsersPermissions","ref","ProtectedRolesEditPage","Protect","PERMISSIONS","updateRole"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditPage.mjs","sources":["../../../../../admin/src/pages/Roles/pages/EditPage.jsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Button,\n Flex,\n TextInput,\n Textarea,\n Typography,\n Grid,\n Field,\n Box,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport {\n Page,\n BackButton,\n useAPIErrorHandler,\n useNotification,\n useFetchClient,\n Layouts,\n} from '@strapi/strapi/admin';\nimport { Formik, Form } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useQuery, useMutation } from 'react-query';\nimport { useMatch } from 'react-router-dom';\n\nimport UsersPermissions from '../../../components/UsersPermissions';\nimport { PERMISSIONS } from '../../../constants';\nimport getTrad from '../../../utils/getTrad';\nimport { createRoleSchema } from '../constants';\nimport { usePlugins } from '../hooks/usePlugins';\n\nexport const EditPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const {\n params: { id },\n } = useMatch(`/settings/users-permissions/roles/:id`);\n const { get } = useFetchClient();\n const { isLoading: isLoadingPlugins, routes } = usePlugins();\n const {\n data: role,\n isLoading: isLoadingRole,\n refetch: refetchRole,\n } = useQuery(['users-permissions', 'role', id], async () => {\n // TODO: why doesn't this endpoint follow the admin API conventions?\n const {\n data: { role },\n } = await get(`/users-permissions/roles/${id}`);\n\n return role;\n });\n\n const permissionsRef = React.useRef();\n const { put } = useFetchClient();\n const { formatAPIError } = useAPIErrorHandler();\n const mutation = useMutation((body) => put(`/users-permissions/roles/${id}`, body), {\n onError(error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n },\n\n async onSuccess() {\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTrad('Settings.roles.created'),\n defaultMessage: 'Role edited',\n }),\n });\n\n await refetchRole();\n },\n });\n\n const handleEditRoleSubmit = async (data) => {\n const permissions = permissionsRef.current.getPermissions();\n\n await mutation.mutate({ ...data, ...permissions, users: [] });\n };\n\n if (isLoadingRole) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: 'Roles' }\n )}\n </Page.Title>\n <Formik\n enableReinitialize\n initialValues={{ name: role.name, description: role.description }}\n onSubmit={handleEditRoleSubmit}\n validationSchema={createRoleSchema}\n >\n {({ handleSubmit, values, handleChange, errors }) => (\n <Form noValidate onSubmit={handleSubmit}>\n <Layouts.Header\n primaryAction={\n !isLoadingPlugins ? (\n <Button\n disabled={role.code === 'strapi-super-admin'}\n type=\"submit\"\n loading={mutation.isLoading}\n startIcon={<Check />}\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n ) : null\n }\n title={role.name}\n subtitle={role.description}\n navigationAction={\n // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton fallback=\"..\" />\n </Box>\n }\n />\n <Layouts.Content>\n <Flex\n background=\"neutral0\"\n direction=\"column\"\n alignItems=\"stretch\"\n gap={7}\n hasRadius\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n shadow=\"filterShadow\"\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('EditPage.form.roles'),\n defaultMessage: 'Role details',\n })}\n </Typography>\n\n <Grid.Root gap={4}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"name\"\n error={\n errors?.name\n ? formatMessage({\n id: errors.name,\n defaultMessage: 'Name is required',\n })\n : false\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput type=\"text\" value={values.name || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"description\"\n error={\n errors?.description\n ? formatMessage({\n id: errors.description,\n defaultMessage: 'Description is required',\n })\n : false\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Field.Label>\n <Textarea value={values.description || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n\n {!isLoadingPlugins && (\n <UsersPermissions\n ref={permissionsRef}\n permissions={role.permissions}\n routes={routes}\n />\n )}\n </Flex>\n </Layouts.Content>\n </Form>\n )}\n </Formik>\n </Page.Main>\n );\n};\n\nexport const ProtectedRolesEditPage = () => (\n <Page.Protect permissions={PERMISSIONS.updateRole}>\n <EditPage />\n </Page.Protect>\n);\n"],"names":["EditPage","formatMessage","useIntl","toggleNotification","useNotification","params","id","useMatch","get","useFetchClient","isLoading","isLoadingPlugins","routes","usePlugins","data","role","isLoadingRole","refetch","refetchRole","useQuery","permissionsRef","React","useRef","put","formatAPIError","useAPIErrorHandler","mutation","useMutation","body","onError","error","type","message","onSuccess","getTrad","defaultMessage","handleEditRoleSubmit","permissions","current","getPermissions","mutate","users","_jsx","Page","Loading","_jsxs","Main","Title","name","Formik","enableReinitialize","initialValues","description","onSubmit","validationSchema","createRoleSchema","handleSubmit","values","handleChange","errors","Form","noValidate","Layouts","Header","primaryAction","Button","disabled","code","loading","startIcon","Check","fullWidth","title","subtitle","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","Flex","background","direction","alignItems","gap","hasRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","shadow","Typography","variant","tag","Grid","Root","Item","col","xs","Field","required","Label","TextInput","value","onChange","Error","Textarea","UsersPermissions","ref","ProtectedRolesEditPage","Protect","PERMISSIONS","updateRole"],"mappings":";;;;;;;;;;;;;;;MAgCaA,QAAAA,GAAW,IAAA;IACtB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;IAC/B,MAAM,EACJC,MAAAA,EAAQ,EAAEC,EAAE,EAAE,EACf,GAAGC,QAAAA,CAAS,CAAC,qCAAqC,CAAC,CAAA;IACpD,MAAM,EAAEC,GAAG,EAAE,GAAGC,cAAAA,EAAAA;AAChB,IAAA,MAAM,EAAEC,SAAAA,EAAWC,gBAAgB,EAAEC,MAAM,EAAE,GAAGC,UAAAA,EAAAA;IAChD,MAAM,EACJC,IAAAA,EAAMC,IAAI,EACVL,SAAAA,EAAWM,aAAa,EACxBC,OAAAA,EAASC,WAAW,EACrB,GAAGC,QAAAA,CAAS;AAAC,QAAA,mBAAA;AAAqB,QAAA,MAAA;AAAQb,QAAAA;KAAG,EAAE,UAAA;;AAE9C,QAAA,MAAM,EACJQ,IAAAA,EAAM,EAAEC,IAAI,EAAE,EACf,GAAG,MAAMP,GAAAA,CAAI,CAAC,yBAAyB,EAAEF,EAAAA,CAAAA,CAAI,CAAA;QAE9C,OAAOS,IAAAA;AACT,IAAA,CAAA,CAAA;IAEA,MAAMK,cAAAA,GAAiBC,MAAMC,MAAM,EAAA;IACnC,MAAM,EAAEC,GAAG,EAAE,GAAGd,cAAAA,EAAAA;IAChB,MAAM,EAAEe,cAAc,EAAE,GAAGC,kBAAAA,EAAAA;IAC3B,MAAMC,QAAAA,GAAWC,WAAAA,CAAY,CAACC,IAAAA,GAASL,GAAAA,CAAI,CAAC,yBAAyB,EAAEjB,EAAAA,CAAAA,CAAI,EAAEsB,IAAAA,CAAAA,EAAO;AAClFC,QAAAA,OAAAA,CAAAA,CAAQC,KAAK,EAAA;YACX3B,kBAAAA,CAAmB;gBACjB4B,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAASR,cAAAA,CAAeM,KAAAA;AAC1B,aAAA,CAAA;AACF,QAAA,CAAA;QAEA,MAAMG,SAAAA,CAAAA,GAAAA;YACJ9B,kBAAAA,CAAmB;gBACjB4B,IAAAA,EAAM,SAAA;AACNC,gBAAAA,OAAAA,EAAS/B,aAAAA,CAAc;AACrBK,oBAAAA,EAAAA,EAAI4B,OAAAA,CAAQ,wBAAA,CAAA;oBACZC,cAAAA,EAAgB;AAClB,iBAAA;AACF,aAAA,CAAA;YAEA,MAAMjB,WAAAA,EAAAA;AACR,QAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAMkB,uBAAuB,OAAOtB,IAAAA,GAAAA;AAClC,QAAA,MAAMuB,WAAAA,GAAcjB,cAAAA,CAAekB,OAAO,CAACC,cAAc,EAAA;QAEzD,MAAMb,QAAAA,CAASc,MAAM,CAAC;AAAE,YAAA,GAAG1B,IAAI;AAAE,YAAA,GAAGuB,WAAW;AAAEI,YAAAA,KAAAA,EAAO;AAAG,SAAA,CAAA;AAC7D,IAAA,CAAA;AAEA,IAAA,IAAIzB,aAAAA,EAAe;QACjB,qBAAO0B,GAAA,CAACC,KAAKC,OAAO,EAAA,EAAA,CAAA;AACtB,IAAA;IAEA,qBACEC,IAAA,CAACF,KAAKG,IAAI,EAAA;;AACR,0BAAAJ,GAAA,CAACC,KAAKI,KAAK,EAAA;0BACR9C,aAAAA,CACC;oBAAEK,EAAAA,EAAI,oBAAA;oBAAsB6B,cAAAA,EAAgB;iBAAoB,EAChE;oBAAEa,IAAAA,EAAM;AAAQ,iBAAA;;0BAGpBN,GAAA,CAACO,MAAAA,EAAAA;gBACCC,kBAAkB,EAAA,IAAA;gBAClBC,aAAAA,EAAe;AAAEH,oBAAAA,IAAAA,EAAMjC,KAAKiC,IAAI;AAAEI,oBAAAA,WAAAA,EAAarC,KAAKqC;AAAY,iBAAA;gBAChEC,QAAAA,EAAUjB,oBAAAA;gBACVkB,gBAAAA,EAAkBC,gBAAAA;0BAEjB,CAAC,EAAEC,YAAY,EAAEC,MAAM,EAAEC,YAAY,EAAEC,MAAM,EAAE,iBAC9Cd,IAAA,CAACe,IAAAA,EAAAA;wBAAKC,UAAU,EAAA,IAAA;wBAACR,QAAAA,EAAUG,YAAAA;;AACzB,0CAAAd,GAAA,CAACoB,QAAQC,MAAM,EAAA;gCACbC,aAAAA,EACE,CAACrD,iCACC+B,GAAA,CAACuB,MAAAA,EAAAA;oCACCC,QAAAA,EAAUnD,IAAAA,CAAKoD,IAAI,KAAK,oBAAA;oCACxBpC,IAAAA,EAAK,QAAA;AACLqC,oCAAAA,OAAAA,EAAS1C,SAAShB,SAAS;AAC3B2D,oCAAAA,SAAAA,gBAAW3B,GAAA,CAAC4B,KAAAA,EAAAA,EAAAA,CAAAA;oCACZC,SAAS,EAAA,IAAA;8CAERtE,aAAAA,CAAc;wCACbK,EAAAA,EAAI,aAAA;wCACJ6B,cAAAA,EAAgB;AAClB,qCAAA;AAEA,iCAAA,CAAA,GAAA,IAAA;AAENqC,gCAAAA,KAAAA,EAAOzD,KAAKiC,IAAI;AAChByB,gCAAAA,QAAAA,EAAU1D,KAAKqC,WAAW;AAC1BsB,gCAAAA,gBAAAA;8CAEEhC,GAAA,CAACiC,GAAAA,EAAAA;oCAAIC,OAAAA,EAAS;wCAAEC,OAAAA,EAAS,MAAA;wCAAQC,MAAAA,EAAQ;AAAQ,qCAAA;AAC/C,oCAAA,QAAA,gBAAApC,GAAA,CAACqC,UAAAA,EAAAA;wCAAWC,QAAAA,EAAS;;;;AAI3B,0CAAAtC,GAAA,CAACoB,QAAQmB,OAAO,EAAA;AACd,gCAAA,QAAA,gBAAApC,IAAA,CAACqC,IAAAA,EAAAA;oCACCC,UAAAA,EAAW,UAAA;oCACXC,SAAAA,EAAU,QAAA;oCACVC,UAAAA,EAAW,SAAA;oCACXC,GAAAA,EAAK,CAAA;oCACLC,SAAS,EAAA,IAAA;oCACTC,UAAAA,EAAY,CAAA;oCACZC,aAAAA,EAAe,CAAA;oCACfC,WAAAA,EAAa,CAAA;oCACbC,YAAAA,EAAc,CAAA;oCACdC,MAAAA,EAAO,cAAA;;sDAEP/C,IAAA,CAACqC,IAAAA,EAAAA;4CAAKE,SAAAA,EAAU,QAAA;4CAASC,UAAAA,EAAW,SAAA;4CAAUC,GAAAA,EAAK,CAAA;;8DACjD5C,GAAA,CAACmD,UAAAA,EAAAA;oDAAWC,OAAAA,EAAQ,OAAA;oDAAQC,GAAAA,EAAI,IAAA;8DAC7B9F,aAAAA,CAAc;AACbK,wDAAAA,EAAAA,EAAI4B,OAAAA,CAAQ,qBAAA,CAAA;wDACZC,cAAAA,EAAgB;AAClB,qDAAA;;AAGF,8DAAAU,IAAA,CAACmD,KAAKC,IAAI,EAAA;oDAACX,GAAAA,EAAK,CAAA;;AACd,sEAAA5C,GAAA,CAACsD,KAAKE,IAAI,EAAA;4DAACC,GAAAA,EAAK,CAAA;4DAAGC,EAAAA,EAAI,EAAA;4DAAIhB,SAAAA,EAAU,QAAA;4DAASC,UAAAA,EAAW,SAAA;oFACvDxC,IAAA,CAACwD,MAAMJ,IAAI,EAAA;gEACTjD,IAAAA,EAAK,MAAA;gEACLlB,KAAAA,EACE6B,MAAAA,EAAQX,OACJ/C,aAAAA,CAAc;AACZK,oEAAAA,EAAAA,EAAIqD,OAAOX,IAAI;oEACfb,cAAAA,EAAgB;iEAClB,CAAA,GACA,KAAA;gEAENmE,QAAQ,EAAA,IAAA;;AAER,kFAAA5D,GAAA,CAAC2D,MAAME,KAAK,EAAA;kFACTtG,aAAAA,CAAc;4EACbK,EAAAA,EAAI,aAAA;4EACJ6B,cAAAA,EAAgB;AAClB,yEAAA;;kFAEFO,GAAA,CAAC8D,SAAAA,EAAAA;wEAAUzE,IAAAA,EAAK,MAAA;wEAAO0E,KAAAA,EAAOhD,MAAAA,CAAOT,IAAI,IAAI,EAAA;wEAAI0D,QAAAA,EAAUhD;;AAC3D,kFAAAhB,GAAA,CAAC2D,MAAMM,KAAK,EAAA,EAAA;;;;AAGhB,sEAAAjE,GAAA,CAACsD,KAAKE,IAAI,EAAA;4DAACC,GAAAA,EAAK,CAAA;4DAAGC,EAAAA,EAAI,EAAA;4DAAIhB,SAAAA,EAAU,QAAA;4DAASC,UAAAA,EAAW,SAAA;oFACvDxC,IAAA,CAACwD,MAAMJ,IAAI,EAAA;gEACTjD,IAAAA,EAAK,aAAA;gEACLlB,KAAAA,EACE6B,MAAAA,EAAQP,cACJnD,aAAAA,CAAc;AACZK,oEAAAA,EAAAA,EAAIqD,OAAOP,WAAW;oEACtBjB,cAAAA,EAAgB;iEAClB,CAAA,GACA,KAAA;gEAENmE,QAAQ,EAAA,IAAA;;AAER,kFAAA5D,GAAA,CAAC2D,MAAME,KAAK,EAAA;kFACTtG,aAAAA,CAAc;4EACbK,EAAAA,EAAI,oBAAA;4EACJ6B,cAAAA,EAAgB;AAClB,yEAAA;;kFAEFO,GAAA,CAACkE,QAAAA,EAAAA;wEAASH,KAAAA,EAAOhD,MAAAA,CAAOL,WAAW,IAAI,EAAA;wEAAIsD,QAAAA,EAAUhD;;AACrD,kFAAAhB,GAAA,CAAC2D,MAAMM,KAAK,EAAA,EAAA;;;;;;;;AAMnB,wCAAA,CAAChG,kCACA+B,GAAA,CAACmE,gBAAAA,EAAAA;4CACCC,GAAAA,EAAK1F,cAAAA;AACLiB,4CAAAA,WAAAA,EAAatB,KAAKsB,WAAW;4CAC7BzB,MAAAA,EAAQA;;;;;;;;;;AAU5B;AAEO,MAAMmG,sBAAAA,GAAyB,kBACpCrE,GAAA,CAACC,KAAKqE,OAAO,EAAA;AAAC3E,QAAAA,WAAAA,EAAa4E,YAAYC,UAAU;AAC/C,QAAA,QAAA,gBAAAxE,GAAA,CAAC1C,QAAAA,EAAAA,EAAAA;AAEH,KAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"EditPage.mjs","sources":["../../../../../admin/src/pages/Roles/pages/EditPage.jsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Button,\n Flex,\n TextInput,\n Textarea,\n Typography,\n Grid,\n Field,\n Box,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport {\n Page,\n BackButton,\n useAPIErrorHandler,\n useNotification,\n useFetchClient,\n Layouts,\n} from '@strapi/strapi/admin';\nimport { Formik, Form } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useQuery, useMutation } from 'react-query';\nimport { useMatch } from 'react-router-dom';\n\nimport UsersPermissions from '../../../components/UsersPermissions';\nimport { PERMISSIONS } from '../../../constants';\nimport getTrad from '../../../utils/getTrad';\nimport { createRoleSchema } from '../constants';\nimport { usePlugins } from '../hooks/usePlugins';\n\nexport const EditPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const {\n params: { id },\n } = useMatch(`/settings/users-permissions/roles/:id`);\n const { get } = useFetchClient();\n const { isLoading: isLoadingPlugins, routes } = usePlugins();\n const {\n data: role,\n isLoading: isLoadingRole,\n refetch: refetchRole,\n } = useQuery(['users-permissions', 'role', id], async () => {\n // TODO: why doesn't this endpoint follow the admin API conventions?\n const {\n data: { role },\n } = await get(`/users-permissions/roles/${id}`);\n\n return role;\n });\n\n const permissionsRef = React.useRef();\n const { put } = useFetchClient();\n const { formatAPIError } = useAPIErrorHandler();\n const mutation = useMutation((body) => put(`/users-permissions/roles/${id}`, body), {\n onError(error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n },\n\n async onSuccess() {\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTrad('Settings.roles.edited'),\n defaultMessage: 'Role edited',\n }),\n });\n\n await refetchRole();\n },\n });\n\n const handleEditRoleSubmit = async (data) => {\n const permissions = permissionsRef.current.getPermissions();\n\n await mutation.mutate({ ...data, ...permissions, users: [] });\n };\n\n if (isLoadingRole) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: 'Roles' }\n )}\n </Page.Title>\n <Formik\n enableReinitialize\n initialValues={{ name: role.name, description: role.description }}\n onSubmit={handleEditRoleSubmit}\n validationSchema={createRoleSchema}\n >\n {({ handleSubmit, values, handleChange, errors }) => (\n <Form noValidate onSubmit={handleSubmit}>\n <Layouts.Header\n primaryAction={\n !isLoadingPlugins ? (\n <Button\n disabled={role.code === 'strapi-super-admin'}\n type=\"submit\"\n loading={mutation.isLoading}\n startIcon={<Check />}\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n ) : null\n }\n title={role.name}\n subtitle={role.description}\n navigationAction={\n // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton fallback=\"..\" />\n </Box>\n }\n />\n <Layouts.Content>\n <Flex\n background=\"neutral0\"\n direction=\"column\"\n alignItems=\"stretch\"\n gap={7}\n hasRadius\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n shadow=\"filterShadow\"\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('EditPage.form.roles'),\n defaultMessage: 'Role details',\n })}\n </Typography>\n\n <Grid.Root gap={4}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"name\"\n error={\n errors?.name\n ? formatMessage({\n id: errors.name,\n defaultMessage: 'Name is required',\n })\n : false\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput type=\"text\" value={values.name || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"description\"\n error={\n errors?.description\n ? formatMessage({\n id: errors.description,\n defaultMessage: 'Description is required',\n })\n : false\n }\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Field.Label>\n <Textarea value={values.description || ''} onChange={handleChange} />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n\n {!isLoadingPlugins && (\n <UsersPermissions\n ref={permissionsRef}\n permissions={role.permissions}\n routes={routes}\n />\n )}\n </Flex>\n </Layouts.Content>\n </Form>\n )}\n </Formik>\n </Page.Main>\n );\n};\n\nexport const ProtectedRolesEditPage = () => (\n <Page.Protect permissions={PERMISSIONS.updateRole}>\n <EditPage />\n </Page.Protect>\n);\n"],"names":["EditPage","formatMessage","useIntl","toggleNotification","useNotification","params","id","useMatch","get","useFetchClient","isLoading","isLoadingPlugins","routes","usePlugins","data","role","isLoadingRole","refetch","refetchRole","useQuery","permissionsRef","React","useRef","put","formatAPIError","useAPIErrorHandler","mutation","useMutation","body","onError","error","type","message","onSuccess","getTrad","defaultMessage","handleEditRoleSubmit","permissions","current","getPermissions","mutate","users","_jsx","Page","Loading","_jsxs","Main","Title","name","Formik","enableReinitialize","initialValues","description","onSubmit","validationSchema","createRoleSchema","handleSubmit","values","handleChange","errors","Form","noValidate","Layouts","Header","primaryAction","Button","disabled","code","loading","startIcon","Check","fullWidth","title","subtitle","navigationAction","Box","display","initial","medium","BackButton","fallback","Content","Flex","background","direction","alignItems","gap","hasRadius","paddingTop","paddingBottom","paddingLeft","paddingRight","shadow","Typography","variant","tag","Grid","Root","Item","col","xs","Field","required","Label","TextInput","value","onChange","Error","Textarea","UsersPermissions","ref","ProtectedRolesEditPage","Protect","PERMISSIONS","updateRole"],"mappings":"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"}
|
|
@@ -60,6 +60,7 @@ var en = {
|
|
|
60
60
|
"Providers.status": "Status",
|
|
61
61
|
"Roles.empty": "You don't have any roles yet.",
|
|
62
62
|
"Roles.empty.search": "No roles match the search.",
|
|
63
|
+
"Settings.roles.created": "Role created",
|
|
63
64
|
"Settings.roles.deleted": "Role deleted",
|
|
64
65
|
"Settings.roles.edited": "Role edited",
|
|
65
66
|
"Settings.section-label": "Users & Permissions plugin",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -58,6 +58,7 @@ var en = {
|
|
|
58
58
|
"Providers.status": "Status",
|
|
59
59
|
"Roles.empty": "You don't have any roles yet.",
|
|
60
60
|
"Roles.empty.search": "No roles match the search.",
|
|
61
|
+
"Settings.roles.created": "Role created",
|
|
61
62
|
"Settings.roles.deleted": "Role deleted",
|
|
62
63
|
"Settings.roles.edited": "Role edited",
|
|
63
64
|
"Settings.section-label": "Users & Permissions plugin",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var node_module = require('node:module');
|
|
4
|
+
|
|
5
|
+
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
6
|
+
const require$1 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('_virtual/_node_crypto.js', document.baseURI).href)));
|
|
7
|
+
function __require() { return require$1("node:crypto"); }
|
|
8
|
+
|
|
9
|
+
exports.__require = __require;
|
|
10
|
+
//# sourceMappingURL=_node_crypto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_node_crypto.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_node_crypto.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var node_module = require('node:module');
|
|
4
|
+
|
|
5
|
+
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
6
|
+
const require$1 = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('_virtual/_node_url.js', document.baseURI).href)));
|
|
7
|
+
function __require() { return require$1("node:url"); }
|
|
8
|
+
|
|
9
|
+
exports.__require = __require;
|
|
10
|
+
//# sourceMappingURL=_node_url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_node_url.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_node_url.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|
|
@@ -7,7 +7,7 @@ var require$$1 = require('@strapi/utils');
|
|
|
7
7
|
var index = require('../utils/index.js');
|
|
8
8
|
var refreshCookieOptions = require('../utils/refresh-cookie-options.js');
|
|
9
9
|
var auth$1 = require('./validation/auth.js');
|
|
10
|
-
var
|
|
10
|
+
var index$1 = require('../utils/oauth-connect/index.js');
|
|
11
11
|
|
|
12
12
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
13
|
|
|
@@ -15,7 +15,6 @@ var require$$0__default$2 = /*#__PURE__*/_interopDefault(require$$0$2);
|
|
|
15
15
|
var require$$0__default$1 = /*#__PURE__*/_interopDefault(require$$0$1);
|
|
16
16
|
var require$$0__default = /*#__PURE__*/_interopDefault(require$$0);
|
|
17
17
|
var require$$1__default = /*#__PURE__*/_interopDefault(require$$1);
|
|
18
|
-
var require$$7__default = /*#__PURE__*/_interopDefault(require$$7);
|
|
19
18
|
|
|
20
19
|
var auth;
|
|
21
20
|
var hasRequiredAuth;
|
|
@@ -375,47 +374,48 @@ function requireAuth() {
|
|
|
375
374
|
});
|
|
376
375
|
},
|
|
377
376
|
async connect (ctx, next) {
|
|
378
|
-
const grant = require$$7__default.default.koa();
|
|
379
377
|
const providers = await strapi1.store({
|
|
380
378
|
type: 'plugin',
|
|
381
379
|
name: 'users-permissions',
|
|
382
380
|
key: 'grant'
|
|
383
381
|
}).get();
|
|
384
|
-
const apiPrefix = strapi1.config.get('api.rest.prefix');
|
|
385
|
-
const grantConfig = {
|
|
386
|
-
defaults: {
|
|
387
|
-
prefix: `${apiPrefix}/connect`
|
|
388
|
-
},
|
|
389
|
-
...providers
|
|
390
|
-
};
|
|
391
382
|
const [requestPath] = ctx.request.url.split('?');
|
|
392
383
|
const provider = requestPath.split('/connect/')[1].split('/')[0];
|
|
393
|
-
if (!_.get(
|
|
384
|
+
if (!_.get(providers, [
|
|
385
|
+
provider,
|
|
386
|
+
'enabled'
|
|
387
|
+
])) {
|
|
394
388
|
throw new ApplicationError('This provider is disabled');
|
|
395
389
|
}
|
|
396
390
|
if (!strapi1.config.server.url.startsWith('http')) {
|
|
397
391
|
strapi1.log.warn('You are using a third party provider for login. Make sure to set an absolute url in config/server.js. More info here: https://docs.strapi.io/developer-docs/latest/plugins/users-permissions.html#setting-up-the-server-url');
|
|
398
392
|
}
|
|
399
|
-
// Ability to pass OAuth callback dynamically
|
|
400
393
|
const queryCustomCallback = _.get(ctx, 'query.callback');
|
|
401
394
|
const dynamicSessionCallback = _.get(ctx, 'session.grant.dynamic.callback');
|
|
402
395
|
const customCallback = queryCustomCallback ?? dynamicSessionCallback;
|
|
403
|
-
// The custom callback is validated to make sure it's not redirecting to an unwanted actor.
|
|
404
396
|
if (customCallback !== undefined) {
|
|
405
397
|
try {
|
|
406
|
-
// We're extracting the callback validator from the plugin config since it can be user-customized
|
|
407
398
|
const { validate: validateCallback } = strapi1.plugin('users-permissions').config('callback');
|
|
408
|
-
await validateCallback(customCallback,
|
|
409
|
-
|
|
399
|
+
await validateCallback(customCallback, providers[provider]);
|
|
400
|
+
// Persist across the provider redirect round-trip (request state alone is lost).
|
|
401
|
+
ctx.session = ctx.session || {};
|
|
402
|
+
ctx.session.grant = ctx.session.grant || {};
|
|
403
|
+
ctx.session.grant.dynamic = {
|
|
404
|
+
...ctx.session.grant.dynamic || {},
|
|
405
|
+
callback: customCallback
|
|
406
|
+
};
|
|
407
|
+
ctx.state.oauthConnect = {
|
|
408
|
+
callback: customCallback
|
|
409
|
+
};
|
|
410
410
|
} catch (e) {
|
|
411
411
|
throw new ValidationError('Invalid callback URL provided', {
|
|
412
412
|
callback: customCallback
|
|
413
413
|
});
|
|
414
414
|
}
|
|
415
415
|
}
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
return
|
|
416
|
+
const { createOAuthConnectMiddleware } = index$1.__require();
|
|
417
|
+
const oauthConnect = createOAuthConnectMiddleware();
|
|
418
|
+
return oauthConnect(ctx, next);
|
|
419
419
|
},
|
|
420
420
|
async forgotPassword (ctx) {
|
|
421
421
|
const { email } = await validateForgotPasswordBody(ctx.request.body);
|