@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.
Files changed (159) hide show
  1. package/.eslintrc.cjs +1 -0
  2. package/admin/src/pages/AdvancedSettings/index.jsx +1 -1
  3. package/admin/src/pages/Roles/pages/ListPage/index.jsx +1 -1
  4. package/admin/src/translations/ja.json +46 -7
  5. package/dist/admin/components/BoundRoute/index.js +12 -6
  6. package/dist/admin/components/BoundRoute/index.js.map +1 -1
  7. package/dist/admin/components/FormModal/Input/index.js +25 -21
  8. package/dist/admin/components/FormModal/Input/index.js.map +1 -1
  9. package/dist/admin/components/FormModal/index.js +14 -10
  10. package/dist/admin/components/FormModal/index.js.map +1 -1
  11. package/dist/admin/components/Permissions/PermissionRow/SubCategory.js +8 -3
  12. package/dist/admin/components/Permissions/PermissionRow/SubCategory.js.map +1 -1
  13. package/dist/admin/components/Permissions/PermissionRow/index.js +9 -4
  14. package/dist/admin/components/Permissions/PermissionRow/index.js.map +1 -1
  15. package/dist/admin/components/Policies/index.js +9 -3
  16. package/dist/admin/components/Policies/index.js.map +1 -1
  17. package/dist/admin/components/UsersPermissions/index.js +6 -2
  18. package/dist/admin/components/UsersPermissions/index.js.map +1 -1
  19. package/dist/admin/components/UsersPermissions/reducer.js +10 -4
  20. package/dist/admin/components/UsersPermissions/reducer.js.map +1 -1
  21. package/dist/admin/contexts/UsersPermissionsContext/index.js +6 -2
  22. package/dist/admin/contexts/UsersPermissionsContext/index.js.map +1 -1
  23. package/dist/admin/pages/AdvancedSettings/index.js +1 -1
  24. package/dist/admin/pages/AdvancedSettings/index.js.map +1 -1
  25. package/dist/admin/pages/AdvancedSettings/index.mjs +1 -1
  26. package/dist/admin/pages/AdvancedSettings/index.mjs.map +1 -1
  27. package/dist/admin/pages/AdvancedSettings/utils/schema.js +3 -2
  28. package/dist/admin/pages/AdvancedSettings/utils/schema.js.map +1 -1
  29. package/dist/admin/pages/EmailTemplates/components/EmailForm.js +17 -13
  30. package/dist/admin/pages/EmailTemplates/components/EmailForm.js.map +1 -1
  31. package/dist/admin/pages/EmailTemplates/components/EmailTable.js +6 -2
  32. package/dist/admin/pages/EmailTemplates/components/EmailTable.js.map +1 -1
  33. package/dist/admin/pages/EmailTemplates/index.js +3 -2
  34. package/dist/admin/pages/EmailTemplates/index.js.map +1 -1
  35. package/dist/admin/pages/EmailTemplates/utils/schema.js +3 -2
  36. package/dist/admin/pages/EmailTemplates/utils/schema.js.map +1 -1
  37. package/dist/admin/pages/Providers/index.js +7 -3
  38. package/dist/admin/pages/Providers/index.js.map +1 -1
  39. package/dist/admin/pages/Providers/utils/forms.js +3 -2
  40. package/dist/admin/pages/Providers/utils/forms.js.map +1 -1
  41. package/dist/admin/pages/Roles/constants.js +3 -2
  42. package/dist/admin/pages/Roles/constants.js.map +1 -1
  43. package/dist/admin/pages/Roles/pages/CreatePage.js +3 -2
  44. package/dist/admin/pages/Roles/pages/CreatePage.js.map +1 -1
  45. package/dist/admin/pages/Roles/pages/EditPage.js +3 -2
  46. package/dist/admin/pages/Roles/pages/EditPage.js.map +1 -1
  47. package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.js +9 -5
  48. package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.js.map +1 -1
  49. package/dist/admin/pages/Roles/pages/ListPage/index.js +1 -1
  50. package/dist/admin/pages/Roles/pages/ListPage/index.js.map +1 -1
  51. package/dist/admin/pages/Roles/pages/ListPage/index.mjs +1 -1
  52. package/dist/admin/pages/Roles/pages/ListPage/index.mjs.map +1 -1
  53. package/dist/admin/translations/ja.json.js +46 -7
  54. package/dist/admin/translations/ja.json.js.map +1 -1
  55. package/dist/admin/translations/ja.json.mjs +46 -7
  56. package/dist/admin/translations/ja.json.mjs.map +1 -1
  57. package/dist/admin/utils/cleanPermissions.js +6 -2
  58. package/dist/admin/utils/cleanPermissions.js.map +1 -1
  59. package/dist/admin/utils/formatPluginName.js +5 -1
  60. package/dist/admin/utils/formatPluginName.js.map +1 -1
  61. package/dist/server/bootstrap/index.js +7 -2
  62. package/dist/server/bootstrap/index.js.map +1 -1
  63. package/dist/server/controllers/auth.js +144 -117
  64. package/dist/server/controllers/auth.js.map +1 -1
  65. package/dist/server/controllers/auth.mjs +132 -113
  66. package/dist/server/controllers/auth.mjs.map +1 -1
  67. package/dist/server/controllers/content-manager-user.js +8 -3
  68. package/dist/server/controllers/content-manager-user.js.map +1 -1
  69. package/dist/server/controllers/permissions.js +5 -1
  70. package/dist/server/controllers/permissions.js.map +1 -1
  71. package/dist/server/controllers/role.js +7 -2
  72. package/dist/server/controllers/role.js.map +1 -1
  73. package/dist/server/controllers/settings.js +7 -2
  74. package/dist/server/controllers/settings.js.map +1 -1
  75. package/dist/server/controllers/user.js +7 -2
  76. package/dist/server/controllers/user.js.map +1 -1
  77. package/dist/server/controllers/validation/auth.js +5 -1
  78. package/dist/server/controllers/validation/auth.js.map +1 -1
  79. package/dist/server/controllers/validation/email-template.js +7 -2
  80. package/dist/server/controllers/validation/email-template.js.map +1 -1
  81. package/dist/server/controllers/validation/user.js +21 -10
  82. package/dist/server/controllers/validation/user.js.map +1 -1
  83. package/dist/server/controllers/validation/user.mjs +16 -9
  84. package/dist/server/controllers/validation/user.mjs.map +1 -1
  85. package/dist/server/graphql/mutations/auth/change-password.js +5 -1
  86. package/dist/server/graphql/mutations/auth/change-password.js.map +1 -1
  87. package/dist/server/graphql/mutations/auth/email-confirmation.js +5 -1
  88. package/dist/server/graphql/mutations/auth/email-confirmation.js.map +1 -1
  89. package/dist/server/graphql/mutations/auth/forgot-password.js +5 -1
  90. package/dist/server/graphql/mutations/auth/forgot-password.js.map +1 -1
  91. package/dist/server/graphql/mutations/auth/login.js +5 -1
  92. package/dist/server/graphql/mutations/auth/login.js.map +1 -1
  93. package/dist/server/graphql/mutations/auth/register.js +5 -1
  94. package/dist/server/graphql/mutations/auth/register.js.map +1 -1
  95. package/dist/server/graphql/mutations/auth/reset-password.js +5 -1
  96. package/dist/server/graphql/mutations/auth/reset-password.js.map +1 -1
  97. package/dist/server/graphql/mutations/crud/role/create-role.js +5 -1
  98. package/dist/server/graphql/mutations/crud/role/create-role.js.map +1 -1
  99. package/dist/server/graphql/mutations/crud/user/create-user.js +5 -1
  100. package/dist/server/graphql/mutations/crud/user/create-user.js.map +1 -1
  101. package/dist/server/graphql/mutations/crud/user/update-user.js +5 -1
  102. package/dist/server/graphql/mutations/crud/user/update-user.js.map +1 -1
  103. package/dist/server/graphql/utils.js +5 -1
  104. package/dist/server/graphql/utils.js.map +1 -1
  105. package/dist/server/middlewares/rateLimit.js +11 -4
  106. package/dist/server/middlewares/rateLimit.js.map +1 -1
  107. package/dist/server/register.js +7 -2
  108. package/dist/server/register.js.map +1 -1
  109. package/dist/server/routes/content-api/auth.js +16 -0
  110. package/dist/server/routes/content-api/auth.js.map +1 -1
  111. package/dist/server/routes/content-api/auth.mjs +16 -0
  112. package/dist/server/routes/content-api/auth.mjs.map +1 -1
  113. package/dist/server/routes/content-api/index.js +5 -1
  114. package/dist/server/routes/content-api/index.js.map +1 -1
  115. package/dist/server/routes/content-api/user.js +5 -1
  116. package/dist/server/routes/content-api/user.js.map +1 -1
  117. package/dist/server/routes/content-api/validation.js +36 -4
  118. package/dist/server/routes/content-api/validation.js.map +1 -1
  119. package/dist/server/routes/content-api/validation.mjs +29 -2
  120. package/dist/server/routes/content-api/validation.mjs.map +1 -1
  121. package/dist/server/services/jwt.js +15 -8
  122. package/dist/server/services/jwt.js.map +1 -1
  123. package/dist/server/services/jwt.mjs +8 -6
  124. package/dist/server/services/jwt.mjs.map +1 -1
  125. package/dist/server/services/providers-registry.js +13 -5
  126. package/dist/server/services/providers-registry.js.map +1 -1
  127. package/dist/server/services/providers.js +7 -2
  128. package/dist/server/services/providers.js.map +1 -1
  129. package/dist/server/services/role.js +7 -2
  130. package/dist/server/services/role.js.map +1 -1
  131. package/dist/server/services/user.js +13 -5
  132. package/dist/server/services/user.js.map +1 -1
  133. package/dist/server/services/users-permissions.js +19 -4
  134. package/dist/server/services/users-permissions.js.map +1 -1
  135. package/dist/server/services/users-permissions.mjs +8 -0
  136. package/dist/server/services/users-permissions.mjs.map +1 -1
  137. package/dist/server/strategies/users-permissions.js +15 -3
  138. package/dist/server/strategies/users-permissions.js.map +1 -1
  139. package/dist/server/strategies/users-permissions.mjs +8 -1
  140. package/dist/server/strategies/users-permissions.mjs.map +1 -1
  141. package/dist/server/utils/index.js +5 -1
  142. package/dist/server/utils/index.js.map +1 -1
  143. package/dist/server/utils/refresh-cookie-options.js +27 -0
  144. package/dist/server/utils/refresh-cookie-options.js.map +1 -0
  145. package/dist/server/utils/refresh-cookie-options.mjs +25 -0
  146. package/dist/server/utils/refresh-cookie-options.mjs.map +1 -0
  147. package/dist/server/utils/sanitize/sanitizers.js +7 -2
  148. package/dist/server/utils/sanitize/sanitizers.js.map +1 -1
  149. package/lint-staged.config.mjs +1 -0
  150. package/package.json +5 -5
  151. package/rollup.config.mjs +3 -3
  152. package/server/controllers/auth.js +162 -141
  153. package/server/controllers/validation/user.js +22 -9
  154. package/server/routes/content-api/auth.js +12 -0
  155. package/server/routes/content-api/validation.js +32 -2
  156. package/server/services/jwt.js +4 -3
  157. package/server/services/users-permissions.js +2 -0
  158. package/server/strategies/users-permissions.js +6 -1
  159. 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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"}
@@ -51,7 +51,7 @@ const RolesListPage = ()=>{
51
51
  type: 'danger',
52
52
  message: formatMessage({
53
53
  id: 'notification.error',
54
- defaultMessage: 'An error occured'
54
+ defaultMessage: 'An error occurred'
55
55
  })
56
56
  });
57
57
  }
@@ -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": "Bound route to",
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": "Host URI (Subdomain)",
72
+ "PopUpForm.Providers.subdomain.label": "ホストURI(サブドメイン)",
40
73
  "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com",
41
- "PopUpForm.header.edit.email-templates": "メールテンプレートの編集",
42
- "notification.success.submit": "設定が更新されました",
43
- "plugin.description.long": "JWTに基づいた完全な認証プロセスでAPIを保護します。このプラグインには、ユーザーのグループ間で権限を管理できるACL戦略もあります。",
44
- "plugin.description.short": "JWTに基づく完全な認証プロセスでAPIを保護する",
45
- "plugin.name": "ロールと権限"
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": "Bound route to",
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": "Host URI (Subdomain)",
70
+ "PopUpForm.Providers.subdomain.label": "ホストURI(サブドメイン)",
38
71
  "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com",
39
- "PopUpForm.header.edit.email-templates": "メールテンプレートの編集",
40
- "notification.success.submit": "設定が更新されました",
41
- "plugin.description.long": "JWTに基づいた完全な認証プロセスでAPIを保護します。このプラグインには、ユーザーのグループ間で権限を管理できるACL戦略もあります。",
42
- "plugin.description.short": "JWTに基づく完全な認証プロセスでAPIを保護する",
43
- "plugin.name": "ロールと権限"
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 (isEmpty(currentPermission[curr])) {
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 (isEmpty(cleanedControllers)) {
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":";;;;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,OAAAA,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,QAAQH,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;;;;"}
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 upperFirst(pluginSlug.replace('api::', '').replace('plugin::', ''));
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":";;;;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,UAAAA,CAAWD,WAAWE,OAAO,CAAC,SAAS,EAAA,CAAA,CAAIA,OAAO,CAAC,UAAA,EAAY,EAAA,CAAA,CAAA;AAC1E;AACF;;;;"}
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$$0;
21
- const _ = require$$0$1;
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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"}