@strapi/plugin-users-permissions 5.57.0 → 5.59.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.
@@ -8,7 +8,9 @@ import { useIntl } from 'react-intl';
8
8
  import { getTrad } from '../../../utils';
9
9
  import schema from '../utils/schema';
10
10
 
11
- const EmailForm = ({ template = {}, onToggle, open, onSubmit }) => {
11
+ const EMPTY_TEMPLATE = {};
12
+
13
+ const EmailForm = ({ template = EMPTY_TEMPLATE, onToggle, open, onSubmit }) => {
12
14
  const { formatMessage } = useIntl();
13
15
 
14
16
  return (
@@ -46,7 +46,7 @@
46
46
  "PopUpForm.Providers.key.label": "ID de cliente",
47
47
  "PopUpForm.Providers.key.placeholder": "TEXTO",
48
48
  "PopUpForm.Providers.redirectURL.front-end.label": "La URL de redireccionamiento a su aplicación front-end",
49
- "PopUpForm.Providers.redirectURL.label": "La URL de redireccionamiento para agregar en las configuraciones de su aplicación de {proveedor}",
49
+ "PopUpForm.Providers.redirectURL.label": "La URL de redireccionamiento para agregar en las configuraciones de su aplicación de {provider}",
50
50
  "PopUpForm.Providers.secret.label": "Secreto Cliente",
51
51
  "PopUpForm.Providers.secret.placeholder": "TEXTO",
52
52
  "PopUpForm.Providers.subdomain.label": "URI de host (subdominio)",
@@ -46,7 +46,7 @@
46
46
  "PopUpForm.Providers.key.label": "Klient ID",
47
47
  "PopUpForm.Providers.key.placeholder": "TEXT",
48
48
  "PopUpForm.Providers.redirectURL.front-end.label": "Omdirigerings-URL: en till din front-end-app",
49
- "PopUpForm.Providers.redirectURL.label": "Webbadressen för omdirigering som ska läggas till i {Provider} applikationskonfigurationer",
49
+ "PopUpForm.Providers.redirectURL.label": "Webbadressen för omdirigering som ska läggas till i {provider} applikationskonfigurationer",
50
50
  "PopUpForm.Providers.secret.label": "Klient hemlighet",
51
51
  "PopUpForm.Providers.secret.placeholder": "TEXT",
52
52
  "PopUpForm.Providers.subdomain.label": "Host URI (Subdomän)",
@@ -46,7 +46,7 @@
46
46
  "PopUpForm.Providers.key.label": "Client ID",
47
47
  "PopUpForm.Providers.key.placeholder": "TEXT",
48
48
  "PopUpForm.Providers.redirectURL.front-end.label": "URL переадресації для вашего front-end додатку",
49
- "PopUpForm.Providers.redirectURL.label": "URL -адреса для переадресації, щоб додати у ваші конфігурації програми {постачальник}",
49
+ "PopUpForm.Providers.redirectURL.label": "URL-адреса для переадресації, щоб додати у ваші конфігурації програми {provider}",
50
50
  "PopUpForm.Providers.secret.label": "Client Secret",
51
51
  "PopUpForm.Providers.secret.placeholder": "TEXT",
52
52
  "PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)",
@@ -14,7 +14,8 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
14
14
 
15
15
  var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
16
16
 
17
- const EmailForm = ({ template = {}, onToggle, open, onSubmit })=>{
17
+ const EMPTY_TEMPLATE = {};
18
+ const EmailForm = ({ template = EMPTY_TEMPLATE, onToggle, open, onSubmit })=>{
18
19
  const { formatMessage } = reactIntl.useIntl();
19
20
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Modal.Root, {
20
21
  open: open,
@@ -1 +1 @@
1
- {"version":3,"file":"EmailForm.js","sources":["../../../../../admin/src/pages/EmailTemplates/components/EmailForm.jsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Grid, Modal, Breadcrumbs, Crumb, VisuallyHidden } from '@strapi/design-system';\nimport { Form, InputRenderer } from '@strapi/strapi/admin';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../utils';\nimport schema from '../utils/schema';\n\nconst EmailForm = ({ template = {}, onToggle, open, onSubmit }) => {\n const { formatMessage } = useIntl();\n\n return (\n <Modal.Root open={open} onOpenChange={onToggle}>\n <Modal.Content>\n <Modal.Header>\n <Breadcrumbs\n label={`${formatMessage({\n id: getTrad('PopUpForm.header.edit.email-templates'),\n defaultMessage: 'Edit email template',\n })}, ${\n template.display\n ? formatMessage({\n id: getTrad(template.display),\n defaultMessage: template.display,\n })\n : ''\n }`}\n >\n <Crumb>\n {formatMessage({\n id: getTrad('PopUpForm.header.edit.email-templates'),\n defaultMessage: 'Edit email template',\n })}\n </Crumb>\n <Crumb isCurrent>\n {template.display\n ? formatMessage({ id: getTrad(template.display), defaultMessage: template.display })\n : ''}\n </Crumb>\n </Breadcrumbs>\n <VisuallyHidden>\n <Modal.Title>\n {`${formatMessage({\n id: getTrad('PopUpForm.header.edit.email-templates'),\n defaultMessage: 'Edit email template',\n })}, ${template.display ? formatMessage({ id: getTrad(template.display), defaultMessage: template.display }) : ''}`}\n </Modal.Title>\n </VisuallyHidden>\n </Modal.Header>\n <Form onSubmit={onSubmit} initialValues={template} validationSchema={schema}>\n {({ isSubmitting }) => {\n return (\n <>\n <Modal.Body>\n <Grid.Root gap={5}>\n {[\n {\n label: formatMessage({\n id: getTrad('PopUpForm.Email.options.from.name.label'),\n defaultMessage: 'Shipper name',\n }),\n name: 'options.from.name',\n size: 6,\n type: 'string',\n },\n {\n label: formatMessage({\n id: getTrad('PopUpForm.Email.options.from.email.label'),\n defaultMessage: 'Shipper email',\n }),\n name: 'options.from.email',\n size: 6,\n type: 'string',\n },\n {\n label: formatMessage({\n id: getTrad('PopUpForm.Email.options.response_email.label'),\n defaultMessage: 'Response email',\n }),\n name: 'options.response_email',\n size: 6,\n type: 'string',\n },\n {\n label: formatMessage({\n id: getTrad('PopUpForm.Email.options.object.label'),\n defaultMessage: 'Subject',\n }),\n name: 'options.object',\n size: 6,\n type: 'string',\n },\n {\n label: formatMessage({\n id: getTrad('PopUpForm.Email.options.message.label'),\n defaultMessage: 'Message',\n }),\n name: 'options.message',\n size: 12,\n type: 'text',\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n m={size}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\">Cancel</Button>\n </Modal.Close>\n <Button loading={isSubmitting} type=\"submit\">\n Finish\n </Button>\n </Modal.Footer>\n </>\n );\n }}\n </Form>\n </Modal.Content>\n </Modal.Root>\n );\n};\n\nEmailForm.defaultProps = {\n template: {},\n};\n\nEmailForm.propTypes = {\n template: PropTypes.shape({\n display: PropTypes.string,\n icon: PropTypes.string,\n options: PropTypes.shape({\n from: PropTypes.shape({\n name: PropTypes.string,\n email: PropTypes.string,\n }),\n message: PropTypes.string,\n object: PropTypes.string,\n response_email: PropTypes.string,\n }),\n }),\n open: PropTypes.bool.isRequired,\n onSubmit: PropTypes.func.isRequired,\n onToggle: PropTypes.func.isRequired,\n};\n\nexport default EmailForm;\n"],"names":["EmailForm","template","onToggle","open","onSubmit","formatMessage","useIntl","_jsx","Modal","Root","onOpenChange","_jsxs","Content","Header","Breadcrumbs","label","id","getTrad","defaultMessage","display","Crumb","isCurrent","VisuallyHidden","Title","Form","initialValues","validationSchema","schema","isSubmitting","_Fragment","Body","Grid","gap","name","size","type","map","field","Item","m","xs","direction","alignItems","InputRenderer","Footer","Close","Button","variant","loading","defaultProps","propTypes","PropTypes","shape","string","icon","options","from","email","message","object","response_email","bool","isRequired","func"],"mappings":"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"}
1
+ {"version":3,"file":"EmailForm.js","sources":["../../../../../admin/src/pages/EmailTemplates/components/EmailForm.jsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Grid, Modal, Breadcrumbs, Crumb, VisuallyHidden } from '@strapi/design-system';\nimport { Form, InputRenderer } from '@strapi/strapi/admin';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../utils';\nimport schema from '../utils/schema';\n\nconst EMPTY_TEMPLATE = {};\n\nconst EmailForm = ({ template = EMPTY_TEMPLATE, onToggle, open, onSubmit }) => {\n const { formatMessage } = useIntl();\n\n return (\n <Modal.Root open={open} onOpenChange={onToggle}>\n <Modal.Content>\n <Modal.Header>\n <Breadcrumbs\n label={`${formatMessage({\n id: getTrad('PopUpForm.header.edit.email-templates'),\n defaultMessage: 'Edit email template',\n })}, ${\n template.display\n ? formatMessage({\n id: getTrad(template.display),\n defaultMessage: template.display,\n })\n : ''\n }`}\n >\n <Crumb>\n {formatMessage({\n id: getTrad('PopUpForm.header.edit.email-templates'),\n defaultMessage: 'Edit email template',\n })}\n </Crumb>\n <Crumb isCurrent>\n {template.display\n ? formatMessage({ id: getTrad(template.display), defaultMessage: template.display })\n : ''}\n </Crumb>\n </Breadcrumbs>\n <VisuallyHidden>\n <Modal.Title>\n {`${formatMessage({\n id: getTrad('PopUpForm.header.edit.email-templates'),\n defaultMessage: 'Edit email template',\n })}, ${template.display ? formatMessage({ id: getTrad(template.display), defaultMessage: template.display }) : ''}`}\n </Modal.Title>\n </VisuallyHidden>\n </Modal.Header>\n <Form onSubmit={onSubmit} initialValues={template} validationSchema={schema}>\n {({ isSubmitting }) => {\n return (\n <>\n <Modal.Body>\n <Grid.Root gap={5}>\n {[\n {\n label: formatMessage({\n id: getTrad('PopUpForm.Email.options.from.name.label'),\n defaultMessage: 'Shipper name',\n }),\n name: 'options.from.name',\n size: 6,\n type: 'string',\n },\n {\n label: formatMessage({\n id: getTrad('PopUpForm.Email.options.from.email.label'),\n defaultMessage: 'Shipper email',\n }),\n name: 'options.from.email',\n size: 6,\n type: 'string',\n },\n {\n label: formatMessage({\n id: getTrad('PopUpForm.Email.options.response_email.label'),\n defaultMessage: 'Response email',\n }),\n name: 'options.response_email',\n size: 6,\n type: 'string',\n },\n {\n label: formatMessage({\n id: getTrad('PopUpForm.Email.options.object.label'),\n defaultMessage: 'Subject',\n }),\n name: 'options.object',\n size: 6,\n type: 'string',\n },\n {\n label: formatMessage({\n id: getTrad('PopUpForm.Email.options.message.label'),\n defaultMessage: 'Message',\n }),\n name: 'options.message',\n size: 12,\n type: 'text',\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n m={size}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\">Cancel</Button>\n </Modal.Close>\n <Button loading={isSubmitting} type=\"submit\">\n Finish\n </Button>\n </Modal.Footer>\n </>\n );\n }}\n </Form>\n </Modal.Content>\n </Modal.Root>\n );\n};\n\nEmailForm.defaultProps = {\n template: {},\n};\n\nEmailForm.propTypes = {\n template: PropTypes.shape({\n display: PropTypes.string,\n icon: PropTypes.string,\n options: PropTypes.shape({\n from: PropTypes.shape({\n name: PropTypes.string,\n email: PropTypes.string,\n }),\n message: PropTypes.string,\n object: PropTypes.string,\n response_email: PropTypes.string,\n }),\n }),\n open: PropTypes.bool.isRequired,\n onSubmit: PropTypes.func.isRequired,\n onToggle: PropTypes.func.isRequired,\n};\n\nexport default EmailForm;\n"],"names":["EMPTY_TEMPLATE","EmailForm","template","onToggle","open","onSubmit","formatMessage","useIntl","_jsx","Modal","Root","onOpenChange","_jsxs","Content","Header","Breadcrumbs","label","id","getTrad","defaultMessage","display","Crumb","isCurrent","VisuallyHidden","Title","Form","initialValues","validationSchema","schema","isSubmitting","_Fragment","Body","Grid","gap","name","size","type","map","field","Item","m","xs","direction","alignItems","InputRenderer","Footer","Close","Button","variant","loading","defaultProps","propTypes","PropTypes","shape","string","icon","options","from","email","message","object","response_email","bool","isRequired","func"],"mappings":";;;;;;;;;;;;;;;;AAUA,MAAMA,iBAAiB,EAAC;AAExB,MAAMC,SAAAA,GAAY,CAAC,EAAEC,QAAAA,GAAWF,cAAc,EAAEG,QAAQ,EAAEC,IAAI,EAAEC,QAAQ,EAAE,GAAA;IACxE,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAE1B,qBACEC,cAAA,CAACC,mBAAMC,IAAI,EAAA;QAACN,IAAAA,EAAMA,IAAAA;QAAMO,YAAAA,EAAcR,QAAAA;gCACpCS,eAAA,CAACH,mBAAMI,OAAO,EAAA;;AACZ,8BAAAD,eAAA,CAACH,mBAAMK,MAAM,EAAA;;sCACXF,eAAA,CAACG,wBAAAA,EAAAA;AACCC,4BAAAA,KAAAA,EAAO,GAAGV,aAAAA,CAAc;AACtBW,gCAAAA,EAAAA,EAAIC,OAAAA,CAAQ,uCAAA,CAAA;gCACZC,cAAAA,EAAgB;AAClB,6BAAA,CAAA,CAAG,EAAE,EACHjB,QAAAA,CAASkB,OAAO,GACZd,aAAAA,CAAc;gCACZW,EAAAA,EAAIC,OAAAA,CAAQhB,SAASkB,OAAO,CAAA;AAC5BD,gCAAAA,cAAAA,EAAgBjB,SAASkB;AAC3B,6BAAA,CAAA,GACA,EAAA,CAAA,CACJ;;8CAEFZ,cAAA,CAACa,kBAAAA,EAAAA;8CACEf,aAAAA,CAAc;AACbW,wCAAAA,EAAAA,EAAIC,OAAAA,CAAQ,uCAAA,CAAA;wCACZC,cAAAA,EAAgB;AAClB,qCAAA;;8CAEFX,cAAA,CAACa,kBAAAA,EAAAA;oCAAMC,SAAS,EAAA,IAAA;8CACbpB,QAAAA,CAASkB,OAAO,GACbd,aAAAA,CAAc;wCAAEW,EAAAA,EAAIC,OAAAA,CAAQhB,SAASkB,OAAO,CAAA;AAAGD,wCAAAA,cAAAA,EAAgBjB,SAASkB;qCAAQ,CAAA,GAChF;;;;sCAGRZ,cAAA,CAACe,2BAAAA,EAAAA;oDACCf,cAAA,CAACC,mBAAMe,KAAK,EAAA;AACT,gCAAA,QAAA,EAAA,CAAA,EAAGlB,aAAAA,CAAc;AAChBW,oCAAAA,EAAAA,EAAIC,OAAAA,CAAQ,uCAAA,CAAA;oCACZC,cAAAA,EAAgB;AAClB,iCAAA,CAAA,CAAG,EAAE,EAAEjB,QAAAA,CAASkB,OAAO,GAAGd,aAAAA,CAAc;oCAAEW,EAAAA,EAAIC,OAAAA,CAAQhB,SAASkB,OAAO,CAAA;AAAGD,oCAAAA,cAAAA,EAAgBjB,SAASkB;AAAQ,iCAAA,CAAA,GAAK,EAAA,CAAA;;;;;8BAIrHZ,cAAA,CAACiB,UAAAA,EAAAA;oBAAKpB,QAAAA,EAAUA,QAAAA;oBAAUqB,aAAAA,EAAexB,QAAAA;oBAAUyB,gBAAAA,EAAkBC,MAAAA;8BAClE,CAAC,EAAEC,YAAY,EAAE,GAAA;wBAChB,qBACEjB,eAAA,CAAAkB,mBAAA,EAAA;;AACE,8CAAAtB,cAAA,CAACC,mBAAMsB,IAAI,EAAA;4DACTvB,cAAA,CAACwB,kBAAKtB,IAAI,EAAA;wCAACuB,GAAAA,EAAK,CAAA;AACb,wCAAA,QAAA,EAAA;AACC,4CAAA;AACEjB,gDAAAA,KAAAA,EAAOV,aAAAA,CAAc;AACnBW,oDAAAA,EAAAA,EAAIC,OAAAA,CAAQ,yCAAA,CAAA;oDACZC,cAAAA,EAAgB;AAClB,iDAAA,CAAA;gDACAe,IAAAA,EAAM,mBAAA;gDACNC,IAAAA,EAAM,CAAA;gDACNC,IAAAA,EAAM;AACR,6CAAA;AACA,4CAAA;AACEpB,gDAAAA,KAAAA,EAAOV,aAAAA,CAAc;AACnBW,oDAAAA,EAAAA,EAAIC,OAAAA,CAAQ,0CAAA,CAAA;oDACZC,cAAAA,EAAgB;AAClB,iDAAA,CAAA;gDACAe,IAAAA,EAAM,oBAAA;gDACNC,IAAAA,EAAM,CAAA;gDACNC,IAAAA,EAAM;AACR,6CAAA;AACA,4CAAA;AACEpB,gDAAAA,KAAAA,EAAOV,aAAAA,CAAc;AACnBW,oDAAAA,EAAAA,EAAIC,OAAAA,CAAQ,8CAAA,CAAA;oDACZC,cAAAA,EAAgB;AAClB,iDAAA,CAAA;gDACAe,IAAAA,EAAM,wBAAA;gDACNC,IAAAA,EAAM,CAAA;gDACNC,IAAAA,EAAM;AACR,6CAAA;AACA,4CAAA;AACEpB,gDAAAA,KAAAA,EAAOV,aAAAA,CAAc;AACnBW,oDAAAA,EAAAA,EAAIC,OAAAA,CAAQ,sCAAA,CAAA;oDACZC,cAAAA,EAAgB;AAClB,iDAAA,CAAA;gDACAe,IAAAA,EAAM,gBAAA;gDACNC,IAAAA,EAAM,CAAA;gDACNC,IAAAA,EAAM;AACR,6CAAA;AACA,4CAAA;AACEpB,gDAAAA,KAAAA,EAAOV,aAAAA,CAAc;AACnBW,oDAAAA,EAAAA,EAAIC,OAAAA,CAAQ,uCAAA,CAAA;oDACZC,cAAAA,EAAgB;AAClB,iDAAA,CAAA;gDACAe,IAAAA,EAAM,iBAAA;gDACNC,IAAAA,EAAM,EAAA;gDACNC,IAAAA,EAAM;AACR;yCACD,CAACC,GAAG,CAAC,CAAC,EAAEF,IAAI,EAAE,GAAGG,KAAAA,EAAO,iBACvB9B,cAAA,CAACwB,iBAAAA,CAAKO,IAAI,EAAA;gDAERC,CAAAA,EAAGL,IAAAA;gDACHM,EAAAA,EAAI,EAAA;gDACJC,SAAAA,EAAU,QAAA;gDACVC,UAAAA,EAAW,SAAA;AAEX,gDAAA,QAAA,gBAAAnC,cAAA,CAACoC,mBAAAA,EAAAA;AAAe,oDAAA,GAAGN;;AANdA,6CAAAA,EAAAA,KAAAA,CAAMJ,IAAI,CAAA;;;AAWvB,8CAAAtB,eAAA,CAACH,mBAAMoC,MAAM,EAAA;;AACX,sDAAArC,cAAA,CAACC,mBAAMqC,KAAK,EAAA;AACV,4CAAA,QAAA,gBAAAtC,cAAA,CAACuC,mBAAAA,EAAAA;gDAAOC,OAAAA,EAAQ,UAAA;AAAW,gDAAA,QAAA,EAAA;;;sDAE7BxC,cAAA,CAACuC,mBAAAA,EAAAA;4CAAOE,OAAAA,EAASpB,YAAAA;4CAAcO,IAAAA,EAAK,QAAA;AAAS,4CAAA,QAAA,EAAA;;;;;;AAMrD,oBAAA;;;;;AAKV;AAEAnC,SAAAA,CAAUiD,YAAY,GAAG;AACvBhD,IAAAA,QAAAA,EAAU;AACZ,CAAA;AAEAD,SAAAA,CAAUkD,SAAS,GAAG;IACpBjD,QAAAA,EAAUkD,0BAAAA,CAAUC,KAAK,CAAC;AACxBjC,QAAAA,OAAAA,EAASgC,2BAAUE,MAAM;AACzBC,QAAAA,IAAAA,EAAMH,2BAAUE,MAAM;QACtBE,OAAAA,EAASJ,0BAAAA,CAAUC,KAAK,CAAC;YACvBI,IAAAA,EAAML,0BAAAA,CAAUC,KAAK,CAAC;AACpBnB,gBAAAA,IAAAA,EAAMkB,2BAAUE,MAAM;AACtBI,gBAAAA,KAAAA,EAAON,2BAAUE;AACnB,aAAA,CAAA;AACAK,YAAAA,OAAAA,EAASP,2BAAUE,MAAM;AACzBM,YAAAA,MAAAA,EAAQR,2BAAUE,MAAM;AACxBO,YAAAA,cAAAA,EAAgBT,2BAAUE;AAC5B,SAAA;AACF,KAAA,CAAA;IACAlD,IAAAA,EAAMgD,0BAAAA,CAAUU,IAAI,CAACC,UAAU;IAC/B1D,QAAAA,EAAU+C,0BAAAA,CAAUY,IAAI,CAACD,UAAU;IACnC5D,QAAAA,EAAUiD,0BAAAA,CAAUY,IAAI,CAACD;AAC3B,CAAA;;;;"}
@@ -8,7 +8,8 @@ import 'lodash/isEmpty';
8
8
  import getTrad from '../../../utils/getTrad.mjs';
9
9
  import schema from '../utils/schema.mjs';
10
10
 
11
- const EmailForm = ({ template = {}, onToggle, open, onSubmit })=>{
11
+ const EMPTY_TEMPLATE = {};
12
+ const EmailForm = ({ template = EMPTY_TEMPLATE, onToggle, open, onSubmit })=>{
12
13
  const { formatMessage } = useIntl();
13
14
  return /*#__PURE__*/ jsx(Modal.Root, {
14
15
  open: open,
@@ -1 +1 @@
1
- {"version":3,"file":"EmailForm.mjs","sources":["../../../../../admin/src/pages/EmailTemplates/components/EmailForm.jsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Grid, Modal, Breadcrumbs, Crumb, VisuallyHidden } from '@strapi/design-system';\nimport { Form, InputRenderer } from '@strapi/strapi/admin';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../utils';\nimport schema from '../utils/schema';\n\nconst EmailForm = ({ template = {}, onToggle, open, onSubmit }) => {\n const { formatMessage } = useIntl();\n\n return (\n <Modal.Root open={open} onOpenChange={onToggle}>\n <Modal.Content>\n <Modal.Header>\n <Breadcrumbs\n label={`${formatMessage({\n id: getTrad('PopUpForm.header.edit.email-templates'),\n defaultMessage: 'Edit email template',\n })}, ${\n template.display\n ? formatMessage({\n id: getTrad(template.display),\n defaultMessage: template.display,\n })\n : ''\n }`}\n >\n <Crumb>\n {formatMessage({\n id: getTrad('PopUpForm.header.edit.email-templates'),\n defaultMessage: 'Edit email template',\n })}\n </Crumb>\n <Crumb isCurrent>\n {template.display\n ? formatMessage({ id: getTrad(template.display), defaultMessage: template.display })\n : ''}\n </Crumb>\n </Breadcrumbs>\n <VisuallyHidden>\n <Modal.Title>\n {`${formatMessage({\n id: getTrad('PopUpForm.header.edit.email-templates'),\n defaultMessage: 'Edit email template',\n })}, ${template.display ? formatMessage({ id: getTrad(template.display), defaultMessage: template.display }) : ''}`}\n </Modal.Title>\n </VisuallyHidden>\n </Modal.Header>\n <Form onSubmit={onSubmit} initialValues={template} validationSchema={schema}>\n {({ isSubmitting }) => {\n return (\n <>\n <Modal.Body>\n <Grid.Root gap={5}>\n {[\n {\n label: formatMessage({\n id: getTrad('PopUpForm.Email.options.from.name.label'),\n defaultMessage: 'Shipper name',\n }),\n name: 'options.from.name',\n size: 6,\n type: 'string',\n },\n {\n label: formatMessage({\n id: getTrad('PopUpForm.Email.options.from.email.label'),\n defaultMessage: 'Shipper email',\n }),\n name: 'options.from.email',\n size: 6,\n type: 'string',\n },\n {\n label: formatMessage({\n id: getTrad('PopUpForm.Email.options.response_email.label'),\n defaultMessage: 'Response email',\n }),\n name: 'options.response_email',\n size: 6,\n type: 'string',\n },\n {\n label: formatMessage({\n id: getTrad('PopUpForm.Email.options.object.label'),\n defaultMessage: 'Subject',\n }),\n name: 'options.object',\n size: 6,\n type: 'string',\n },\n {\n label: formatMessage({\n id: getTrad('PopUpForm.Email.options.message.label'),\n defaultMessage: 'Message',\n }),\n name: 'options.message',\n size: 12,\n type: 'text',\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n m={size}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\">Cancel</Button>\n </Modal.Close>\n <Button loading={isSubmitting} type=\"submit\">\n Finish\n </Button>\n </Modal.Footer>\n </>\n );\n }}\n </Form>\n </Modal.Content>\n </Modal.Root>\n );\n};\n\nEmailForm.defaultProps = {\n template: {},\n};\n\nEmailForm.propTypes = {\n template: PropTypes.shape({\n display: PropTypes.string,\n icon: PropTypes.string,\n options: PropTypes.shape({\n from: PropTypes.shape({\n name: PropTypes.string,\n email: PropTypes.string,\n }),\n message: PropTypes.string,\n object: PropTypes.string,\n response_email: PropTypes.string,\n }),\n }),\n open: PropTypes.bool.isRequired,\n onSubmit: PropTypes.func.isRequired,\n onToggle: PropTypes.func.isRequired,\n};\n\nexport default EmailForm;\n"],"names":["EmailForm","template","onToggle","open","onSubmit","formatMessage","useIntl","_jsx","Modal","Root","onOpenChange","_jsxs","Content","Header","Breadcrumbs","label","id","getTrad","defaultMessage","display","Crumb","isCurrent","VisuallyHidden","Title","Form","initialValues","validationSchema","schema","isSubmitting","_Fragment","Body","Grid","gap","name","size","type","map","field","Item","m","xs","direction","alignItems","InputRenderer","Footer","Close","Button","variant","loading","defaultProps","propTypes","PropTypes","shape","string","icon","options","from","email","message","object","response_email","bool","isRequired","func"],"mappings":"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"}
1
+ {"version":3,"file":"EmailForm.mjs","sources":["../../../../../admin/src/pages/EmailTemplates/components/EmailForm.jsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Grid, Modal, Breadcrumbs, Crumb, VisuallyHidden } from '@strapi/design-system';\nimport { Form, InputRenderer } from '@strapi/strapi/admin';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../utils';\nimport schema from '../utils/schema';\n\nconst EMPTY_TEMPLATE = {};\n\nconst EmailForm = ({ template = EMPTY_TEMPLATE, onToggle, open, onSubmit }) => {\n const { formatMessage } = useIntl();\n\n return (\n <Modal.Root open={open} onOpenChange={onToggle}>\n <Modal.Content>\n <Modal.Header>\n <Breadcrumbs\n label={`${formatMessage({\n id: getTrad('PopUpForm.header.edit.email-templates'),\n defaultMessage: 'Edit email template',\n })}, ${\n template.display\n ? formatMessage({\n id: getTrad(template.display),\n defaultMessage: template.display,\n })\n : ''\n }`}\n >\n <Crumb>\n {formatMessage({\n id: getTrad('PopUpForm.header.edit.email-templates'),\n defaultMessage: 'Edit email template',\n })}\n </Crumb>\n <Crumb isCurrent>\n {template.display\n ? formatMessage({ id: getTrad(template.display), defaultMessage: template.display })\n : ''}\n </Crumb>\n </Breadcrumbs>\n <VisuallyHidden>\n <Modal.Title>\n {`${formatMessage({\n id: getTrad('PopUpForm.header.edit.email-templates'),\n defaultMessage: 'Edit email template',\n })}, ${template.display ? formatMessage({ id: getTrad(template.display), defaultMessage: template.display }) : ''}`}\n </Modal.Title>\n </VisuallyHidden>\n </Modal.Header>\n <Form onSubmit={onSubmit} initialValues={template} validationSchema={schema}>\n {({ isSubmitting }) => {\n return (\n <>\n <Modal.Body>\n <Grid.Root gap={5}>\n {[\n {\n label: formatMessage({\n id: getTrad('PopUpForm.Email.options.from.name.label'),\n defaultMessage: 'Shipper name',\n }),\n name: 'options.from.name',\n size: 6,\n type: 'string',\n },\n {\n label: formatMessage({\n id: getTrad('PopUpForm.Email.options.from.email.label'),\n defaultMessage: 'Shipper email',\n }),\n name: 'options.from.email',\n size: 6,\n type: 'string',\n },\n {\n label: formatMessage({\n id: getTrad('PopUpForm.Email.options.response_email.label'),\n defaultMessage: 'Response email',\n }),\n name: 'options.response_email',\n size: 6,\n type: 'string',\n },\n {\n label: formatMessage({\n id: getTrad('PopUpForm.Email.options.object.label'),\n defaultMessage: 'Subject',\n }),\n name: 'options.object',\n size: 6,\n type: 'string',\n },\n {\n label: formatMessage({\n id: getTrad('PopUpForm.Email.options.message.label'),\n defaultMessage: 'Message',\n }),\n name: 'options.message',\n size: 12,\n type: 'text',\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n m={size}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\">Cancel</Button>\n </Modal.Close>\n <Button loading={isSubmitting} type=\"submit\">\n Finish\n </Button>\n </Modal.Footer>\n </>\n );\n }}\n </Form>\n </Modal.Content>\n </Modal.Root>\n );\n};\n\nEmailForm.defaultProps = {\n template: {},\n};\n\nEmailForm.propTypes = {\n template: PropTypes.shape({\n display: PropTypes.string,\n icon: PropTypes.string,\n options: PropTypes.shape({\n from: PropTypes.shape({\n name: PropTypes.string,\n email: PropTypes.string,\n }),\n message: PropTypes.string,\n object: PropTypes.string,\n response_email: PropTypes.string,\n }),\n }),\n open: PropTypes.bool.isRequired,\n onSubmit: PropTypes.func.isRequired,\n onToggle: PropTypes.func.isRequired,\n};\n\nexport default EmailForm;\n"],"names":["EMPTY_TEMPLATE","EmailForm","template","onToggle","open","onSubmit","formatMessage","useIntl","_jsx","Modal","Root","onOpenChange","_jsxs","Content","Header","Breadcrumbs","label","id","getTrad","defaultMessage","display","Crumb","isCurrent","VisuallyHidden","Title","Form","initialValues","validationSchema","schema","isSubmitting","_Fragment","Body","Grid","gap","name","size","type","map","field","Item","m","xs","direction","alignItems","InputRenderer","Footer","Close","Button","variant","loading","defaultProps","propTypes","PropTypes","shape","string","icon","options","from","email","message","object","response_email","bool","isRequired","func"],"mappings":"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"}
@@ -48,7 +48,7 @@ var es = {
48
48
  "PopUpForm.Providers.key.label": "ID de cliente",
49
49
  "PopUpForm.Providers.key.placeholder": "TEXTO",
50
50
  "PopUpForm.Providers.redirectURL.front-end.label": "La URL de redireccionamiento a su aplicación front-end",
51
- "PopUpForm.Providers.redirectURL.label": "La URL de redireccionamiento para agregar en las configuraciones de su aplicación de {proveedor}",
51
+ "PopUpForm.Providers.redirectURL.label": "La URL de redireccionamiento para agregar en las configuraciones de su aplicación de {provider}",
52
52
  "PopUpForm.Providers.secret.label": "Secreto Cliente",
53
53
  "PopUpForm.Providers.secret.placeholder": "TEXTO",
54
54
  "PopUpForm.Providers.subdomain.label": "URI de host (subdominio)",
@@ -46,7 +46,7 @@ var es = {
46
46
  "PopUpForm.Providers.key.label": "ID de cliente",
47
47
  "PopUpForm.Providers.key.placeholder": "TEXTO",
48
48
  "PopUpForm.Providers.redirectURL.front-end.label": "La URL de redireccionamiento a su aplicación front-end",
49
- "PopUpForm.Providers.redirectURL.label": "La URL de redireccionamiento para agregar en las configuraciones de su aplicación de {proveedor}",
49
+ "PopUpForm.Providers.redirectURL.label": "La URL de redireccionamiento para agregar en las configuraciones de su aplicación de {provider}",
50
50
  "PopUpForm.Providers.secret.label": "Secreto Cliente",
51
51
  "PopUpForm.Providers.secret.placeholder": "TEXTO",
52
52
  "PopUpForm.Providers.subdomain.label": "URI de host (subdominio)",
@@ -48,7 +48,7 @@ var sv = {
48
48
  "PopUpForm.Providers.key.label": "Klient ID",
49
49
  "PopUpForm.Providers.key.placeholder": "TEXT",
50
50
  "PopUpForm.Providers.redirectURL.front-end.label": "Omdirigerings-URL: en till din front-end-app",
51
- "PopUpForm.Providers.redirectURL.label": "Webbadressen för omdirigering som ska läggas till i {Provider} applikationskonfigurationer",
51
+ "PopUpForm.Providers.redirectURL.label": "Webbadressen för omdirigering som ska läggas till i {provider} applikationskonfigurationer",
52
52
  "PopUpForm.Providers.secret.label": "Klient hemlighet",
53
53
  "PopUpForm.Providers.secret.placeholder": "TEXT",
54
54
  "PopUpForm.Providers.subdomain.label": "Host URI (Subdomän)",
@@ -46,7 +46,7 @@ var sv = {
46
46
  "PopUpForm.Providers.key.label": "Klient ID",
47
47
  "PopUpForm.Providers.key.placeholder": "TEXT",
48
48
  "PopUpForm.Providers.redirectURL.front-end.label": "Omdirigerings-URL: en till din front-end-app",
49
- "PopUpForm.Providers.redirectURL.label": "Webbadressen för omdirigering som ska läggas till i {Provider} applikationskonfigurationer",
49
+ "PopUpForm.Providers.redirectURL.label": "Webbadressen för omdirigering som ska läggas till i {provider} applikationskonfigurationer",
50
50
  "PopUpForm.Providers.secret.label": "Klient hemlighet",
51
51
  "PopUpForm.Providers.secret.placeholder": "TEXT",
52
52
  "PopUpForm.Providers.subdomain.label": "Host URI (Subdomän)",
@@ -48,7 +48,7 @@ var uk = {
48
48
  "PopUpForm.Providers.key.label": "Client ID",
49
49
  "PopUpForm.Providers.key.placeholder": "TEXT",
50
50
  "PopUpForm.Providers.redirectURL.front-end.label": "URL переадресації для вашего front-end додатку",
51
- "PopUpForm.Providers.redirectURL.label": "URL -адреса для переадресації, щоб додати у ваші конфігурації програми {постачальник}",
51
+ "PopUpForm.Providers.redirectURL.label": "URL-адреса для переадресації, щоб додати у ваші конфігурації програми {provider}",
52
52
  "PopUpForm.Providers.secret.label": "Client Secret",
53
53
  "PopUpForm.Providers.secret.placeholder": "TEXT",
54
54
  "PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)",
@@ -46,7 +46,7 @@ var uk = {
46
46
  "PopUpForm.Providers.key.label": "Client ID",
47
47
  "PopUpForm.Providers.key.placeholder": "TEXT",
48
48
  "PopUpForm.Providers.redirectURL.front-end.label": "URL переадресації для вашего front-end додатку",
49
- "PopUpForm.Providers.redirectURL.label": "URL -адреса для переадресації, щоб додати у ваші конфігурації програми {постачальник}",
49
+ "PopUpForm.Providers.redirectURL.label": "URL-адреса для переадресації, щоб додати у ваші конфігурації програми {provider}",
50
50
  "PopUpForm.Providers.secret.label": "Client Secret",
51
51
  "PopUpForm.Providers.secret.placeholder": "TEXT",
52
52
  "PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)",
@@ -123,14 +123,14 @@ function requireRole() {
123
123
  }, []);
124
124
  });
125
125
  });
126
- const oldActions = role.permissions.map(({ action })=>action);
126
+ const oldActions = new Set(role.permissions.map(({ action })=>action));
127
127
  const toDelete = role.permissions.reduce((acc, permission)=>{
128
128
  if (!newActions.includes(permission.action)) {
129
129
  acc.push(permission);
130
130
  }
131
131
  return acc;
132
132
  }, []);
133
- const toCreate = newActions.filter((action)=>!oldActions.includes(action)).map((action)=>({
133
+ const toCreate = newActions.filter((action)=>!oldActions.has(action)).map((action)=>({
134
134
  action,
135
135
  role: role.id
136
136
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"role.js","sources":["../../../server/src/services/role.js"],"sourcesContent":["'use strict';\n\nconst _ = require('lodash');\nconst { NotFoundError } = require('@strapi/utils').errors;\nconst { getService } = require('../utils');\n\nmodule.exports = ({ strapi }) => ({\n async createRole(params) {\n if (!params.type) {\n params.type = _.snakeCase(_.deburr(_.toLower(params.name)));\n }\n\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .create({ data: _.omit(params, ['users', 'permissions']) });\n\n const createPromises = _.flatMap(params.permissions, (type, typeName) => {\n return _.flatMap(type.controllers, (controller, controllerName) => {\n return _.reduce(\n controller,\n (acc, action, actionName) => {\n const { enabled /* policy */ } = action;\n\n if (enabled) {\n const actionID = `${typeName}.${controllerName}.${actionName}`;\n\n acc.push(\n strapi.db\n .query('plugin::users-permissions.permission')\n .create({ data: { action: actionID, role: role.id } })\n );\n }\n\n return acc;\n },\n []\n );\n });\n });\n\n await Promise.all(createPromises);\n },\n\n async findOne(roleID) {\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { id: roleID }, populate: ['permissions'] });\n\n if (!role) {\n throw new NotFoundError('Role not found');\n }\n\n const allActions = getService('users-permissions').getActions();\n\n // Group by `type`.\n role.permissions.forEach((permission) => {\n const [type, controller, action] = permission.action.split('.');\n\n _.set(allActions, `${type}.controllers.${controller}.${action}`, {\n enabled: true,\n policy: '',\n });\n });\n\n return {\n ...role,\n permissions: allActions,\n };\n },\n\n async find() {\n const roles = await strapi.db\n .query('plugin::users-permissions.role')\n .findMany({ sort: ['name'] });\n\n for (const role of roles) {\n role.nb_users = await strapi.db\n .query('plugin::users-permissions.user')\n .count({ where: { role: { id: role.id } } });\n }\n\n return roles;\n },\n\n async updateRole(roleID, data) {\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { id: roleID }, populate: ['permissions'] });\n\n if (!role) {\n throw new NotFoundError('Role not found');\n }\n\n await strapi.db.query('plugin::users-permissions.role').update({\n where: { id: roleID },\n data: _.pick(data, ['name', 'description']),\n });\n\n const { permissions } = data;\n\n const newActions = _.flatMap(permissions, (type, typeName) => {\n return _.flatMap(type.controllers, (controller, controllerName) => {\n return _.reduce(\n controller,\n (acc, action, actionName) => {\n const { enabled /* policy */ } = action;\n\n if (enabled) {\n acc.push(`${typeName}.${controllerName}.${actionName}`);\n }\n\n return acc;\n },\n []\n );\n });\n });\n\n const oldActions = role.permissions.map(({ action }) => action);\n\n const toDelete = role.permissions.reduce((acc, permission) => {\n if (!newActions.includes(permission.action)) {\n acc.push(permission);\n }\n return acc;\n }, []);\n\n const toCreate = newActions\n .filter((action) => !oldActions.includes(action))\n .map((action) => ({ action, role: role.id }));\n\n await Promise.all(\n toDelete.map((permission) =>\n strapi.db\n .query('plugin::users-permissions.permission')\n .delete({ where: { id: permission.id } })\n )\n );\n\n await Promise.all(\n toCreate.map((permissionInfo) =>\n strapi.db.query('plugin::users-permissions.permission').create({ data: permissionInfo })\n )\n );\n },\n\n async deleteRole(roleID, publicRoleID) {\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { id: roleID }, populate: ['users', 'permissions'] });\n\n if (!role) {\n throw new NotFoundError('Role not found');\n }\n\n // Move users to guest role.\n await Promise.all(\n role.users.map((user) => {\n return strapi.db.query('plugin::users-permissions.user').update({\n where: { id: user.id },\n data: { role: publicRoleID },\n });\n })\n );\n\n // Remove permissions related to this role.\n // TODO: use delete many\n await Promise.all(\n role.permissions.map((permission) => {\n return strapi.db.query('plugin::users-permissions.permission').delete({\n where: { id: permission.id },\n });\n })\n );\n\n // Delete the role.\n await strapi.db.query('plugin::users-permissions.role').delete({ where: { id: roleID } });\n },\n});\n"],"names":["_","require$$0","NotFoundError","require$$1","errors","getService","require$$2","role","strapi","createRole","params","type","snakeCase","deburr","toLower","name","db","query","create","data","omit","createPromises","flatMap","permissions","typeName","controllers","controller","controllerName","reduce","acc","action","actionName","enabled","actionID","push","id","Promise","all","findOne","roleID","where","populate","allActions","getActions","forEach","permission","split","set","policy","find","roles","findMany","sort","nb_users","count","updateRole","update","pick","newActions","oldActions","map","toDelete","includes","toCreate","filter","delete","permissionInfo","deleteRole","publicRoleID","users","user"],"mappings":"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"}
1
+ {"version":3,"file":"role.js","sources":["../../../server/src/services/role.js"],"sourcesContent":["'use strict';\n\nconst _ = require('lodash');\nconst { NotFoundError } = require('@strapi/utils').errors;\nconst { getService } = require('../utils');\n\nmodule.exports = ({ strapi }) => ({\n async createRole(params) {\n if (!params.type) {\n params.type = _.snakeCase(_.deburr(_.toLower(params.name)));\n }\n\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .create({ data: _.omit(params, ['users', 'permissions']) });\n\n const createPromises = _.flatMap(params.permissions, (type, typeName) => {\n return _.flatMap(type.controllers, (controller, controllerName) => {\n return _.reduce(\n controller,\n (acc, action, actionName) => {\n const { enabled /* policy */ } = action;\n\n if (enabled) {\n const actionID = `${typeName}.${controllerName}.${actionName}`;\n\n acc.push(\n strapi.db\n .query('plugin::users-permissions.permission')\n .create({ data: { action: actionID, role: role.id } })\n );\n }\n\n return acc;\n },\n []\n );\n });\n });\n\n await Promise.all(createPromises);\n },\n\n async findOne(roleID) {\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { id: roleID }, populate: ['permissions'] });\n\n if (!role) {\n throw new NotFoundError('Role not found');\n }\n\n const allActions = getService('users-permissions').getActions();\n\n // Group by `type`.\n role.permissions.forEach((permission) => {\n const [type, controller, action] = permission.action.split('.');\n\n _.set(allActions, `${type}.controllers.${controller}.${action}`, {\n enabled: true,\n policy: '',\n });\n });\n\n return {\n ...role,\n permissions: allActions,\n };\n },\n\n async find() {\n const roles = await strapi.db\n .query('plugin::users-permissions.role')\n .findMany({ sort: ['name'] });\n\n for (const role of roles) {\n role.nb_users = await strapi.db\n .query('plugin::users-permissions.user')\n .count({ where: { role: { id: role.id } } });\n }\n\n return roles;\n },\n\n async updateRole(roleID, data) {\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { id: roleID }, populate: ['permissions'] });\n\n if (!role) {\n throw new NotFoundError('Role not found');\n }\n\n await strapi.db.query('plugin::users-permissions.role').update({\n where: { id: roleID },\n data: _.pick(data, ['name', 'description']),\n });\n\n const { permissions } = data;\n\n const newActions = _.flatMap(permissions, (type, typeName) => {\n return _.flatMap(type.controllers, (controller, controllerName) => {\n return _.reduce(\n controller,\n (acc, action, actionName) => {\n const { enabled /* policy */ } = action;\n\n if (enabled) {\n acc.push(`${typeName}.${controllerName}.${actionName}`);\n }\n\n return acc;\n },\n []\n );\n });\n });\n\n const oldActions = new Set(role.permissions.map(({ action }) => action));\n\n const toDelete = role.permissions.reduce((acc, permission) => {\n if (!newActions.includes(permission.action)) {\n acc.push(permission);\n }\n return acc;\n }, []);\n\n const toCreate = newActions\n .filter((action) => !oldActions.has(action))\n .map((action) => ({ action, role: role.id }));\n\n await Promise.all(\n toDelete.map((permission) =>\n strapi.db\n .query('plugin::users-permissions.permission')\n .delete({ where: { id: permission.id } })\n )\n );\n\n await Promise.all(\n toCreate.map((permissionInfo) =>\n strapi.db.query('plugin::users-permissions.permission').create({ data: permissionInfo })\n )\n );\n },\n\n async deleteRole(roleID, publicRoleID) {\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { id: roleID }, populate: ['users', 'permissions'] });\n\n if (!role) {\n throw new NotFoundError('Role not found');\n }\n\n // Move users to guest role.\n await Promise.all(\n role.users.map((user) => {\n return strapi.db.query('plugin::users-permissions.user').update({\n where: { id: user.id },\n data: { role: publicRoleID },\n });\n })\n );\n\n // Remove permissions related to this role.\n // TODO: use delete many\n await Promise.all(\n role.permissions.map((permission) => {\n return strapi.db.query('plugin::users-permissions.permission').delete({\n where: { id: permission.id },\n });\n })\n );\n\n // Delete the role.\n await strapi.db.query('plugin::users-permissions.role').delete({ where: { id: roleID } });\n },\n});\n"],"names":["_","require$$0","NotFoundError","require$$1","errors","getService","require$$2","role","strapi","createRole","params","type","snakeCase","deburr","toLower","name","db","query","create","data","omit","createPromises","flatMap","permissions","typeName","controllers","controller","controllerName","reduce","acc","action","actionName","enabled","actionID","push","id","Promise","all","findOne","roleID","where","populate","allActions","getActions","forEach","permission","split","set","policy","find","roles","findMany","sort","nb_users","count","updateRole","update","pick","newActions","oldActions","Set","map","toDelete","includes","toCreate","filter","has","delete","permissionInfo","deleteRole","publicRoleID","users","user"],"mappings":";;;;;;;;;;;;;;;;AAEA,IAAA,MAAMA,CAAAA,GAAIC,2BAAAA;AACV,IAAA,MAAM,EAAEC,aAAa,EAAE,GAAGC,4BAAyBC,MAAM;IACzD,MAAM,EAAEC,UAAU,EAAE,GAAGC,eAAAA,EAAAA;AAEvBC,IAAAA,IAAAA,GAAiB,CAAC,EAAEC,MAAM,EAAE,IAAM;AAChC,YAAA,MAAMC,YAAWC,MAAM,EAAA;gBACrB,IAAI,CAACA,MAAAA,CAAOC,IAAI,EAAE;AAChBD,oBAAAA,MAAAA,CAAOC,IAAI,GAAGX,CAAAA,CAAEY,SAAS,CAACZ,CAAAA,CAAEa,MAAM,CAACb,CAAAA,CAAEc,OAAO,CAACJ,MAAAA,CAAOK,IAAI,CAAA,CAAA,CAAA;AAC9D,gBAAA;gBAEI,MAAMR,IAAAA,GAAO,MAAMC,MAAAA,CAAOQ,EAAA,CACvBC,KAAK,CAAC,gCAAA,CAAA,CACNC,MAAM,CAAC;oBAAEC,IAAAA,EAAMnB,CAAAA,CAAEoB,IAAI,CAACV,MAAAA,EAAQ;AAAC,wBAAA,OAAA;AAAS,wBAAA;AAAc,qBAAA;;gBAEzD,MAAMW,cAAAA,GAAiBrB,EAAEsB,OAAO,CAACZ,OAAOa,WAAW,EAAE,CAACZ,IAAAA,EAAMa,QAAAA,GAAAA;AAC1D,oBAAA,OAAOxB,EAAEsB,OAAO,CAACX,KAAKc,WAAW,EAAE,CAACC,UAAAA,EAAYC,cAAAA,GAAAA;AAC9C,wBAAA,OAAO3B,EAAE4B,MAAM,CACbF,UAAAA,EACA,CAACG,KAAKC,MAAAA,EAAQC,UAAAA,GAAAA;AACZ,4BAAA,MAAM,EAAEC,OAAO,eAAe,GAAGF,MAAAA;AAEjC,4BAAA,IAAIE,OAAAA,EAAS;gCACX,MAAMC,QAAAA,GAAW,GAAGT,QAAAA,CAAS,CAAC,EAAEG,cAAAA,CAAe,CAAC,EAAEI,UAAAA,CAAAA,CAAY;gCAE9DF,GAAAA,CAAIK,IAAI,CACN1B,MAAAA,CAAOQ,EAAA,CACJC,KAAK,CAAC,sCAAA,CAAA,CACNC,MAAM,CAAC;oCAAEC,IAAAA,EAAM;wCAAEW,MAAAA,EAAQG,QAAAA;AAAU1B,wCAAAA,IAAAA,EAAMA,KAAK4B;;AAAI,iCAAA,CAAA,CAAA;AAErE,4BAAA;4BAEY,OAAON,GAAAA;AACnB,wBAAA,CAAA,EACU,EAAA,CAAA;AAEV,oBAAA,CAAA,CAAA;AACA,gBAAA,CAAA,CAAA;gBAEI,MAAMO,OAAAA,CAAQC,GAAG,CAAChB,cAAAA,CAAAA;AACtB,YAAA,CAAA;AAEE,YAAA,MAAMiB,SAAQC,MAAM,EAAA;gBAClB,MAAMhC,IAAAA,GAAO,MAAMC,MAAAA,CAAOQ,EAAA,CACvBC,KAAK,CAAC,gCAAA,CAAA,CACNqB,OAAO,CAAC;oBAAEE,KAAAA,EAAO;wBAAEL,EAAAA,EAAII;AAAM,qBAAA;oBAAIE,QAAAA,EAAU;AAAC,wBAAA;AAAc;;AAE7D,gBAAA,IAAI,CAAClC,IAAAA,EAAM;AACT,oBAAA,MAAM,IAAIL,aAAAA,CAAc,gBAAA,CAAA;AAC9B,gBAAA;gBAEI,MAAMwC,UAAAA,GAAarC,UAAAA,CAAW,mBAAA,CAAA,CAAqBsC,UAAU,EAAA;;AAG7DpC,gBAAAA,IAAAA,CAAKgB,WAAW,CAACqB,OAAO,CAAC,CAACC,UAAAA,GAAAA;oBACxB,MAAM,CAAClC,MAAMe,UAAAA,EAAYI,MAAAA,CAAO,GAAGe,UAAAA,CAAWf,MAAM,CAACgB,KAAK,CAAC,GAAA,CAAA;oBAE3D9C,CAAAA,CAAE+C,GAAG,CAACL,UAAAA,EAAY,CAAA,EAAG/B,IAAAA,CAAK,aAAa,EAAEe,UAAAA,CAAW,CAAC,EAAEI,MAAAA,CAAAA,CAAQ,EAAE;wBAC/DE,OAAAA,EAAS,IAAA;wBACTgB,MAAAA,EAAQ;AAChB,qBAAA,CAAA;AACA,gBAAA,CAAA,CAAA;gBAEI,OAAO;AACL,oBAAA,GAAGzC,IAAI;oBACPgB,WAAAA,EAAamB;AACnB,iBAAA;AACA,YAAA,CAAA;YAEE,MAAMO,IAAAA,CAAAA,GAAAA;gBACJ,MAAMC,KAAAA,GAAQ,MAAM1C,MAAAA,CAAOQ,EAAA,CACxBC,KAAK,CAAC,gCAAA,CAAA,CACNkC,QAAQ,CAAC;oBAAEC,IAAAA,EAAM;AAAC,wBAAA;AAAO;AAAA,iBAAA,CAAA;gBAE5B,KAAK,MAAM7C,QAAQ2C,KAAAA,CAAO;oBACxB3C,IAAAA,CAAK8C,QAAQ,GAAG,MAAM7C,MAAAA,CAAOQ,EAAA,CAC1BC,KAAK,CAAC,gCAAA,CAAA,CACNqC,KAAK,CAAC;wBAAEd,KAAAA,EAAO;4BAAEjC,IAAAA,EAAM;AAAE4B,gCAAAA,EAAAA,EAAI5B,KAAK4B;AAAE;AAAE;;AAC/C,gBAAA;gBAEI,OAAOe,KAAAA;AACX,YAAA,CAAA;YAEE,MAAMK,UAAAA,CAAAA,CAAWhB,MAAM,EAAEpB,IAAI,EAAA;gBAC3B,MAAMZ,IAAAA,GAAO,MAAMC,MAAAA,CAAOQ,EAAA,CACvBC,KAAK,CAAC,gCAAA,CAAA,CACNqB,OAAO,CAAC;oBAAEE,KAAAA,EAAO;wBAAEL,EAAAA,EAAII;AAAM,qBAAA;oBAAIE,QAAAA,EAAU;AAAC,wBAAA;AAAc;;AAE7D,gBAAA,IAAI,CAAClC,IAAAA,EAAM;AACT,oBAAA,MAAM,IAAIL,aAAAA,CAAc,gBAAA,CAAA;AAC9B,gBAAA;AAEI,gBAAA,MAAMM,OAAOQ,EAAE,CAACC,KAAK,CAAC,gCAAA,CAAA,CAAkCuC,MAAM,CAAC;oBAC7DhB,KAAAA,EAAO;wBAAEL,EAAAA,EAAII;AAAM,qBAAA;oBACnBpB,IAAAA,EAAMnB,CAAAA,CAAEyD,IAAI,CAACtC,IAAAA,EAAM;AAAC,wBAAA,MAAA;AAAQ,wBAAA;AAAc,qBAAA;AAChD,iBAAA,CAAA;gBAEI,MAAM,EAAEI,WAAW,EAAE,GAAGJ,IAAAA;AAExB,gBAAA,MAAMuC,aAAa1D,CAAAA,CAAEsB,OAAO,CAACC,WAAAA,EAAa,CAACZ,IAAAA,EAAMa,QAAAA,GAAAA;AAC/C,oBAAA,OAAOxB,EAAEsB,OAAO,CAACX,KAAKc,WAAW,EAAE,CAACC,UAAAA,EAAYC,cAAAA,GAAAA;AAC9C,wBAAA,OAAO3B,EAAE4B,MAAM,CACbF,UAAAA,EACA,CAACG,KAAKC,MAAAA,EAAQC,UAAAA,GAAAA;AACZ,4BAAA,MAAM,EAAEC,OAAO,eAAe,GAAGF,MAAAA;AAEjC,4BAAA,IAAIE,OAAAA,EAAS;gCACXH,GAAAA,CAAIK,IAAI,CAAC,CAAA,EAAGV,QAAAA,CAAS,CAAC,EAAEG,cAAAA,CAAe,CAAC,EAAEI,UAAAA,CAAAA,CAAY,CAAA;AACpE,4BAAA;4BAEY,OAAOF,GAAAA;AACnB,wBAAA,CAAA,EACU,EAAA,CAAA;AAEV,oBAAA,CAAA,CAAA;AACA,gBAAA,CAAA,CAAA;AAEI,gBAAA,MAAM8B,UAAAA,GAAa,IAAIC,GAAAA,CAAIrD,IAAAA,CAAKgB,WAAW,CAACsC,GAAG,CAAC,CAAC,EAAE/B,MAAM,EAAE,GAAKA,MAAAA,CAAAA,CAAAA;AAEhE,gBAAA,MAAMgC,WAAWvD,IAAAA,CAAKgB,WAAW,CAACK,MAAM,CAAC,CAACC,GAAAA,EAAKgB,UAAAA,GAAAA;AAC7C,oBAAA,IAAI,CAACa,UAAAA,CAAWK,QAAQ,CAAClB,UAAAA,CAAWf,MAAM,CAAA,EAAG;AAC3CD,wBAAAA,GAAAA,CAAIK,IAAI,CAACW,UAAAA,CAAAA;AACjB,oBAAA;oBACM,OAAOhB,GAAAA;AACb,gBAAA,CAAA,EAAO,EAAE,CAAA;AAEL,gBAAA,MAAMmC,QAAAA,GAAWN,UAAAA,CACdO,MAAM,CAAC,CAACnC,MAAAA,GAAW,CAAC6B,UAAAA,CAAWO,GAAG,CAACpC,MAAAA,CAAAA,CAAAA,CACnC+B,GAAG,CAAC,CAAC/B,UAAY;AAAEA,wBAAAA,MAAAA;AAAQvB,wBAAAA,IAAAA,EAAMA,KAAK4B;qBAAE,CAAA,CAAA;AAE3C,gBAAA,MAAMC,OAAAA,CAAQC,GAAG,CACfyB,QAAAA,CAASD,GAAG,CAAC,CAAChB,UAAAA,GACZrC,MAAAA,CAAOQ,EAAA,CACJC,KAAK,CAAC,sCAAA,CAAA,CACNkD,MAAM,CAAC;wBAAE3B,KAAAA,EAAO;AAAEL,4BAAAA,EAAAA,EAAIU,WAAWV;AAAE;AAAE,qBAAA,CAAA,CAAA,CAAA;AAI5C,gBAAA,MAAMC,OAAAA,CAAQC,GAAG,CACf2B,QAAAA,CAASH,GAAG,CAAC,CAACO,cAAAA,GACZ5D,MAAAA,CAAOQ,EAAE,CAACC,KAAK,CAAC,sCAAA,CAAA,CAAwCC,MAAM,CAAC;wBAAEC,IAAAA,EAAMiD;AAAc,qBAAA,CAAA,CAAA,CAAA;AAG7F,YAAA,CAAA;YAEE,MAAMC,UAAAA,CAAAA,CAAW9B,MAAM,EAAE+B,YAAY,EAAA;gBACnC,MAAM/D,IAAAA,GAAO,MAAMC,MAAAA,CAAOQ,EAAA,CACvBC,KAAK,CAAC,gCAAA,CAAA,CACNqB,OAAO,CAAC;oBAAEE,KAAAA,EAAO;wBAAEL,EAAAA,EAAII;;oBAAUE,QAAAA,EAAU;AAAC,wBAAA,OAAA;AAAS,wBAAA;AAAc;;AAEtE,gBAAA,IAAI,CAAClC,IAAAA,EAAM;AACT,oBAAA,MAAM,IAAIL,aAAAA,CAAc,gBAAA,CAAA;AAC9B,gBAAA;;gBAGI,MAAMkC,OAAAA,CAAQC,GAAG,CACf9B,IAAAA,CAAKgE,KAAK,CAACV,GAAG,CAAC,CAACW,IAAAA,GAAAA;AACd,oBAAA,OAAOhE,OAAOQ,EAAE,CAACC,KAAK,CAAC,gCAAA,CAAA,CAAkCuC,MAAM,CAAC;wBAC9DhB,KAAAA,EAAO;AAAEL,4BAAAA,EAAAA,EAAIqC,KAAKrC;AAAE,yBAAA;wBACpBhB,IAAAA,EAAM;4BAAEZ,IAAAA,EAAM+D;AAAY;AACpC,qBAAA,CAAA;AACA,gBAAA,CAAA,CAAA,CAAA;;;gBAKI,MAAMlC,OAAAA,CAAQC,GAAG,CACf9B,IAAAA,CAAKgB,WAAW,CAACsC,GAAG,CAAC,CAAChB,UAAAA,GAAAA;AACpB,oBAAA,OAAOrC,OAAOQ,EAAE,CAACC,KAAK,CAAC,sCAAA,CAAA,CAAwCkD,MAAM,CAAC;wBACpE3B,KAAAA,EAAO;AAAEL,4BAAAA,EAAAA,EAAIU,WAAWV;AAAE;AACpC,qBAAA,CAAA;AACA,gBAAA,CAAA,CAAA,CAAA;;AAII,gBAAA,MAAM3B,OAAOQ,EAAE,CAACC,KAAK,CAAC,gCAAA,CAAA,CAAkCkD,MAAM,CAAC;oBAAE3B,KAAAA,EAAO;wBAAEL,EAAAA,EAAII;AAAM;AAAE,iBAAA,CAAA;AAC1F,YAAA;SACA,CAAA;;;;;;"}
@@ -116,14 +116,14 @@ function requireRole() {
116
116
  }, []);
117
117
  });
118
118
  });
119
- const oldActions = role.permissions.map(({ action })=>action);
119
+ const oldActions = new Set(role.permissions.map(({ action })=>action));
120
120
  const toDelete = role.permissions.reduce((acc, permission)=>{
121
121
  if (!newActions.includes(permission.action)) {
122
122
  acc.push(permission);
123
123
  }
124
124
  return acc;
125
125
  }, []);
126
- const toCreate = newActions.filter((action)=>!oldActions.includes(action)).map((action)=>({
126
+ const toCreate = newActions.filter((action)=>!oldActions.has(action)).map((action)=>({
127
127
  action,
128
128
  role: role.id
129
129
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"role.mjs","sources":["../../../server/src/services/role.js"],"sourcesContent":["'use strict';\n\nconst _ = require('lodash');\nconst { NotFoundError } = require('@strapi/utils').errors;\nconst { getService } = require('../utils');\n\nmodule.exports = ({ strapi }) => ({\n async createRole(params) {\n if (!params.type) {\n params.type = _.snakeCase(_.deburr(_.toLower(params.name)));\n }\n\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .create({ data: _.omit(params, ['users', 'permissions']) });\n\n const createPromises = _.flatMap(params.permissions, (type, typeName) => {\n return _.flatMap(type.controllers, (controller, controllerName) => {\n return _.reduce(\n controller,\n (acc, action, actionName) => {\n const { enabled /* policy */ } = action;\n\n if (enabled) {\n const actionID = `${typeName}.${controllerName}.${actionName}`;\n\n acc.push(\n strapi.db\n .query('plugin::users-permissions.permission')\n .create({ data: { action: actionID, role: role.id } })\n );\n }\n\n return acc;\n },\n []\n );\n });\n });\n\n await Promise.all(createPromises);\n },\n\n async findOne(roleID) {\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { id: roleID }, populate: ['permissions'] });\n\n if (!role) {\n throw new NotFoundError('Role not found');\n }\n\n const allActions = getService('users-permissions').getActions();\n\n // Group by `type`.\n role.permissions.forEach((permission) => {\n const [type, controller, action] = permission.action.split('.');\n\n _.set(allActions, `${type}.controllers.${controller}.${action}`, {\n enabled: true,\n policy: '',\n });\n });\n\n return {\n ...role,\n permissions: allActions,\n };\n },\n\n async find() {\n const roles = await strapi.db\n .query('plugin::users-permissions.role')\n .findMany({ sort: ['name'] });\n\n for (const role of roles) {\n role.nb_users = await strapi.db\n .query('plugin::users-permissions.user')\n .count({ where: { role: { id: role.id } } });\n }\n\n return roles;\n },\n\n async updateRole(roleID, data) {\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { id: roleID }, populate: ['permissions'] });\n\n if (!role) {\n throw new NotFoundError('Role not found');\n }\n\n await strapi.db.query('plugin::users-permissions.role').update({\n where: { id: roleID },\n data: _.pick(data, ['name', 'description']),\n });\n\n const { permissions } = data;\n\n const newActions = _.flatMap(permissions, (type, typeName) => {\n return _.flatMap(type.controllers, (controller, controllerName) => {\n return _.reduce(\n controller,\n (acc, action, actionName) => {\n const { enabled /* policy */ } = action;\n\n if (enabled) {\n acc.push(`${typeName}.${controllerName}.${actionName}`);\n }\n\n return acc;\n },\n []\n );\n });\n });\n\n const oldActions = role.permissions.map(({ action }) => action);\n\n const toDelete = role.permissions.reduce((acc, permission) => {\n if (!newActions.includes(permission.action)) {\n acc.push(permission);\n }\n return acc;\n }, []);\n\n const toCreate = newActions\n .filter((action) => !oldActions.includes(action))\n .map((action) => ({ action, role: role.id }));\n\n await Promise.all(\n toDelete.map((permission) =>\n strapi.db\n .query('plugin::users-permissions.permission')\n .delete({ where: { id: permission.id } })\n )\n );\n\n await Promise.all(\n toCreate.map((permissionInfo) =>\n strapi.db.query('plugin::users-permissions.permission').create({ data: permissionInfo })\n )\n );\n },\n\n async deleteRole(roleID, publicRoleID) {\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { id: roleID }, populate: ['users', 'permissions'] });\n\n if (!role) {\n throw new NotFoundError('Role not found');\n }\n\n // Move users to guest role.\n await Promise.all(\n role.users.map((user) => {\n return strapi.db.query('plugin::users-permissions.user').update({\n where: { id: user.id },\n data: { role: publicRoleID },\n });\n })\n );\n\n // Remove permissions related to this role.\n // TODO: use delete many\n await Promise.all(\n role.permissions.map((permission) => {\n return strapi.db.query('plugin::users-permissions.permission').delete({\n where: { id: permission.id },\n });\n })\n );\n\n // Delete the role.\n await strapi.db.query('plugin::users-permissions.role').delete({ where: { id: roleID } });\n },\n});\n"],"names":["_","require$$0","NotFoundError","require$$1","errors","getService","require$$2","role","strapi","createRole","params","type","snakeCase","deburr","toLower","name","db","query","create","data","omit","createPromises","flatMap","permissions","typeName","controllers","controller","controllerName","reduce","acc","action","actionName","enabled","actionID","push","id","Promise","all","findOne","roleID","where","populate","allActions","getActions","forEach","permission","split","set","policy","find","roles","findMany","sort","nb_users","count","updateRole","update","pick","newActions","oldActions","map","toDelete","includes","toCreate","filter","delete","permissionInfo","deleteRole","publicRoleID","users","user"],"mappings":"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"}
1
+ {"version":3,"file":"role.mjs","sources":["../../../server/src/services/role.js"],"sourcesContent":["'use strict';\n\nconst _ = require('lodash');\nconst { NotFoundError } = require('@strapi/utils').errors;\nconst { getService } = require('../utils');\n\nmodule.exports = ({ strapi }) => ({\n async createRole(params) {\n if (!params.type) {\n params.type = _.snakeCase(_.deburr(_.toLower(params.name)));\n }\n\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .create({ data: _.omit(params, ['users', 'permissions']) });\n\n const createPromises = _.flatMap(params.permissions, (type, typeName) => {\n return _.flatMap(type.controllers, (controller, controllerName) => {\n return _.reduce(\n controller,\n (acc, action, actionName) => {\n const { enabled /* policy */ } = action;\n\n if (enabled) {\n const actionID = `${typeName}.${controllerName}.${actionName}`;\n\n acc.push(\n strapi.db\n .query('plugin::users-permissions.permission')\n .create({ data: { action: actionID, role: role.id } })\n );\n }\n\n return acc;\n },\n []\n );\n });\n });\n\n await Promise.all(createPromises);\n },\n\n async findOne(roleID) {\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { id: roleID }, populate: ['permissions'] });\n\n if (!role) {\n throw new NotFoundError('Role not found');\n }\n\n const allActions = getService('users-permissions').getActions();\n\n // Group by `type`.\n role.permissions.forEach((permission) => {\n const [type, controller, action] = permission.action.split('.');\n\n _.set(allActions, `${type}.controllers.${controller}.${action}`, {\n enabled: true,\n policy: '',\n });\n });\n\n return {\n ...role,\n permissions: allActions,\n };\n },\n\n async find() {\n const roles = await strapi.db\n .query('plugin::users-permissions.role')\n .findMany({ sort: ['name'] });\n\n for (const role of roles) {\n role.nb_users = await strapi.db\n .query('plugin::users-permissions.user')\n .count({ where: { role: { id: role.id } } });\n }\n\n return roles;\n },\n\n async updateRole(roleID, data) {\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { id: roleID }, populate: ['permissions'] });\n\n if (!role) {\n throw new NotFoundError('Role not found');\n }\n\n await strapi.db.query('plugin::users-permissions.role').update({\n where: { id: roleID },\n data: _.pick(data, ['name', 'description']),\n });\n\n const { permissions } = data;\n\n const newActions = _.flatMap(permissions, (type, typeName) => {\n return _.flatMap(type.controllers, (controller, controllerName) => {\n return _.reduce(\n controller,\n (acc, action, actionName) => {\n const { enabled /* policy */ } = action;\n\n if (enabled) {\n acc.push(`${typeName}.${controllerName}.${actionName}`);\n }\n\n return acc;\n },\n []\n );\n });\n });\n\n const oldActions = new Set(role.permissions.map(({ action }) => action));\n\n const toDelete = role.permissions.reduce((acc, permission) => {\n if (!newActions.includes(permission.action)) {\n acc.push(permission);\n }\n return acc;\n }, []);\n\n const toCreate = newActions\n .filter((action) => !oldActions.has(action))\n .map((action) => ({ action, role: role.id }));\n\n await Promise.all(\n toDelete.map((permission) =>\n strapi.db\n .query('plugin::users-permissions.permission')\n .delete({ where: { id: permission.id } })\n )\n );\n\n await Promise.all(\n toCreate.map((permissionInfo) =>\n strapi.db.query('plugin::users-permissions.permission').create({ data: permissionInfo })\n )\n );\n },\n\n async deleteRole(roleID, publicRoleID) {\n const role = await strapi.db\n .query('plugin::users-permissions.role')\n .findOne({ where: { id: roleID }, populate: ['users', 'permissions'] });\n\n if (!role) {\n throw new NotFoundError('Role not found');\n }\n\n // Move users to guest role.\n await Promise.all(\n role.users.map((user) => {\n return strapi.db.query('plugin::users-permissions.user').update({\n where: { id: user.id },\n data: { role: publicRoleID },\n });\n })\n );\n\n // Remove permissions related to this role.\n // TODO: use delete many\n await Promise.all(\n role.permissions.map((permission) => {\n return strapi.db.query('plugin::users-permissions.permission').delete({\n where: { id: permission.id },\n });\n })\n );\n\n // Delete the role.\n await strapi.db.query('plugin::users-permissions.role').delete({ where: { id: roleID } });\n },\n});\n"],"names":["_","require$$0","NotFoundError","require$$1","errors","getService","require$$2","role","strapi","createRole","params","type","snakeCase","deburr","toLower","name","db","query","create","data","omit","createPromises","flatMap","permissions","typeName","controllers","controller","controllerName","reduce","acc","action","actionName","enabled","actionID","push","id","Promise","all","findOne","roleID","where","populate","allActions","getActions","forEach","permission","split","set","policy","find","roles","findMany","sort","nb_users","count","updateRole","update","pick","newActions","oldActions","Set","map","toDelete","includes","toCreate","filter","has","delete","permissionInfo","deleteRole","publicRoleID","users","user"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/plugin-users-permissions",
3
- "version": "5.57.0",
3
+ "version": "5.59.0",
4
4
  "description": "Protect your API with a full-authentication process based on JWT",
5
5
  "homepage": "https://strapi.io",
6
6
  "bugs": {
@@ -55,7 +55,7 @@
55
55
  "dependencies": {
56
56
  "@strapi/design-system": "2.2.4",
57
57
  "@strapi/icons": "2.2.4",
58
- "@strapi/utils": "5.57.0",
58
+ "@strapi/utils": "5.59.0",
59
59
  "bcryptjs": "2.4.3",
60
60
  "formik": "2.4.9",
61
61
  "immer": "9.0.21",
@@ -72,8 +72,8 @@
72
72
  "zod": "4.4.3"
73
73
  },
74
74
  "devDependencies": {
75
- "@strapi/admin": "5.57.0",
76
- "@strapi/strapi": "5.57.0",
75
+ "@strapi/admin": "5.59.0",
76
+ "@strapi/strapi": "5.59.0",
77
77
  "@testing-library/dom": "10.4.1",
78
78
  "@testing-library/jest-dom": "6.9.1",
79
79
  "@testing-library/react": "16.3.2",
@@ -116,7 +116,7 @@ module.exports = ({ strapi }) => ({
116
116
  });
117
117
  });
118
118
 
119
- const oldActions = role.permissions.map(({ action }) => action);
119
+ const oldActions = new Set(role.permissions.map(({ action }) => action));
120
120
 
121
121
  const toDelete = role.permissions.reduce((acc, permission) => {
122
122
  if (!newActions.includes(permission.action)) {
@@ -126,7 +126,7 @@ module.exports = ({ strapi }) => ({
126
126
  }, []);
127
127
 
128
128
  const toCreate = newActions
129
- .filter((action) => !oldActions.includes(action))
129
+ .filter((action) => !oldActions.has(action))
130
130
  .map((action) => ({ action, role: role.id }));
131
131
 
132
132
  await Promise.all(