@strapi/plugin-users-permissions 5.48.1 → 5.50.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.cjs +1 -0
- package/admin/src/pages/AdvancedSettings/index.jsx +1 -1
- package/admin/src/pages/Roles/pages/ListPage/index.jsx +1 -1
- package/admin/src/translations/ja.json +46 -7
- package/dist/admin/components/BoundRoute/index.js +12 -6
- package/dist/admin/components/BoundRoute/index.js.map +1 -1
- package/dist/admin/components/FormModal/Input/index.js +25 -21
- package/dist/admin/components/FormModal/Input/index.js.map +1 -1
- package/dist/admin/components/FormModal/index.js +14 -10
- package/dist/admin/components/FormModal/index.js.map +1 -1
- package/dist/admin/components/Permissions/PermissionRow/SubCategory.js +8 -3
- package/dist/admin/components/Permissions/PermissionRow/SubCategory.js.map +1 -1
- package/dist/admin/components/Permissions/PermissionRow/index.js +9 -4
- package/dist/admin/components/Permissions/PermissionRow/index.js.map +1 -1
- package/dist/admin/components/Policies/index.js +9 -3
- package/dist/admin/components/Policies/index.js.map +1 -1
- package/dist/admin/components/UsersPermissions/index.js +6 -2
- package/dist/admin/components/UsersPermissions/index.js.map +1 -1
- package/dist/admin/components/UsersPermissions/reducer.js +10 -4
- package/dist/admin/components/UsersPermissions/reducer.js.map +1 -1
- package/dist/admin/contexts/UsersPermissionsContext/index.js +6 -2
- package/dist/admin/contexts/UsersPermissionsContext/index.js.map +1 -1
- package/dist/admin/pages/AdvancedSettings/index.js +1 -1
- package/dist/admin/pages/AdvancedSettings/index.js.map +1 -1
- package/dist/admin/pages/AdvancedSettings/index.mjs +1 -1
- package/dist/admin/pages/AdvancedSettings/index.mjs.map +1 -1
- package/dist/admin/pages/AdvancedSettings/utils/schema.js +3 -2
- package/dist/admin/pages/AdvancedSettings/utils/schema.js.map +1 -1
- package/dist/admin/pages/EmailTemplates/components/EmailForm.js +17 -13
- package/dist/admin/pages/EmailTemplates/components/EmailForm.js.map +1 -1
- package/dist/admin/pages/EmailTemplates/components/EmailTable.js +6 -2
- package/dist/admin/pages/EmailTemplates/components/EmailTable.js.map +1 -1
- package/dist/admin/pages/EmailTemplates/index.js +3 -2
- package/dist/admin/pages/EmailTemplates/index.js.map +1 -1
- package/dist/admin/pages/EmailTemplates/utils/schema.js +3 -2
- package/dist/admin/pages/EmailTemplates/utils/schema.js.map +1 -1
- package/dist/admin/pages/Providers/index.js +7 -3
- package/dist/admin/pages/Providers/index.js.map +1 -1
- package/dist/admin/pages/Providers/utils/forms.js +3 -2
- package/dist/admin/pages/Providers/utils/forms.js.map +1 -1
- package/dist/admin/pages/Roles/constants.js +3 -2
- package/dist/admin/pages/Roles/constants.js.map +1 -1
- package/dist/admin/pages/Roles/pages/CreatePage.js +3 -2
- package/dist/admin/pages/Roles/pages/CreatePage.js.map +1 -1
- package/dist/admin/pages/Roles/pages/EditPage.js +3 -2
- package/dist/admin/pages/Roles/pages/EditPage.js.map +1 -1
- package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.js +9 -5
- package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.js.map +1 -1
- package/dist/admin/pages/Roles/pages/ListPage/index.js +1 -1
- package/dist/admin/pages/Roles/pages/ListPage/index.js.map +1 -1
- package/dist/admin/pages/Roles/pages/ListPage/index.mjs +1 -1
- package/dist/admin/pages/Roles/pages/ListPage/index.mjs.map +1 -1
- package/dist/admin/translations/ja.json.js +46 -7
- package/dist/admin/translations/ja.json.js.map +1 -1
- package/dist/admin/translations/ja.json.mjs +46 -7
- package/dist/admin/translations/ja.json.mjs.map +1 -1
- package/dist/admin/utils/cleanPermissions.js +6 -2
- package/dist/admin/utils/cleanPermissions.js.map +1 -1
- package/dist/admin/utils/formatPluginName.js +5 -1
- package/dist/admin/utils/formatPluginName.js.map +1 -1
- package/dist/server/bootstrap/index.js +7 -2
- package/dist/server/bootstrap/index.js.map +1 -1
- package/dist/server/controllers/auth.js +144 -117
- package/dist/server/controllers/auth.js.map +1 -1
- package/dist/server/controllers/auth.mjs +132 -113
- package/dist/server/controllers/auth.mjs.map +1 -1
- package/dist/server/controllers/content-manager-user.js +8 -3
- package/dist/server/controllers/content-manager-user.js.map +1 -1
- package/dist/server/controllers/permissions.js +5 -1
- package/dist/server/controllers/permissions.js.map +1 -1
- package/dist/server/controllers/role.js +7 -2
- package/dist/server/controllers/role.js.map +1 -1
- package/dist/server/controllers/settings.js +7 -2
- package/dist/server/controllers/settings.js.map +1 -1
- package/dist/server/controllers/user.js +7 -2
- package/dist/server/controllers/user.js.map +1 -1
- package/dist/server/controllers/validation/auth.js +5 -1
- package/dist/server/controllers/validation/auth.js.map +1 -1
- package/dist/server/controllers/validation/email-template.js +7 -2
- package/dist/server/controllers/validation/email-template.js.map +1 -1
- package/dist/server/controllers/validation/user.js +21 -10
- package/dist/server/controllers/validation/user.js.map +1 -1
- package/dist/server/controllers/validation/user.mjs +16 -9
- package/dist/server/controllers/validation/user.mjs.map +1 -1
- package/dist/server/graphql/mutations/auth/change-password.js +5 -1
- package/dist/server/graphql/mutations/auth/change-password.js.map +1 -1
- package/dist/server/graphql/mutations/auth/email-confirmation.js +5 -1
- package/dist/server/graphql/mutations/auth/email-confirmation.js.map +1 -1
- package/dist/server/graphql/mutations/auth/forgot-password.js +5 -1
- package/dist/server/graphql/mutations/auth/forgot-password.js.map +1 -1
- package/dist/server/graphql/mutations/auth/login.js +5 -1
- package/dist/server/graphql/mutations/auth/login.js.map +1 -1
- package/dist/server/graphql/mutations/auth/register.js +5 -1
- package/dist/server/graphql/mutations/auth/register.js.map +1 -1
- package/dist/server/graphql/mutations/auth/reset-password.js +5 -1
- package/dist/server/graphql/mutations/auth/reset-password.js.map +1 -1
- package/dist/server/graphql/mutations/crud/role/create-role.js +5 -1
- package/dist/server/graphql/mutations/crud/role/create-role.js.map +1 -1
- package/dist/server/graphql/mutations/crud/user/create-user.js +5 -1
- package/dist/server/graphql/mutations/crud/user/create-user.js.map +1 -1
- package/dist/server/graphql/mutations/crud/user/update-user.js +5 -1
- package/dist/server/graphql/mutations/crud/user/update-user.js.map +1 -1
- package/dist/server/graphql/utils.js +5 -1
- package/dist/server/graphql/utils.js.map +1 -1
- package/dist/server/middlewares/rateLimit.js +11 -4
- package/dist/server/middlewares/rateLimit.js.map +1 -1
- package/dist/server/register.js +7 -2
- package/dist/server/register.js.map +1 -1
- package/dist/server/routes/content-api/auth.js +16 -0
- package/dist/server/routes/content-api/auth.js.map +1 -1
- package/dist/server/routes/content-api/auth.mjs +16 -0
- package/dist/server/routes/content-api/auth.mjs.map +1 -1
- package/dist/server/routes/content-api/index.js +5 -1
- package/dist/server/routes/content-api/index.js.map +1 -1
- package/dist/server/routes/content-api/user.js +5 -1
- package/dist/server/routes/content-api/user.js.map +1 -1
- package/dist/server/routes/content-api/validation.js +36 -4
- package/dist/server/routes/content-api/validation.js.map +1 -1
- package/dist/server/routes/content-api/validation.mjs +29 -2
- package/dist/server/routes/content-api/validation.mjs.map +1 -1
- package/dist/server/services/jwt.js +15 -8
- package/dist/server/services/jwt.js.map +1 -1
- package/dist/server/services/jwt.mjs +8 -6
- package/dist/server/services/jwt.mjs.map +1 -1
- package/dist/server/services/providers-registry.js +13 -5
- package/dist/server/services/providers-registry.js.map +1 -1
- package/dist/server/services/providers.js +7 -2
- package/dist/server/services/providers.js.map +1 -1
- package/dist/server/services/role.js +7 -2
- package/dist/server/services/role.js.map +1 -1
- package/dist/server/services/user.js +13 -5
- package/dist/server/services/user.js.map +1 -1
- package/dist/server/services/users-permissions.js +19 -4
- package/dist/server/services/users-permissions.js.map +1 -1
- package/dist/server/services/users-permissions.mjs +8 -0
- package/dist/server/services/users-permissions.mjs.map +1 -1
- package/dist/server/strategies/users-permissions.js +15 -3
- package/dist/server/strategies/users-permissions.js.map +1 -1
- package/dist/server/strategies/users-permissions.mjs +8 -1
- package/dist/server/strategies/users-permissions.mjs.map +1 -1
- package/dist/server/utils/index.js +5 -1
- package/dist/server/utils/index.js.map +1 -1
- package/dist/server/utils/refresh-cookie-options.js +27 -0
- package/dist/server/utils/refresh-cookie-options.js.map +1 -0
- package/dist/server/utils/refresh-cookie-options.mjs +25 -0
- package/dist/server/utils/refresh-cookie-options.mjs.map +1 -0
- package/dist/server/utils/sanitize/sanitizers.js +7 -2
- package/dist/server/utils/sanitize/sanitizers.js.map +1 -1
- package/lint-staged.config.mjs +1 -0
- package/package.json +5 -5
- package/rollup.config.mjs +3 -3
- package/server/controllers/auth.js +162 -141
- package/server/controllers/validation/user.js +22 -9
- package/server/routes/content-api/auth.js +12 -0
- package/server/routes/content-api/validation.js +32 -2
- package/server/services/jwt.js +4 -3
- package/server/services/users-permissions.js +2 -0
- package/server/strategies/users-permissions.js +6 -1
- package/server/utils/refresh-cookie-options.js +20 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../admin/src/pages/Roles/pages/ListPage/index.jsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport {\n Table,\n Th,\n Thead,\n Tr,\n Typography,\n useNotifyAT,\n VisuallyHidden,\n EmptyStateLayout,\n useCollator,\n useFilter,\n LinkButton,\n Dialog,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport {\n ConfirmDialog,\n useTracking,\n Page,\n SearchInput,\n useNotification,\n useQueryParams,\n useFetchClient,\n useRBAC,\n Layouts,\n} from '@strapi/strapi/admin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery } from 'react-query';\nimport { NavLink } from 'react-router-dom';\n\nimport { PERMISSIONS } from '../../../../constants';\nimport { getTrad } from '../../../../utils';\n\nimport TableBody from './components/TableBody';\n\nexport const RolesListPage = () => {\n const { trackUsage } = useTracking();\n const { formatMessage, locale } = useIntl();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const [{ query }] = useQueryParams();\n const _q = query?._q || '';\n const [showConfirmDelete, setShowConfirmDelete] = useState(false);\n const [roleToDelete, setRoleToDelete] = useState();\n const { del, get } = useFetchClient();\n\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canRead, canDelete, canCreate, canUpdate },\n } = useRBAC({\n create: PERMISSIONS.createRole,\n read: PERMISSIONS.readRoles,\n update: PERMISSIONS.updateRole,\n delete: PERMISSIONS.deleteRole,\n });\n\n const {\n isLoading: isLoadingForData,\n data: { roles },\n isFetching,\n refetch,\n } = useQuery('get-roles', () => fetchData(toggleNotification, formatMessage, notifyStatus), {\n initialData: {},\n enabled: canRead,\n });\n\n const { contains } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n /**\n * @type {Intl.Collator}\n */\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const isLoading = isLoadingForData || isFetching || isLoadingForPermissions;\n\n const handleShowConfirmDelete = () => {\n setShowConfirmDelete(!showConfirmDelete);\n };\n\n const deleteData = async (id, formatMessage, toggleNotification) => {\n try {\n await del(`/users-permissions/roles/${id}`);\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n };\n\n const fetchData = async (toggleNotification, formatMessage, notifyStatus) => {\n try {\n const { data } = await get('/users-permissions/roles');\n notifyStatus('The roles have loaded successfully');\n\n return data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n\n throw new Error(err);\n }\n };\n\n const emptyLayout = {\n roles: {\n id: getTrad('Roles.empty'),\n defaultMessage: \"You don't have any roles yet.\",\n },\n search: {\n id: getTrad('Roles.empty.search'),\n defaultMessage: 'No roles match the search.',\n },\n };\n\n const pageTitle = formatMessage({\n id: 'global.roles',\n defaultMessage: 'Roles',\n });\n\n const deleteMutation = useMutation((id) => deleteData(id, formatMessage, toggleNotification), {\n async onSuccess() {\n await refetch();\n },\n });\n\n const handleConfirmDelete = async () => {\n await deleteMutation.mutateAsync(roleToDelete);\n setShowConfirmDelete(!showConfirmDelete);\n };\n\n const sortedRoles = (roles || [])\n .filter((role) => contains(role.name, _q) || contains(role.description, _q))\n .sort(\n (a, b) => formatter.compare(a.name, b.name) || formatter.compare(a.description, b.description)\n );\n\n const emptyContent = _q && !sortedRoles.length ? 'search' : 'roles';\n\n const colCount = 4;\n const rowCount = (roles?.length || 0) + 1;\n\n if (isLoading) {\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: pageTitle }\n )}\n </Page.Title>\n <Layouts.Header\n title={formatMessage({\n id: 'global.roles',\n defaultMessage: 'Roles',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n primaryAction={\n canCreate ? (\n <LinkButton\n to=\"new\"\n tag={NavLink}\n onClick={() => trackUsage('willCreateRole')}\n startIcon={<Plus />}\n size=\"S\"\n fullWidth\n >\n {formatMessage({\n id: getTrad('List.button.roles'),\n defaultMessage: 'Add new role',\n })}\n </LinkButton>\n ) : null\n }\n />\n\n <Layouts.Action\n startActions={\n <SearchInput\n label={formatMessage({\n id: 'app.component.search.label',\n defaultMessage: 'Search',\n })}\n />\n }\n />\n\n <Layouts.Content>\n {!canRead && <Page.NoPermissions />}\n {canRead && sortedRoles && sortedRoles?.length ? (\n <Table colCount={colCount} rowCount={rowCount}>\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({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <TableBody\n sortedRoles={sortedRoles}\n canDelete={canDelete}\n canUpdate={canUpdate}\n permissions={PERMISSIONS}\n setRoleToDelete={setRoleToDelete}\n onDelete={[showConfirmDelete, setShowConfirmDelete]}\n />\n </Table>\n ) : (\n <EmptyStateLayout content={formatMessage(emptyLayout[emptyContent])} />\n )}\n </Layouts.Content>\n <Dialog.Root open={showConfirmDelete} onOpenChange={handleShowConfirmDelete}>\n <ConfirmDialog onConfirm={handleConfirmDelete} />\n </Dialog.Root>\n </Page.Main>\n );\n};\n\nexport const ProtectedRolesListPage = () => {\n return (\n <Page.Protect permissions={PERMISSIONS.accessRoles}>\n <RolesListPage />\n </Page.Protect>\n );\n};\n"],"names":["RolesListPage","trackUsage","useTracking","formatMessage","locale","useIntl","toggleNotification","useNotification","notifyStatus","useNotifyAT","query","useQueryParams","_q","showConfirmDelete","setShowConfirmDelete","useState","roleToDelete","setRoleToDelete","del","get","useFetchClient","isLoading","isLoadingForPermissions","allowedActions","canRead","canDelete","canCreate","canUpdate","useRBAC","create","PERMISSIONS","createRole","read","readRoles","update","updateRole","delete","deleteRole","isLoadingForData","data","roles","isFetching","refetch","useQuery","fetchData","initialData","enabled","contains","useFilter","sensitivity","formatter","useCollator","handleShowConfirmDelete","deleteData","id","error","type","message","defaultMessage","err","Error","emptyLayout","getTrad","search","pageTitle","deleteMutation","useMutation","onSuccess","handleConfirmDelete","mutateAsync","sortedRoles","filter","role","name","description","sort","a","b","compare","emptyContent","length","colCount","rowCount","_jsx","Page","Loading","_jsxs","Main","Title","Layouts","Header","title","subtitle","primaryAction","LinkButton","to","tag","NavLink","onClick","startIcon","Plus","size","fullWidth","Action","startActions","SearchInput","label","Content","NoPermissions","Table","Thead","Tr","Th","Typography","variant","textColor","VisuallyHidden","TableBody","permissions","onDelete","EmptyStateLayout","content","Dialog","Root","open","onOpenChange","ConfirmDialog","onConfirm","ProtectedRolesListPage","Protect","accessRoles"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../admin/src/pages/Roles/pages/ListPage/index.jsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport {\n Table,\n Th,\n Thead,\n Tr,\n Typography,\n useNotifyAT,\n VisuallyHidden,\n EmptyStateLayout,\n useCollator,\n useFilter,\n LinkButton,\n Dialog,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport {\n ConfirmDialog,\n useTracking,\n Page,\n SearchInput,\n useNotification,\n useQueryParams,\n useFetchClient,\n useRBAC,\n Layouts,\n} from '@strapi/strapi/admin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery } from 'react-query';\nimport { NavLink } from 'react-router-dom';\n\nimport { PERMISSIONS } from '../../../../constants';\nimport { getTrad } from '../../../../utils';\n\nimport TableBody from './components/TableBody';\n\nexport const RolesListPage = () => {\n const { trackUsage } = useTracking();\n const { formatMessage, locale } = useIntl();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const [{ query }] = useQueryParams();\n const _q = query?._q || '';\n const [showConfirmDelete, setShowConfirmDelete] = useState(false);\n const [roleToDelete, setRoleToDelete] = useState();\n const { del, get } = useFetchClient();\n\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canRead, canDelete, canCreate, canUpdate },\n } = useRBAC({\n create: PERMISSIONS.createRole,\n read: PERMISSIONS.readRoles,\n update: PERMISSIONS.updateRole,\n delete: PERMISSIONS.deleteRole,\n });\n\n const {\n isLoading: isLoadingForData,\n data: { roles },\n isFetching,\n refetch,\n } = useQuery('get-roles', () => fetchData(toggleNotification, formatMessage, notifyStatus), {\n initialData: {},\n enabled: canRead,\n });\n\n const { contains } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n /**\n * @type {Intl.Collator}\n */\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const isLoading = isLoadingForData || isFetching || isLoadingForPermissions;\n\n const handleShowConfirmDelete = () => {\n setShowConfirmDelete(!showConfirmDelete);\n };\n\n const deleteData = async (id, formatMessage, toggleNotification) => {\n try {\n await del(`/users-permissions/roles/${id}`);\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const fetchData = async (toggleNotification, formatMessage, notifyStatus) => {\n try {\n const { data } = await get('/users-permissions/roles');\n notifyStatus('The roles have loaded successfully');\n\n return data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n\n throw new Error(err);\n }\n };\n\n const emptyLayout = {\n roles: {\n id: getTrad('Roles.empty'),\n defaultMessage: \"You don't have any roles yet.\",\n },\n search: {\n id: getTrad('Roles.empty.search'),\n defaultMessage: 'No roles match the search.',\n },\n };\n\n const pageTitle = formatMessage({\n id: 'global.roles',\n defaultMessage: 'Roles',\n });\n\n const deleteMutation = useMutation((id) => deleteData(id, formatMessage, toggleNotification), {\n async onSuccess() {\n await refetch();\n },\n });\n\n const handleConfirmDelete = async () => {\n await deleteMutation.mutateAsync(roleToDelete);\n setShowConfirmDelete(!showConfirmDelete);\n };\n\n const sortedRoles = (roles || [])\n .filter((role) => contains(role.name, _q) || contains(role.description, _q))\n .sort(\n (a, b) => formatter.compare(a.name, b.name) || formatter.compare(a.description, b.description)\n );\n\n const emptyContent = _q && !sortedRoles.length ? 'search' : 'roles';\n\n const colCount = 4;\n const rowCount = (roles?.length || 0) + 1;\n\n if (isLoading) {\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: pageTitle }\n )}\n </Page.Title>\n <Layouts.Header\n title={formatMessage({\n id: 'global.roles',\n defaultMessage: 'Roles',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n primaryAction={\n canCreate ? (\n <LinkButton\n to=\"new\"\n tag={NavLink}\n onClick={() => trackUsage('willCreateRole')}\n startIcon={<Plus />}\n size=\"S\"\n fullWidth\n >\n {formatMessage({\n id: getTrad('List.button.roles'),\n defaultMessage: 'Add new role',\n })}\n </LinkButton>\n ) : null\n }\n />\n\n <Layouts.Action\n startActions={\n <SearchInput\n label={formatMessage({\n id: 'app.component.search.label',\n defaultMessage: 'Search',\n })}\n />\n }\n />\n\n <Layouts.Content>\n {!canRead && <Page.NoPermissions />}\n {canRead && sortedRoles && sortedRoles?.length ? (\n <Table colCount={colCount} rowCount={rowCount}>\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({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <TableBody\n sortedRoles={sortedRoles}\n canDelete={canDelete}\n canUpdate={canUpdate}\n permissions={PERMISSIONS}\n setRoleToDelete={setRoleToDelete}\n onDelete={[showConfirmDelete, setShowConfirmDelete]}\n />\n </Table>\n ) : (\n <EmptyStateLayout content={formatMessage(emptyLayout[emptyContent])} />\n )}\n </Layouts.Content>\n <Dialog.Root open={showConfirmDelete} onOpenChange={handleShowConfirmDelete}>\n <ConfirmDialog onConfirm={handleConfirmDelete} />\n </Dialog.Root>\n </Page.Main>\n );\n};\n\nexport const ProtectedRolesListPage = () => {\n return (\n <Page.Protect permissions={PERMISSIONS.accessRoles}>\n <RolesListPage />\n </Page.Protect>\n );\n};\n"],"names":["RolesListPage","trackUsage","useTracking","formatMessage","locale","useIntl","toggleNotification","useNotification","notifyStatus","useNotifyAT","query","useQueryParams","_q","showConfirmDelete","setShowConfirmDelete","useState","roleToDelete","setRoleToDelete","del","get","useFetchClient","isLoading","isLoadingForPermissions","allowedActions","canRead","canDelete","canCreate","canUpdate","useRBAC","create","PERMISSIONS","createRole","read","readRoles","update","updateRole","delete","deleteRole","isLoadingForData","data","roles","isFetching","refetch","useQuery","fetchData","initialData","enabled","contains","useFilter","sensitivity","formatter","useCollator","handleShowConfirmDelete","deleteData","id","error","type","message","defaultMessage","err","Error","emptyLayout","getTrad","search","pageTitle","deleteMutation","useMutation","onSuccess","handleConfirmDelete","mutateAsync","sortedRoles","filter","role","name","description","sort","a","b","compare","emptyContent","length","colCount","rowCount","_jsx","Page","Loading","_jsxs","Main","Title","Layouts","Header","title","subtitle","primaryAction","LinkButton","to","tag","NavLink","onClick","startIcon","Plus","size","fullWidth","Action","startActions","SearchInput","label","Content","NoPermissions","Table","Thead","Tr","Th","Typography","variant","textColor","VisuallyHidden","TableBody","permissions","onDelete","EmptyStateLayout","content","Dialog","Root","open","onOpenChange","ConfirmDialog","onConfirm","ProtectedRolesListPage","Protect","accessRoles"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../../../admin/src/pages/Roles/pages/ListPage/index.jsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport {\n Table,\n Th,\n Thead,\n Tr,\n Typography,\n useNotifyAT,\n VisuallyHidden,\n EmptyStateLayout,\n useCollator,\n useFilter,\n LinkButton,\n Dialog,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport {\n ConfirmDialog,\n useTracking,\n Page,\n SearchInput,\n useNotification,\n useQueryParams,\n useFetchClient,\n useRBAC,\n Layouts,\n} from '@strapi/strapi/admin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery } from 'react-query';\nimport { NavLink } from 'react-router-dom';\n\nimport { PERMISSIONS } from '../../../../constants';\nimport { getTrad } from '../../../../utils';\n\nimport TableBody from './components/TableBody';\n\nexport const RolesListPage = () => {\n const { trackUsage } = useTracking();\n const { formatMessage, locale } = useIntl();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const [{ query }] = useQueryParams();\n const _q = query?._q || '';\n const [showConfirmDelete, setShowConfirmDelete] = useState(false);\n const [roleToDelete, setRoleToDelete] = useState();\n const { del, get } = useFetchClient();\n\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canRead, canDelete, canCreate, canUpdate },\n } = useRBAC({\n create: PERMISSIONS.createRole,\n read: PERMISSIONS.readRoles,\n update: PERMISSIONS.updateRole,\n delete: PERMISSIONS.deleteRole,\n });\n\n const {\n isLoading: isLoadingForData,\n data: { roles },\n isFetching,\n refetch,\n } = useQuery('get-roles', () => fetchData(toggleNotification, formatMessage, notifyStatus), {\n initialData: {},\n enabled: canRead,\n });\n\n const { contains } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n /**\n * @type {Intl.Collator}\n */\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const isLoading = isLoadingForData || isFetching || isLoadingForPermissions;\n\n const handleShowConfirmDelete = () => {\n setShowConfirmDelete(!showConfirmDelete);\n };\n\n const deleteData = async (id, formatMessage, toggleNotification) => {\n try {\n await del(`/users-permissions/roles/${id}`);\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n };\n\n const fetchData = async (toggleNotification, formatMessage, notifyStatus) => {\n try {\n const { data } = await get('/users-permissions/roles');\n notifyStatus('The roles have loaded successfully');\n\n return data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n\n throw new Error(err);\n }\n };\n\n const emptyLayout = {\n roles: {\n id: getTrad('Roles.empty'),\n defaultMessage: \"You don't have any roles yet.\",\n },\n search: {\n id: getTrad('Roles.empty.search'),\n defaultMessage: 'No roles match the search.',\n },\n };\n\n const pageTitle = formatMessage({\n id: 'global.roles',\n defaultMessage: 'Roles',\n });\n\n const deleteMutation = useMutation((id) => deleteData(id, formatMessage, toggleNotification), {\n async onSuccess() {\n await refetch();\n },\n });\n\n const handleConfirmDelete = async () => {\n await deleteMutation.mutateAsync(roleToDelete);\n setShowConfirmDelete(!showConfirmDelete);\n };\n\n const sortedRoles = (roles || [])\n .filter((role) => contains(role.name, _q) || contains(role.description, _q))\n .sort(\n (a, b) => formatter.compare(a.name, b.name) || formatter.compare(a.description, b.description)\n );\n\n const emptyContent = _q && !sortedRoles.length ? 'search' : 'roles';\n\n const colCount = 4;\n const rowCount = (roles?.length || 0) + 1;\n\n if (isLoading) {\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: pageTitle }\n )}\n </Page.Title>\n <Layouts.Header\n title={formatMessage({\n id: 'global.roles',\n defaultMessage: 'Roles',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n primaryAction={\n canCreate ? (\n <LinkButton\n to=\"new\"\n tag={NavLink}\n onClick={() => trackUsage('willCreateRole')}\n startIcon={<Plus />}\n size=\"S\"\n fullWidth\n >\n {formatMessage({\n id: getTrad('List.button.roles'),\n defaultMessage: 'Add new role',\n })}\n </LinkButton>\n ) : null\n }\n />\n\n <Layouts.Action\n startActions={\n <SearchInput\n label={formatMessage({\n id: 'app.component.search.label',\n defaultMessage: 'Search',\n })}\n />\n }\n />\n\n <Layouts.Content>\n {!canRead && <Page.NoPermissions />}\n {canRead && sortedRoles && sortedRoles?.length ? (\n <Table colCount={colCount} rowCount={rowCount}>\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({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <TableBody\n sortedRoles={sortedRoles}\n canDelete={canDelete}\n canUpdate={canUpdate}\n permissions={PERMISSIONS}\n setRoleToDelete={setRoleToDelete}\n onDelete={[showConfirmDelete, setShowConfirmDelete]}\n />\n </Table>\n ) : (\n <EmptyStateLayout content={formatMessage(emptyLayout[emptyContent])} />\n )}\n </Layouts.Content>\n <Dialog.Root open={showConfirmDelete} onOpenChange={handleShowConfirmDelete}>\n <ConfirmDialog onConfirm={handleConfirmDelete} />\n </Dialog.Root>\n </Page.Main>\n );\n};\n\nexport const ProtectedRolesListPage = () => {\n return (\n <Page.Protect permissions={PERMISSIONS.accessRoles}>\n <RolesListPage />\n </Page.Protect>\n );\n};\n"],"names":["RolesListPage","trackUsage","useTracking","formatMessage","locale","useIntl","toggleNotification","useNotification","notifyStatus","useNotifyAT","query","useQueryParams","_q","showConfirmDelete","setShowConfirmDelete","useState","roleToDelete","setRoleToDelete","del","get","useFetchClient","isLoading","isLoadingForPermissions","allowedActions","canRead","canDelete","canCreate","canUpdate","useRBAC","create","PERMISSIONS","createRole","read","readRoles","update","updateRole","delete","deleteRole","isLoadingForData","data","roles","isFetching","refetch","useQuery","fetchData","initialData","enabled","contains","useFilter","sensitivity","formatter","useCollator","handleShowConfirmDelete","deleteData","id","error","type","message","defaultMessage","err","Error","emptyLayout","getTrad","search","pageTitle","deleteMutation","useMutation","onSuccess","handleConfirmDelete","mutateAsync","sortedRoles","filter","role","name","description","sort","a","b","compare","emptyContent","length","colCount","rowCount","_jsx","Page","Loading","_jsxs","Main","Title","Layouts","Header","title","subtitle","primaryAction","LinkButton","to","tag","NavLink","onClick","startIcon","Plus","size","fullWidth","Action","startActions","SearchInput","label","Content","NoPermissions","Table","Thead","Tr","Th","Typography","variant","textColor","VisuallyHidden","TableBody","permissions","onDelete","EmptyStateLayout","content","Dialog","Root","open","onOpenChange","ConfirmDialog","onConfirm","ProtectedRolesListPage","Protect","accessRoles"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../../admin/src/pages/Roles/pages/ListPage/index.jsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport {\n Table,\n Th,\n Thead,\n Tr,\n Typography,\n useNotifyAT,\n VisuallyHidden,\n EmptyStateLayout,\n useCollator,\n useFilter,\n LinkButton,\n Dialog,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport {\n ConfirmDialog,\n useTracking,\n Page,\n SearchInput,\n useNotification,\n useQueryParams,\n useFetchClient,\n useRBAC,\n Layouts,\n} from '@strapi/strapi/admin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery } from 'react-query';\nimport { NavLink } from 'react-router-dom';\n\nimport { PERMISSIONS } from '../../../../constants';\nimport { getTrad } from '../../../../utils';\n\nimport TableBody from './components/TableBody';\n\nexport const RolesListPage = () => {\n const { trackUsage } = useTracking();\n const { formatMessage, locale } = useIntl();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const [{ query }] = useQueryParams();\n const _q = query?._q || '';\n const [showConfirmDelete, setShowConfirmDelete] = useState(false);\n const [roleToDelete, setRoleToDelete] = useState();\n const { del, get } = useFetchClient();\n\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canRead, canDelete, canCreate, canUpdate },\n } = useRBAC({\n create: PERMISSIONS.createRole,\n read: PERMISSIONS.readRoles,\n update: PERMISSIONS.updateRole,\n delete: PERMISSIONS.deleteRole,\n });\n\n const {\n isLoading: isLoadingForData,\n data: { roles },\n isFetching,\n refetch,\n } = useQuery('get-roles', () => fetchData(toggleNotification, formatMessage, notifyStatus), {\n initialData: {},\n enabled: canRead,\n });\n\n const { contains } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n /**\n * @type {Intl.Collator}\n */\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const isLoading = isLoadingForData || isFetching || isLoadingForPermissions;\n\n const handleShowConfirmDelete = () => {\n setShowConfirmDelete(!showConfirmDelete);\n };\n\n const deleteData = async (id, formatMessage, toggleNotification) => {\n try {\n await del(`/users-permissions/roles/${id}`);\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n const fetchData = async (toggleNotification, formatMessage, notifyStatus) => {\n try {\n const { data } = await get('/users-permissions/roles');\n notifyStatus('The roles have loaded successfully');\n\n return data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n\n throw new Error(err);\n }\n };\n\n const emptyLayout = {\n roles: {\n id: getTrad('Roles.empty'),\n defaultMessage: \"You don't have any roles yet.\",\n },\n search: {\n id: getTrad('Roles.empty.search'),\n defaultMessage: 'No roles match the search.',\n },\n };\n\n const pageTitle = formatMessage({\n id: 'global.roles',\n defaultMessage: 'Roles',\n });\n\n const deleteMutation = useMutation((id) => deleteData(id, formatMessage, toggleNotification), {\n async onSuccess() {\n await refetch();\n },\n });\n\n const handleConfirmDelete = async () => {\n await deleteMutation.mutateAsync(roleToDelete);\n setShowConfirmDelete(!showConfirmDelete);\n };\n\n const sortedRoles = (roles || [])\n .filter((role) => contains(role.name, _q) || contains(role.description, _q))\n .sort(\n (a, b) => formatter.compare(a.name, b.name) || formatter.compare(a.description, b.description)\n );\n\n const emptyContent = _q && !sortedRoles.length ? 'search' : 'roles';\n\n const colCount = 4;\n const rowCount = (roles?.length || 0) + 1;\n\n if (isLoading) {\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: pageTitle }\n )}\n </Page.Title>\n <Layouts.Header\n title={formatMessage({\n id: 'global.roles',\n defaultMessage: 'Roles',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n primaryAction={\n canCreate ? (\n <LinkButton\n to=\"new\"\n tag={NavLink}\n onClick={() => trackUsage('willCreateRole')}\n startIcon={<Plus />}\n size=\"S\"\n fullWidth\n >\n {formatMessage({\n id: getTrad('List.button.roles'),\n defaultMessage: 'Add new role',\n })}\n </LinkButton>\n ) : null\n }\n />\n\n <Layouts.Action\n startActions={\n <SearchInput\n label={formatMessage({\n id: 'app.component.search.label',\n defaultMessage: 'Search',\n })}\n />\n }\n />\n\n <Layouts.Content>\n {!canRead && <Page.NoPermissions />}\n {canRead && sortedRoles && sortedRoles?.length ? (\n <Table colCount={colCount} rowCount={rowCount}>\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({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <TableBody\n sortedRoles={sortedRoles}\n canDelete={canDelete}\n canUpdate={canUpdate}\n permissions={PERMISSIONS}\n setRoleToDelete={setRoleToDelete}\n onDelete={[showConfirmDelete, setShowConfirmDelete]}\n />\n </Table>\n ) : (\n <EmptyStateLayout content={formatMessage(emptyLayout[emptyContent])} />\n )}\n </Layouts.Content>\n <Dialog.Root open={showConfirmDelete} onOpenChange={handleShowConfirmDelete}>\n <ConfirmDialog onConfirm={handleConfirmDelete} />\n </Dialog.Root>\n </Page.Main>\n );\n};\n\nexport const ProtectedRolesListPage = () => {\n return (\n <Page.Protect permissions={PERMISSIONS.accessRoles}>\n <RolesListPage />\n </Page.Protect>\n );\n};\n"],"names":["RolesListPage","trackUsage","useTracking","formatMessage","locale","useIntl","toggleNotification","useNotification","notifyStatus","useNotifyAT","query","useQueryParams","_q","showConfirmDelete","setShowConfirmDelete","useState","roleToDelete","setRoleToDelete","del","get","useFetchClient","isLoading","isLoadingForPermissions","allowedActions","canRead","canDelete","canCreate","canUpdate","useRBAC","create","PERMISSIONS","createRole","read","readRoles","update","updateRole","delete","deleteRole","isLoadingForData","data","roles","isFetching","refetch","useQuery","fetchData","initialData","enabled","contains","useFilter","sensitivity","formatter","useCollator","handleShowConfirmDelete","deleteData","id","error","type","message","defaultMessage","err","Error","emptyLayout","getTrad","search","pageTitle","deleteMutation","useMutation","onSuccess","handleConfirmDelete","mutateAsync","sortedRoles","filter","role","name","description","sort","a","b","compare","emptyContent","length","colCount","rowCount","_jsx","Page","Loading","_jsxs","Main","Title","Layouts","Header","title","subtitle","primaryAction","LinkButton","to","tag","NavLink","onClick","startIcon","Plus","size","fullWidth","Action","startActions","SearchInput","label","Content","NoPermissions","Table","Thead","Tr","Th","Typography","variant","textColor","VisuallyHidden","TableBody","permissions","onDelete","EmptyStateLayout","content","Dialog","Root","open","onOpenChange","ConfirmDialog","onConfirm","ProtectedRolesListPage","Protect","accessRoles"],"mappings":"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"}
|
|
@@ -1,48 +1,87 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var ja = {
|
|
4
|
-
"BoundRoute.title": "
|
|
4
|
+
"BoundRoute.title": "バインドされたルート",
|
|
5
|
+
"components.Input.error.validation.email": "有効なメールアドレスではありません",
|
|
6
|
+
"components.Input.error.validation.json": "JSON形式と一致しません",
|
|
7
|
+
"components.Input.error.validation.max": "値が大きすぎます。",
|
|
8
|
+
"components.Input.error.validation.maxLength": "値が長すぎます。",
|
|
9
|
+
"components.Input.error.validation.min": "値が小さすぎます。",
|
|
10
|
+
"components.Input.error.validation.minLength": "値が短すぎます。",
|
|
11
|
+
"components.Input.error.validation.minSupMax": "最大値を超えることはできません。",
|
|
12
|
+
"components.Input.error.validation.regex": "値が正規表現と一致しません。",
|
|
13
|
+
"components.Input.error.validation.required": "この値は必須です。",
|
|
14
|
+
"components.Input.error.validation.unique": "この値はすでに使用されています。",
|
|
5
15
|
"EditForm.inputSelect.description.role": "新しい認証されたユーザーが選択された役割にアタッチされます。",
|
|
6
16
|
"EditForm.inputSelect.label.role": "認証されたユーザーのデフォルトの役割",
|
|
7
17
|
"EditForm.inputToggle.description.email": "ユーザーが異なる認証プロバイダで同じ電子メールアドレスを使用して複数のアカウントを作成できないようにします。",
|
|
8
18
|
"EditForm.inputToggle.description.email-confirmation": "有効(ON)にすると、新しい登録ユーザーに確認メールが送信されます。",
|
|
9
19
|
"EditForm.inputToggle.description.email-confirmation-redirection": "あなたのEメールを確認したら、リダイレクト先を選択してください。",
|
|
20
|
+
"EditForm.inputToggle.description.email-reset-password": "アプリケーションのパスワードリセットページのURL",
|
|
10
21
|
"EditForm.inputToggle.description.sign-up": "あなたの電子メールを確認した後、リダイレクト先を選択しました。",
|
|
11
22
|
"EditForm.inputToggle.label.email": "メールアドレスごとに1つのアカウント",
|
|
12
23
|
"EditForm.inputToggle.label.email-confirmation": "Eメールの確認を有効にする",
|
|
13
24
|
"EditForm.inputToggle.label.email-confirmation-redirection": "リダイレクトURL",
|
|
25
|
+
"EditForm.inputToggle.label.email-reset-password": "パスワードリセットページ",
|
|
14
26
|
"EditForm.inputToggle.label.sign-up": "申し込みを有効にする",
|
|
27
|
+
"EditForm.inputToggle.placeholder.email-confirmation-redirection": "例: https://yourfrontend.com/email-confirmation-redirection",
|
|
28
|
+
"EditForm.inputToggle.placeholder.email-reset-password": "例: https://yourfrontend.com/reset-password",
|
|
29
|
+
"EditPage.form.roles": "ロールの詳細",
|
|
30
|
+
"Email.template.data.loaded": "メールテンプレートを読み込みました",
|
|
31
|
+
"Email.template.email_confirmation": "メールアドレスの確認",
|
|
32
|
+
"Email.template.form.edit.label": "テンプレートを編集",
|
|
33
|
+
"Email.template.reset_password": "パスワードリセット",
|
|
34
|
+
"Email.template.table.action.label": "操作",
|
|
35
|
+
"Email.template.table.icon.label": "アイコン",
|
|
36
|
+
"Email.template.table.name.label": "名前",
|
|
37
|
+
"Form.advancedSettings.data.loaded": "高度な設定データを読み込みました",
|
|
15
38
|
"HeaderNav.link.advancedSettings": "高度な設定",
|
|
16
39
|
"HeaderNav.link.emailTemplates": "メールテンプレート",
|
|
17
40
|
"HeaderNav.link.providers": "プロバイダー",
|
|
41
|
+
"notification.success.submit": "設定が更新されました",
|
|
42
|
+
"page.title": "設定 - ロール",
|
|
43
|
+
"plugin.description.long": "JWTに基づいた完全な認証プロセスでAPIを保護します。このプラグインには、ユーザーのグループ間で権限を管理できるACL戦略もあります。",
|
|
44
|
+
"plugin.description.short": "JWTに基づく完全な認証プロセスでAPIを保護する",
|
|
45
|
+
"plugin.name": "ロールと権限",
|
|
18
46
|
"Plugin.permissions.plugins.description": "{name} 個のプラグインに対して許可されたすべてのアクションを定義する",
|
|
19
47
|
"Plugins.header.description": "ルートにバインドされたアクションのみが以下にリストされています",
|
|
20
48
|
"Plugins.header.title": "権限",
|
|
21
49
|
"Policies.header.hint": "アプリケーションのアクションまたはプラグインのアクションを選択し、コグアイコンをクリックしてバインドされたルートを表示します",
|
|
22
50
|
"Policies.header.title": "高度な設定",
|
|
23
51
|
"PopUpForm.Email.email_templates.inputDescription": "変数の使用方法がわからない場合は、{link}",
|
|
52
|
+
"PopUpForm.Email.link.documentation": "ドキュメントをご覧ください。",
|
|
24
53
|
"PopUpForm.Email.options.from.email.label": "送信者Eメール",
|
|
25
54
|
"PopUpForm.Email.options.from.email.placeholder": "kai@doe.com",
|
|
26
55
|
"PopUpForm.Email.options.from.name.label": "送信者名",
|
|
27
56
|
"PopUpForm.Email.options.from.name.placeholder": "Kai Doe",
|
|
28
57
|
"PopUpForm.Email.options.message.label": "メッセージ",
|
|
29
58
|
"PopUpForm.Email.options.object.label": "件名",
|
|
59
|
+
"PopUpForm.Email.options.object.placeholder": "%APP_NAME% のメールアドレスを確認してください",
|
|
30
60
|
"PopUpForm.Email.options.response_email.label": "応答メール",
|
|
31
61
|
"PopUpForm.Email.options.response_email.placeholder": "kai@doe.com",
|
|
62
|
+
"PopUpForm.header.edit.email-templates": "メールテンプレートの編集",
|
|
63
|
+
"PopUpForm.header.edit.providers": "プロバイダーの編集",
|
|
32
64
|
"PopUpForm.Providers.enabled.description": "無効にすると、ユーザーはこのプロバイダを使用できなくなります。",
|
|
33
65
|
"PopUpForm.Providers.enabled.label": "有効にする",
|
|
34
66
|
"PopUpForm.Providers.key.label": "クライアントID",
|
|
35
67
|
"PopUpForm.Providers.key.placeholder": "TEXT",
|
|
36
68
|
"PopUpForm.Providers.redirectURL.front-end.label": "フロントエンドアプリへのリダイレクトURL",
|
|
69
|
+
"PopUpForm.Providers.redirectURL.label": "{provider}アプリケーションの設定に追加するリダイレクトURL",
|
|
37
70
|
"PopUpForm.Providers.secret.label": "クライアントの秘密",
|
|
38
71
|
"PopUpForm.Providers.secret.placeholder": "TEXT",
|
|
39
|
-
"PopUpForm.Providers.subdomain.label": "
|
|
72
|
+
"PopUpForm.Providers.subdomain.label": "ホストURI(サブドメイン)",
|
|
40
73
|
"PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com",
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
74
|
+
"popUpWarning.button.cancel": "キャンセル",
|
|
75
|
+
"popUpWarning.button.confirm": "確認",
|
|
76
|
+
"popUpWarning.title": "確認してください",
|
|
77
|
+
"popUpWarning.warning.cancel": "変更をキャンセルしてもよろしいですか?",
|
|
78
|
+
"Providers.data.loaded": "プロバイダーを読み込みました",
|
|
79
|
+
"Providers.status": "ステータス",
|
|
80
|
+
"Roles.empty": "ロールがまだありません。",
|
|
81
|
+
"Roles.empty.search": "検索に一致するロールがありません。",
|
|
82
|
+
"Settings.roles.deleted": "ロールを削除しました",
|
|
83
|
+
"Settings.roles.edited": "ロールを編集しました",
|
|
84
|
+
"Settings.section-label": "ユーザーと権限プラグイン"
|
|
46
85
|
};
|
|
47
86
|
|
|
48
87
|
module.exports = ja;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ja.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ja.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,46 +1,85 @@
|
|
|
1
1
|
var ja = {
|
|
2
|
-
"BoundRoute.title": "
|
|
2
|
+
"BoundRoute.title": "バインドされたルート",
|
|
3
|
+
"components.Input.error.validation.email": "有効なメールアドレスではありません",
|
|
4
|
+
"components.Input.error.validation.json": "JSON形式と一致しません",
|
|
5
|
+
"components.Input.error.validation.max": "値が大きすぎます。",
|
|
6
|
+
"components.Input.error.validation.maxLength": "値が長すぎます。",
|
|
7
|
+
"components.Input.error.validation.min": "値が小さすぎます。",
|
|
8
|
+
"components.Input.error.validation.minLength": "値が短すぎます。",
|
|
9
|
+
"components.Input.error.validation.minSupMax": "最大値を超えることはできません。",
|
|
10
|
+
"components.Input.error.validation.regex": "値が正規表現と一致しません。",
|
|
11
|
+
"components.Input.error.validation.required": "この値は必須です。",
|
|
12
|
+
"components.Input.error.validation.unique": "この値はすでに使用されています。",
|
|
3
13
|
"EditForm.inputSelect.description.role": "新しい認証されたユーザーが選択された役割にアタッチされます。",
|
|
4
14
|
"EditForm.inputSelect.label.role": "認証されたユーザーのデフォルトの役割",
|
|
5
15
|
"EditForm.inputToggle.description.email": "ユーザーが異なる認証プロバイダで同じ電子メールアドレスを使用して複数のアカウントを作成できないようにします。",
|
|
6
16
|
"EditForm.inputToggle.description.email-confirmation": "有効(ON)にすると、新しい登録ユーザーに確認メールが送信されます。",
|
|
7
17
|
"EditForm.inputToggle.description.email-confirmation-redirection": "あなたのEメールを確認したら、リダイレクト先を選択してください。",
|
|
18
|
+
"EditForm.inputToggle.description.email-reset-password": "アプリケーションのパスワードリセットページのURL",
|
|
8
19
|
"EditForm.inputToggle.description.sign-up": "あなたの電子メールを確認した後、リダイレクト先を選択しました。",
|
|
9
20
|
"EditForm.inputToggle.label.email": "メールアドレスごとに1つのアカウント",
|
|
10
21
|
"EditForm.inputToggle.label.email-confirmation": "Eメールの確認を有効にする",
|
|
11
22
|
"EditForm.inputToggle.label.email-confirmation-redirection": "リダイレクトURL",
|
|
23
|
+
"EditForm.inputToggle.label.email-reset-password": "パスワードリセットページ",
|
|
12
24
|
"EditForm.inputToggle.label.sign-up": "申し込みを有効にする",
|
|
25
|
+
"EditForm.inputToggle.placeholder.email-confirmation-redirection": "例: https://yourfrontend.com/email-confirmation-redirection",
|
|
26
|
+
"EditForm.inputToggle.placeholder.email-reset-password": "例: https://yourfrontend.com/reset-password",
|
|
27
|
+
"EditPage.form.roles": "ロールの詳細",
|
|
28
|
+
"Email.template.data.loaded": "メールテンプレートを読み込みました",
|
|
29
|
+
"Email.template.email_confirmation": "メールアドレスの確認",
|
|
30
|
+
"Email.template.form.edit.label": "テンプレートを編集",
|
|
31
|
+
"Email.template.reset_password": "パスワードリセット",
|
|
32
|
+
"Email.template.table.action.label": "操作",
|
|
33
|
+
"Email.template.table.icon.label": "アイコン",
|
|
34
|
+
"Email.template.table.name.label": "名前",
|
|
35
|
+
"Form.advancedSettings.data.loaded": "高度な設定データを読み込みました",
|
|
13
36
|
"HeaderNav.link.advancedSettings": "高度な設定",
|
|
14
37
|
"HeaderNav.link.emailTemplates": "メールテンプレート",
|
|
15
38
|
"HeaderNav.link.providers": "プロバイダー",
|
|
39
|
+
"notification.success.submit": "設定が更新されました",
|
|
40
|
+
"page.title": "設定 - ロール",
|
|
41
|
+
"plugin.description.long": "JWTに基づいた完全な認証プロセスでAPIを保護します。このプラグインには、ユーザーのグループ間で権限を管理できるACL戦略もあります。",
|
|
42
|
+
"plugin.description.short": "JWTに基づく完全な認証プロセスでAPIを保護する",
|
|
43
|
+
"plugin.name": "ロールと権限",
|
|
16
44
|
"Plugin.permissions.plugins.description": "{name} 個のプラグインに対して許可されたすべてのアクションを定義する",
|
|
17
45
|
"Plugins.header.description": "ルートにバインドされたアクションのみが以下にリストされています",
|
|
18
46
|
"Plugins.header.title": "権限",
|
|
19
47
|
"Policies.header.hint": "アプリケーションのアクションまたはプラグインのアクションを選択し、コグアイコンをクリックしてバインドされたルートを表示します",
|
|
20
48
|
"Policies.header.title": "高度な設定",
|
|
21
49
|
"PopUpForm.Email.email_templates.inputDescription": "変数の使用方法がわからない場合は、{link}",
|
|
50
|
+
"PopUpForm.Email.link.documentation": "ドキュメントをご覧ください。",
|
|
22
51
|
"PopUpForm.Email.options.from.email.label": "送信者Eメール",
|
|
23
52
|
"PopUpForm.Email.options.from.email.placeholder": "kai@doe.com",
|
|
24
53
|
"PopUpForm.Email.options.from.name.label": "送信者名",
|
|
25
54
|
"PopUpForm.Email.options.from.name.placeholder": "Kai Doe",
|
|
26
55
|
"PopUpForm.Email.options.message.label": "メッセージ",
|
|
27
56
|
"PopUpForm.Email.options.object.label": "件名",
|
|
57
|
+
"PopUpForm.Email.options.object.placeholder": "%APP_NAME% のメールアドレスを確認してください",
|
|
28
58
|
"PopUpForm.Email.options.response_email.label": "応答メール",
|
|
29
59
|
"PopUpForm.Email.options.response_email.placeholder": "kai@doe.com",
|
|
60
|
+
"PopUpForm.header.edit.email-templates": "メールテンプレートの編集",
|
|
61
|
+
"PopUpForm.header.edit.providers": "プロバイダーの編集",
|
|
30
62
|
"PopUpForm.Providers.enabled.description": "無効にすると、ユーザーはこのプロバイダを使用できなくなります。",
|
|
31
63
|
"PopUpForm.Providers.enabled.label": "有効にする",
|
|
32
64
|
"PopUpForm.Providers.key.label": "クライアントID",
|
|
33
65
|
"PopUpForm.Providers.key.placeholder": "TEXT",
|
|
34
66
|
"PopUpForm.Providers.redirectURL.front-end.label": "フロントエンドアプリへのリダイレクトURL",
|
|
67
|
+
"PopUpForm.Providers.redirectURL.label": "{provider}アプリケーションの設定に追加するリダイレクトURL",
|
|
35
68
|
"PopUpForm.Providers.secret.label": "クライアントの秘密",
|
|
36
69
|
"PopUpForm.Providers.secret.placeholder": "TEXT",
|
|
37
|
-
"PopUpForm.Providers.subdomain.label": "
|
|
70
|
+
"PopUpForm.Providers.subdomain.label": "ホストURI(サブドメイン)",
|
|
38
71
|
"PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com",
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
72
|
+
"popUpWarning.button.cancel": "キャンセル",
|
|
73
|
+
"popUpWarning.button.confirm": "確認",
|
|
74
|
+
"popUpWarning.title": "確認してください",
|
|
75
|
+
"popUpWarning.warning.cancel": "変更をキャンセルしてもよろしいですか?",
|
|
76
|
+
"Providers.data.loaded": "プロバイダーを読み込みました",
|
|
77
|
+
"Providers.status": "ステータス",
|
|
78
|
+
"Roles.empty": "ロールがまだありません。",
|
|
79
|
+
"Roles.empty.search": "検索に一致するロールがありません。",
|
|
80
|
+
"Settings.roles.deleted": "ロールを削除しました",
|
|
81
|
+
"Settings.roles.edited": "ロールを編集しました",
|
|
82
|
+
"Settings.section-label": "ユーザーと権限プラグイン"
|
|
44
83
|
};
|
|
45
84
|
|
|
46
85
|
export { ja as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ja.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ja.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -2,16 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
var isEmpty = require('lodash/isEmpty');
|
|
4
4
|
|
|
5
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
6
|
+
|
|
7
|
+
var isEmpty__default = /*#__PURE__*/_interopDefault(isEmpty);
|
|
8
|
+
|
|
5
9
|
const cleanPermissions = (permissions)=>Object.keys(permissions).reduce((acc, current)=>{
|
|
6
10
|
const currentPermission = permissions[current].controllers;
|
|
7
11
|
const cleanedControllers = Object.keys(currentPermission).reduce((acc2, curr)=>{
|
|
8
|
-
if (
|
|
12
|
+
if (isEmpty__default.default(currentPermission[curr])) {
|
|
9
13
|
return acc2;
|
|
10
14
|
}
|
|
11
15
|
acc2[curr] = currentPermission[curr];
|
|
12
16
|
return acc2;
|
|
13
17
|
}, {});
|
|
14
|
-
if (
|
|
18
|
+
if (isEmpty__default.default(cleanedControllers)) {
|
|
15
19
|
return acc;
|
|
16
20
|
}
|
|
17
21
|
acc[current] = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanPermissions.js","sources":["../../../admin/src/utils/cleanPermissions.js"],"sourcesContent":["import isEmpty from 'lodash/isEmpty';\n\nconst cleanPermissions = (permissions) =>\n Object.keys(permissions).reduce((acc, current) => {\n const currentPermission = permissions[current].controllers;\n const cleanedControllers = Object.keys(currentPermission).reduce((acc2, curr) => {\n if (isEmpty(currentPermission[curr])) {\n return acc2;\n }\n\n acc2[curr] = currentPermission[curr];\n\n return acc2;\n }, {});\n\n if (isEmpty(cleanedControllers)) {\n return acc;\n }\n\n acc[current] = { controllers: cleanedControllers };\n\n return acc;\n }, {});\n\nexport default cleanPermissions;\n"],"names":["cleanPermissions","permissions","Object","keys","reduce","acc","current","currentPermission","controllers","cleanedControllers","acc2","curr","isEmpty"],"mappings":"
|
|
1
|
+
{"version":3,"file":"cleanPermissions.js","sources":["../../../admin/src/utils/cleanPermissions.js"],"sourcesContent":["import isEmpty from 'lodash/isEmpty';\n\nconst cleanPermissions = (permissions) =>\n Object.keys(permissions).reduce((acc, current) => {\n const currentPermission = permissions[current].controllers;\n const cleanedControllers = Object.keys(currentPermission).reduce((acc2, curr) => {\n if (isEmpty(currentPermission[curr])) {\n return acc2;\n }\n\n acc2[curr] = currentPermission[curr];\n\n return acc2;\n }, {});\n\n if (isEmpty(cleanedControllers)) {\n return acc;\n }\n\n acc[current] = { controllers: cleanedControllers };\n\n return acc;\n }, {});\n\nexport default cleanPermissions;\n"],"names":["cleanPermissions","permissions","Object","keys","reduce","acc","current","currentPermission","controllers","cleanedControllers","acc2","curr","isEmpty"],"mappings":";;;;;;;;AAEA,MAAMA,gBAAAA,GAAmB,CAACC,WAAAA,GACxBC,MAAAA,CAAOC,IAAI,CAACF,WAAAA,CAAAA,CAAaG,MAAM,CAAC,CAACC,GAAAA,EAAKC,OAAAA,GAAAA;AACpC,QAAA,MAAMC,iBAAAA,GAAoBN,WAAW,CAACK,OAAAA,CAAQ,CAACE,WAAW;QAC1D,MAAMC,kBAAAA,GAAqBP,OAAOC,IAAI,CAACI,mBAAmBH,MAAM,CAAC,CAACM,IAAAA,EAAMC,IAAAA,GAAAA;AACtE,YAAA,IAAIC,wBAAAA,CAAQL,iBAAiB,CAACI,IAAAA,CAAK,CAAA,EAAG;gBACpC,OAAOD,IAAAA;AACT,YAAA;AAEAA,YAAAA,IAAI,CAACC,IAAAA,CAAK,GAAGJ,iBAAiB,CAACI,IAAAA,CAAK;YAEpC,OAAOD,IAAAA;AACT,QAAA,CAAA,EAAG,EAAC,CAAA;AAEJ,QAAA,IAAIE,yBAAQH,kBAAAA,CAAAA,EAAqB;YAC/B,OAAOJ,GAAAA;AACT,QAAA;QAEAA,GAAG,CAACC,QAAQ,GAAG;YAAEE,WAAAA,EAAaC;AAAmB,SAAA;QAEjD,OAAOJ,GAAAA;AACT,IAAA,CAAA,EAAG,EAAC;;;;"}
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
var upperFirst = require('lodash/upperFirst');
|
|
4
4
|
|
|
5
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
6
|
+
|
|
7
|
+
var upperFirst__default = /*#__PURE__*/_interopDefault(upperFirst);
|
|
8
|
+
|
|
5
9
|
function formatPluginName(pluginSlug) {
|
|
6
10
|
switch(pluginSlug){
|
|
7
11
|
case 'application':
|
|
@@ -21,7 +25,7 @@ function formatPluginName(pluginSlug) {
|
|
|
21
25
|
case 'plugin::users-permissions':
|
|
22
26
|
return 'Users-permissions';
|
|
23
27
|
default:
|
|
24
|
-
return
|
|
28
|
+
return upperFirst__default.default(pluginSlug.replace('api::', '').replace('plugin::', ''));
|
|
25
29
|
}
|
|
26
30
|
}
|
|
27
31
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatPluginName.js","sources":["../../../admin/src/utils/formatPluginName.js"],"sourcesContent":["import upperFirst from 'lodash/upperFirst';\n\nfunction formatPluginName(pluginSlug) {\n switch (pluginSlug) {\n case 'application':\n return 'Application';\n case 'plugin::content-manager':\n return 'Content manager';\n case 'plugin::content-type-builder':\n return 'Content types builder';\n case 'plugin::documentation':\n return 'Documentation';\n case 'plugin::email':\n return 'Email';\n case 'plugin::i18n':\n return 'i18n';\n case 'plugin::upload':\n return 'Media Library';\n case 'plugin::users-permissions':\n return 'Users-permissions';\n default:\n return upperFirst(pluginSlug.replace('api::', '').replace('plugin::', ''));\n }\n}\n\nexport default formatPluginName;\n"],"names":["formatPluginName","pluginSlug","upperFirst","replace"],"mappings":"
|
|
1
|
+
{"version":3,"file":"formatPluginName.js","sources":["../../../admin/src/utils/formatPluginName.js"],"sourcesContent":["import upperFirst from 'lodash/upperFirst';\n\nfunction formatPluginName(pluginSlug) {\n switch (pluginSlug) {\n case 'application':\n return 'Application';\n case 'plugin::content-manager':\n return 'Content manager';\n case 'plugin::content-type-builder':\n return 'Content types builder';\n case 'plugin::documentation':\n return 'Documentation';\n case 'plugin::email':\n return 'Email';\n case 'plugin::i18n':\n return 'i18n';\n case 'plugin::upload':\n return 'Media Library';\n case 'plugin::users-permissions':\n return 'Users-permissions';\n default:\n return upperFirst(pluginSlug.replace('api::', '').replace('plugin::', ''));\n }\n}\n\nexport default formatPluginName;\n"],"names":["formatPluginName","pluginSlug","upperFirst","replace"],"mappings":";;;;;;;;AAEA,SAASA,iBAAiBC,UAAU,EAAA;IAClC,OAAQA,UAAAA;QACN,KAAK,aAAA;YACH,OAAO,aAAA;QACT,KAAK,yBAAA;YACH,OAAO,iBAAA;QACT,KAAK,8BAAA;YACH,OAAO,uBAAA;QACT,KAAK,uBAAA;YACH,OAAO,eAAA;QACT,KAAK,eAAA;YACH,OAAO,OAAA;QACT,KAAK,cAAA;YACH,OAAO,MAAA;QACT,KAAK,gBAAA;YACH,OAAO,eAAA;QACT,KAAK,2BAAA;YACH,OAAO,mBAAA;AACT,QAAA;YACE,OAAOC,2BAAAA,CAAWD,WAAWE,OAAO,CAAC,SAAS,EAAA,CAAA,CAAIA,OAAO,CAAC,UAAA,EAAY,EAAA,CAAA,CAAA;AAC1E;AACF;;;;"}
|
|
@@ -6,6 +6,11 @@ var index = require('../utils/index.js');
|
|
|
6
6
|
var usersPermissionsActions = require('./users-permissions-actions.js');
|
|
7
7
|
var constants = require('../services/constants.js');
|
|
8
8
|
|
|
9
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
|
|
11
|
+
var require$$0__default = /*#__PURE__*/_interopDefault(require$$0);
|
|
12
|
+
var require$$0__default$1 = /*#__PURE__*/_interopDefault(require$$0$1);
|
|
13
|
+
|
|
9
14
|
var bootstrap;
|
|
10
15
|
var hasRequiredBootstrap;
|
|
11
16
|
function requireBootstrap() {
|
|
@@ -17,8 +22,8 @@ function requireBootstrap() {
|
|
|
17
22
|
*
|
|
18
23
|
* This gives you an opportunity to set up your data model,
|
|
19
24
|
* run jobs, or perform some special logic.
|
|
20
|
-
*/ const crypto = require$$
|
|
21
|
-
const _ = require$$
|
|
25
|
+
*/ const crypto = require$$0__default.default;
|
|
26
|
+
const _ = require$$0__default$1.default;
|
|
22
27
|
const { getService } = index.__require();
|
|
23
28
|
const usersPermissionsActions$1 = usersPermissionsActions.__require();
|
|
24
29
|
const { DEFAULT_ACCESS_TOKEN_LIFESPAN, DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN, DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN, DEFAULT_MAX_SESSION_LIFESPAN, DEFAULT_IDLE_SESSION_LIFESPAN } = constants.__require();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../server/bootstrap/index.js"],"sourcesContent":["'use strict';\n\n/**\n * An asynchronous bootstrap function that runs before\n * your application gets started.\n *\n * This gives you an opportunity to set up your data model,\n * run jobs, or perform some special logic.\n */\nconst crypto = require('crypto');\nconst _ = require('lodash');\nconst { getService } = require('../utils');\nconst usersPermissionsActions = require('./users-permissions-actions');\nconst {\n DEFAULT_ACCESS_TOKEN_LIFESPAN,\n DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN,\n DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN,\n DEFAULT_MAX_SESSION_LIFESPAN,\n DEFAULT_IDLE_SESSION_LIFESPAN,\n} = require('../services/constants');\n\nconst getSessionManager = () => {\n const manager = strapi.sessionManager;\n return manager ?? null;\n};\n\nconst initGrant = async (pluginStore) => {\n const allProviders = getService('providers-registry').getAll();\n\n const grantConfig = Object.entries(allProviders).reduce((acc, [name, provider]) => {\n const { icon, enabled, grantConfig } = provider;\n\n acc[name] = {\n icon,\n enabled,\n ...grantConfig,\n };\n return acc;\n }, {});\n\n const prevGrantConfig = (await pluginStore.get({ key: 'grant' })) || {};\n\n if (!prevGrantConfig || !_.isEqual(prevGrantConfig, grantConfig)) {\n // merge with the previous provider config.\n _.keys(grantConfig).forEach((key) => {\n if (key in prevGrantConfig) {\n grantConfig[key] = _.merge(grantConfig[key], prevGrantConfig[key]);\n }\n });\n await pluginStore.set({ key: 'grant', value: grantConfig });\n }\n};\n\nconst initEmails = async (pluginStore) => {\n if (!(await pluginStore.get({ key: 'email' }))) {\n const value = {\n reset_password: {\n display: 'Email.template.reset_password',\n icon: 'sync',\n options: {\n from: {\n name: 'Administration Panel',\n email: 'no-reply@strapi.io',\n },\n response_email: '',\n object: 'Reset password',\n message: `<p>We heard that you lost your password. Sorry about that!</p>\n\n<p>But don’t worry! You can use the following link to reset your password:</p>\n<p><%= URL %>?code=<%= TOKEN %></p>\n\n<p>Thanks.</p>`,\n },\n },\n email_confirmation: {\n display: 'Email.template.email_confirmation',\n icon: 'check-square',\n options: {\n from: {\n name: 'Administration Panel',\n email: 'no-reply@strapi.io',\n },\n response_email: '',\n object: 'Account confirmation',\n message: `<p>Thank you for registering!</p>\n\n<p>You have to confirm your email address. Please click on the link below.</p>\n\n<p><%= URL %>?confirmation=<%= CODE %></p>\n\n<p>Thanks.</p>`,\n },\n },\n };\n\n await pluginStore.set({ key: 'email', value });\n }\n};\n\nconst initAdvancedOptions = async (pluginStore) => {\n if (!(await pluginStore.get({ key: 'advanced' }))) {\n const value = {\n unique_email: true,\n allow_register: true,\n email_confirmation: false,\n email_reset_password: null,\n email_confirmation_redirection: null,\n default_role: 'authenticated',\n };\n\n await pluginStore.set({ key: 'advanced', value });\n }\n};\n\nmodule.exports = async ({ strapi }) => {\n const pluginStore = strapi.store({ type: 'plugin', name: 'users-permissions' });\n\n await initGrant(pluginStore);\n await initEmails(pluginStore);\n await initAdvancedOptions(pluginStore);\n\n await strapi\n .service('admin::permission')\n .actionProvider.registerMany(usersPermissionsActions.actions);\n\n await getService('users-permissions').initialize();\n\n // Define users-permissions origin configuration for sessionManager\n const upConfig = strapi.config.get('plugin::users-permissions');\n const sessionManager = getSessionManager();\n\n if (sessionManager) {\n sessionManager.defineOrigin('users-permissions', {\n jwtSecret: upConfig.jwtSecret || strapi.config.get('admin.auth.secret'),\n accessTokenLifespan: upConfig.sessions?.accessTokenLifespan || DEFAULT_ACCESS_TOKEN_LIFESPAN,\n maxRefreshTokenLifespan:\n upConfig.sessions?.maxRefreshTokenLifespan || DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN,\n idleRefreshTokenLifespan:\n upConfig.sessions?.idleRefreshTokenLifespan || DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN,\n maxSessionLifespan: upConfig.sessions?.maxSessionLifespan || DEFAULT_MAX_SESSION_LIFESPAN,\n idleSessionLifespan: upConfig.sessions?.idleSessionLifespan || DEFAULT_IDLE_SESSION_LIFESPAN,\n algorithm: upConfig.jwt?.algorithm,\n jwtOptions: upConfig.jwt || {},\n });\n }\n\n if (!strapi.config.get('plugin::users-permissions.jwtSecret')) {\n if (process.env.NODE_ENV !== 'development') {\n throw new Error(\n `Missing jwtSecret. Please, set configuration variable \"jwtSecret\" for the users-permissions plugin in config/plugins.js (ex: you can generate one using Node with \\`crypto.randomBytes(16).toString('base64')\\`).\nFor security reasons, prefer storing the secret in an environment variable and read it in config/plugins.js. See https://docs.strapi.io/developer-docs/latest/setup-deployment-guides/configurations/optional/environment.html#configuration-using-environment-variables.`\n );\n }\n\n const jwtSecret = crypto.randomBytes(16).toString('base64');\n\n strapi.config.set('plugin::users-permissions.jwtSecret', jwtSecret);\n\n if (!process.env.JWT_SECRET) {\n const envPath = process.env.ENV_PATH || '.env';\n strapi.fs.appendFile(envPath, `JWT_SECRET=${jwtSecret}\\n`);\n strapi.log.info(\n `The Users & Permissions plugin automatically generated a jwt secret and stored it in ${envPath} under the name JWT_SECRET.`\n );\n }\n }\n};\n"],"names":["crypto","require$$0","_","require$$1","getService","require$$2","usersPermissionsActions","require$$3","DEFAULT_ACCESS_TOKEN_LIFESPAN","DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN","DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN","DEFAULT_MAX_SESSION_LIFESPAN","DEFAULT_IDLE_SESSION_LIFESPAN","require$$4","getSessionManager","manager","strapi","sessionManager","initGrant","pluginStore","allProviders","getAll","grantConfig","Object","entries","reduce","acc","name","provider","icon","enabled","prevGrantConfig","get","key","isEqual","keys","forEach","merge","set","value","initEmails","reset_password","display","options","from","email","response_email","object","message","email_confirmation","initAdvancedOptions","unique_email","allow_register","email_reset_password","email_confirmation_redirection","default_role","bootstrap","store","type","service","actionProvider","registerMany","actions","initialize","upConfig","config","defineOrigin","jwtSecret","accessTokenLifespan","sessions","maxRefreshTokenLifespan","idleRefreshTokenLifespan","maxSessionLifespan","idleSessionLifespan","algorithm","jwt","jwtOptions","process","env","NODE_ENV","Error","randomBytes","toString","JWT_SECRET","envPath","ENV_PATH","fs","appendFile","log","info"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../server/bootstrap/index.js"],"sourcesContent":["'use strict';\n\n/**\n * An asynchronous bootstrap function that runs before\n * your application gets started.\n *\n * This gives you an opportunity to set up your data model,\n * run jobs, or perform some special logic.\n */\nconst crypto = require('crypto');\nconst _ = require('lodash');\nconst { getService } = require('../utils');\nconst usersPermissionsActions = require('./users-permissions-actions');\nconst {\n DEFAULT_ACCESS_TOKEN_LIFESPAN,\n DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN,\n DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN,\n DEFAULT_MAX_SESSION_LIFESPAN,\n DEFAULT_IDLE_SESSION_LIFESPAN,\n} = require('../services/constants');\n\nconst getSessionManager = () => {\n const manager = strapi.sessionManager;\n return manager ?? null;\n};\n\nconst initGrant = async (pluginStore) => {\n const allProviders = getService('providers-registry').getAll();\n\n const grantConfig = Object.entries(allProviders).reduce((acc, [name, provider]) => {\n const { icon, enabled, grantConfig } = provider;\n\n acc[name] = {\n icon,\n enabled,\n ...grantConfig,\n };\n return acc;\n }, {});\n\n const prevGrantConfig = (await pluginStore.get({ key: 'grant' })) || {};\n\n if (!prevGrantConfig || !_.isEqual(prevGrantConfig, grantConfig)) {\n // merge with the previous provider config.\n _.keys(grantConfig).forEach((key) => {\n if (key in prevGrantConfig) {\n grantConfig[key] = _.merge(grantConfig[key], prevGrantConfig[key]);\n }\n });\n await pluginStore.set({ key: 'grant', value: grantConfig });\n }\n};\n\nconst initEmails = async (pluginStore) => {\n if (!(await pluginStore.get({ key: 'email' }))) {\n const value = {\n reset_password: {\n display: 'Email.template.reset_password',\n icon: 'sync',\n options: {\n from: {\n name: 'Administration Panel',\n email: 'no-reply@strapi.io',\n },\n response_email: '',\n object: 'Reset password',\n message: `<p>We heard that you lost your password. Sorry about that!</p>\n\n<p>But don’t worry! You can use the following link to reset your password:</p>\n<p><%= URL %>?code=<%= TOKEN %></p>\n\n<p>Thanks.</p>`,\n },\n },\n email_confirmation: {\n display: 'Email.template.email_confirmation',\n icon: 'check-square',\n options: {\n from: {\n name: 'Administration Panel',\n email: 'no-reply@strapi.io',\n },\n response_email: '',\n object: 'Account confirmation',\n message: `<p>Thank you for registering!</p>\n\n<p>You have to confirm your email address. Please click on the link below.</p>\n\n<p><%= URL %>?confirmation=<%= CODE %></p>\n\n<p>Thanks.</p>`,\n },\n },\n };\n\n await pluginStore.set({ key: 'email', value });\n }\n};\n\nconst initAdvancedOptions = async (pluginStore) => {\n if (!(await pluginStore.get({ key: 'advanced' }))) {\n const value = {\n unique_email: true,\n allow_register: true,\n email_confirmation: false,\n email_reset_password: null,\n email_confirmation_redirection: null,\n default_role: 'authenticated',\n };\n\n await pluginStore.set({ key: 'advanced', value });\n }\n};\n\nmodule.exports = async ({ strapi }) => {\n const pluginStore = strapi.store({ type: 'plugin', name: 'users-permissions' });\n\n await initGrant(pluginStore);\n await initEmails(pluginStore);\n await initAdvancedOptions(pluginStore);\n\n await strapi\n .service('admin::permission')\n .actionProvider.registerMany(usersPermissionsActions.actions);\n\n await getService('users-permissions').initialize();\n\n // Define users-permissions origin configuration for sessionManager\n const upConfig = strapi.config.get('plugin::users-permissions');\n const sessionManager = getSessionManager();\n\n if (sessionManager) {\n sessionManager.defineOrigin('users-permissions', {\n jwtSecret: upConfig.jwtSecret || strapi.config.get('admin.auth.secret'),\n accessTokenLifespan: upConfig.sessions?.accessTokenLifespan || DEFAULT_ACCESS_TOKEN_LIFESPAN,\n maxRefreshTokenLifespan:\n upConfig.sessions?.maxRefreshTokenLifespan || DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN,\n idleRefreshTokenLifespan:\n upConfig.sessions?.idleRefreshTokenLifespan || DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN,\n maxSessionLifespan: upConfig.sessions?.maxSessionLifespan || DEFAULT_MAX_SESSION_LIFESPAN,\n idleSessionLifespan: upConfig.sessions?.idleSessionLifespan || DEFAULT_IDLE_SESSION_LIFESPAN,\n algorithm: upConfig.jwt?.algorithm,\n jwtOptions: upConfig.jwt || {},\n });\n }\n\n if (!strapi.config.get('plugin::users-permissions.jwtSecret')) {\n if (process.env.NODE_ENV !== 'development') {\n throw new Error(\n `Missing jwtSecret. Please, set configuration variable \"jwtSecret\" for the users-permissions plugin in config/plugins.js (ex: you can generate one using Node with \\`crypto.randomBytes(16).toString('base64')\\`).\nFor security reasons, prefer storing the secret in an environment variable and read it in config/plugins.js. See https://docs.strapi.io/developer-docs/latest/setup-deployment-guides/configurations/optional/environment.html#configuration-using-environment-variables.`\n );\n }\n\n const jwtSecret = crypto.randomBytes(16).toString('base64');\n\n strapi.config.set('plugin::users-permissions.jwtSecret', jwtSecret);\n\n if (!process.env.JWT_SECRET) {\n const envPath = process.env.ENV_PATH || '.env';\n strapi.fs.appendFile(envPath, `JWT_SECRET=${jwtSecret}\\n`);\n strapi.log.info(\n `The Users & Permissions plugin automatically generated a jwt secret and stored it in ${envPath} under the name JWT_SECRET.`\n );\n }\n }\n};\n"],"names":["crypto","require$$0","_","require$$1","getService","require$$2","usersPermissionsActions","require$$3","DEFAULT_ACCESS_TOKEN_LIFESPAN","DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN","DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN","DEFAULT_MAX_SESSION_LIFESPAN","DEFAULT_IDLE_SESSION_LIFESPAN","require$$4","getSessionManager","manager","strapi","sessionManager","initGrant","pluginStore","allProviders","getAll","grantConfig","Object","entries","reduce","acc","name","provider","icon","enabled","prevGrantConfig","get","key","isEqual","keys","forEach","merge","set","value","initEmails","reset_password","display","options","from","email","response_email","object","message","email_confirmation","initAdvancedOptions","unique_email","allow_register","email_reset_password","email_confirmation_redirection","default_role","bootstrap","store","type","service","actionProvider","registerMany","actions","initialize","upConfig","config","defineOrigin","jwtSecret","accessTokenLifespan","sessions","maxRefreshTokenLifespan","idleRefreshTokenLifespan","maxSessionLifespan","idleSessionLifespan","algorithm","jwt","jwtOptions","process","env","NODE_ENV","Error","randomBytes","toString","JWT_SECRET","envPath","ENV_PATH","fs","appendFile","log","info"],"mappings":"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"}
|