@strapi/plugin-users-permissions 0.0.0-next.e21fe90bf2ab9906267ea6e6ca620bdcc729906c → 0.0.0-next.e2e3ca14971ee768e1a227a209362264fd0132d4

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 (144) hide show
  1. package/admin/src/components/Permissions/PermissionRow/SubCategory.jsx +8 -1
  2. package/admin/src/components/Policies/index.jsx +1 -0
  3. package/admin/src/components/UsersPermissions/index.jsx +1 -0
  4. package/admin/src/pages/EmailTemplates/components/EmailForm.jsx +2 -1
  5. package/admin/src/pages/Providers/index.jsx +74 -76
  6. package/admin/src/pages/Roles/pages/CreatePage.jsx +20 -7
  7. package/admin/src/pages/Roles/pages/EditPage.jsx +12 -7
  8. package/admin/src/pages/Roles/pages/ListPage/index.jsx +91 -93
  9. package/admin/src/translations/en.json +1 -0
  10. package/admin/src/utils/formatPluginName.js +1 -1
  11. package/dist/admin/components/FormModal/Input/index.js.map +1 -1
  12. package/dist/admin/components/FormModal/Input/index.mjs.map +1 -1
  13. package/dist/admin/components/Permissions/PermissionRow/SubCategory.js +3 -1
  14. package/dist/admin/components/Permissions/PermissionRow/SubCategory.js.map +1 -1
  15. package/dist/admin/components/Permissions/PermissionRow/SubCategory.mjs +3 -1
  16. package/dist/admin/components/Permissions/PermissionRow/SubCategory.mjs.map +1 -1
  17. package/dist/admin/components/Permissions/PermissionRow/index.js.map +1 -1
  18. package/dist/admin/components/Permissions/PermissionRow/index.mjs.map +1 -1
  19. package/dist/admin/components/Policies/index.js +1 -0
  20. package/dist/admin/components/Policies/index.js.map +1 -1
  21. package/dist/admin/components/Policies/index.mjs +1 -0
  22. package/dist/admin/components/Policies/index.mjs.map +1 -1
  23. package/dist/admin/components/UsersPermissions/index.js +1 -0
  24. package/dist/admin/components/UsersPermissions/index.js.map +1 -1
  25. package/dist/admin/components/UsersPermissions/index.mjs +1 -0
  26. package/dist/admin/components/UsersPermissions/index.mjs.map +1 -1
  27. package/dist/admin/pages/EmailTemplates/components/EmailForm.js +2 -1
  28. package/dist/admin/pages/EmailTemplates/components/EmailForm.js.map +1 -1
  29. package/dist/admin/pages/EmailTemplates/components/EmailForm.mjs +2 -1
  30. package/dist/admin/pages/EmailTemplates/components/EmailForm.mjs.map +1 -1
  31. package/dist/admin/pages/Providers/index.js +84 -88
  32. package/dist/admin/pages/Providers/index.js.map +1 -1
  33. package/dist/admin/pages/Providers/index.mjs +84 -88
  34. package/dist/admin/pages/Providers/index.mjs.map +1 -1
  35. package/dist/admin/pages/Roles/pages/CreatePage.js +14 -1
  36. package/dist/admin/pages/Roles/pages/CreatePage.js.map +1 -1
  37. package/dist/admin/pages/Roles/pages/CreatePage.mjs +16 -3
  38. package/dist/admin/pages/Roles/pages/CreatePage.mjs.map +1 -1
  39. package/dist/admin/pages/Roles/pages/EditPage.js +13 -3
  40. package/dist/admin/pages/Roles/pages/EditPage.js.map +1 -1
  41. package/dist/admin/pages/Roles/pages/EditPage.mjs +14 -4
  42. package/dist/admin/pages/Roles/pages/EditPage.mjs.map +1 -1
  43. package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.js.map +1 -1
  44. package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.mjs.map +1 -1
  45. package/dist/admin/pages/Roles/pages/ListPage/index.js +95 -99
  46. package/dist/admin/pages/Roles/pages/ListPage/index.js.map +1 -1
  47. package/dist/admin/pages/Roles/pages/ListPage/index.mjs +95 -99
  48. package/dist/admin/pages/Roles/pages/ListPage/index.mjs.map +1 -1
  49. package/dist/admin/translations/en.json.js +1 -0
  50. package/dist/admin/translations/en.json.js.map +1 -1
  51. package/dist/admin/translations/en.json.mjs +1 -0
  52. package/dist/admin/translations/en.json.mjs.map +1 -1
  53. package/dist/admin/utils/formatPluginName.js +1 -1
  54. package/dist/admin/utils/formatPluginName.js.map +1 -1
  55. package/dist/admin/utils/formatPluginName.mjs +1 -1
  56. package/dist/admin/utils/formatPluginName.mjs.map +1 -1
  57. package/dist/admin/utils/getTrad.js.map +1 -1
  58. package/dist/admin/utils/getTrad.mjs.map +1 -1
  59. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -1
  60. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -1
  61. package/dist/server/bootstrap/index.js +28 -7
  62. package/dist/server/bootstrap/index.js.map +1 -1
  63. package/dist/server/bootstrap/index.mjs +28 -7
  64. package/dist/server/bootstrap/index.mjs.map +1 -1
  65. package/dist/server/config.js +16 -0
  66. package/dist/server/config.js.map +1 -1
  67. package/dist/server/config.mjs +16 -0
  68. package/dist/server/config.mjs.map +1 -1
  69. package/dist/server/controllers/auth.js +204 -3
  70. package/dist/server/controllers/auth.js.map +1 -1
  71. package/dist/server/controllers/auth.mjs +204 -3
  72. package/dist/server/controllers/auth.mjs.map +1 -1
  73. package/dist/server/controllers/content-manager-user.js +3 -3
  74. package/dist/server/controllers/content-manager-user.js.map +1 -1
  75. package/dist/server/controllers/content-manager-user.mjs +3 -3
  76. package/dist/server/controllers/content-manager-user.mjs.map +1 -1
  77. package/dist/server/controllers/validation/user.js +6 -1
  78. package/dist/server/controllers/validation/user.js.map +1 -1
  79. package/dist/server/controllers/validation/user.mjs +6 -1
  80. package/dist/server/controllers/validation/user.mjs.map +1 -1
  81. package/dist/server/graphql/resolvers-configs.js.map +1 -1
  82. package/dist/server/graphql/resolvers-configs.mjs.map +1 -1
  83. package/dist/server/middlewares/rateLimit.js.map +1 -1
  84. package/dist/server/middlewares/rateLimit.mjs.map +1 -1
  85. package/dist/server/routes/content-api/auth.js +155 -91
  86. package/dist/server/routes/content-api/auth.js.map +1 -1
  87. package/dist/server/routes/content-api/auth.mjs +155 -91
  88. package/dist/server/routes/content-api/auth.mjs.map +1 -1
  89. package/dist/server/routes/content-api/index.js +11 -9
  90. package/dist/server/routes/content-api/index.js.map +1 -1
  91. package/dist/server/routes/content-api/index.mjs +11 -9
  92. package/dist/server/routes/content-api/index.mjs.map +1 -1
  93. package/dist/server/routes/content-api/permissions.js +14 -7
  94. package/dist/server/routes/content-api/permissions.js.map +1 -1
  95. package/dist/server/routes/content-api/permissions.mjs +14 -7
  96. package/dist/server/routes/content-api/permissions.mjs.map +1 -1
  97. package/dist/server/routes/content-api/role.js +61 -27
  98. package/dist/server/routes/content-api/role.js.map +1 -1
  99. package/dist/server/routes/content-api/role.mjs +61 -27
  100. package/dist/server/routes/content-api/role.mjs.map +1 -1
  101. package/dist/server/routes/content-api/user.js +119 -57
  102. package/dist/server/routes/content-api/user.js.map +1 -1
  103. package/dist/server/routes/content-api/user.mjs +119 -57
  104. package/dist/server/routes/content-api/user.mjs.map +1 -1
  105. package/dist/server/routes/content-api/validation.js +217 -0
  106. package/dist/server/routes/content-api/validation.js.map +1 -0
  107. package/dist/server/routes/content-api/validation.mjs +215 -0
  108. package/dist/server/routes/content-api/validation.mjs.map +1 -0
  109. package/dist/server/services/constants.js +19 -0
  110. package/dist/server/services/constants.js.map +1 -0
  111. package/dist/server/services/constants.mjs +17 -0
  112. package/dist/server/services/constants.mjs.map +1 -0
  113. package/dist/server/services/jwt.js +45 -2
  114. package/dist/server/services/jwt.js.map +1 -1
  115. package/dist/server/services/jwt.mjs +45 -2
  116. package/dist/server/services/jwt.mjs.map +1 -1
  117. package/dist/server/services/providers-registry.js.map +1 -1
  118. package/dist/server/services/providers-registry.mjs.map +1 -1
  119. package/dist/server/services/role.js.map +1 -1
  120. package/dist/server/services/role.mjs.map +1 -1
  121. package/dist/server/services/user.js +29 -20
  122. package/dist/server/services/user.js.map +1 -1
  123. package/dist/server/services/user.mjs +29 -20
  124. package/dist/server/services/user.mjs.map +1 -1
  125. package/dist/server/services/users-permissions.js +4 -3
  126. package/dist/server/services/users-permissions.js.map +1 -1
  127. package/dist/server/services/users-permissions.mjs +4 -3
  128. package/dist/server/services/users-permissions.mjs.map +1 -1
  129. package/package.json +9 -8
  130. package/server/bootstrap/index.js +31 -0
  131. package/server/config.js +22 -0
  132. package/server/controllers/auth.js +248 -8
  133. package/server/controllers/content-manager-user.js +3 -4
  134. package/server/controllers/validation/user.js +12 -1
  135. package/server/routes/content-api/auth.js +119 -71
  136. package/server/routes/content-api/index.js +11 -4
  137. package/server/routes/content-api/permissions.js +14 -7
  138. package/server/routes/content-api/role.js +57 -27
  139. package/server/routes/content-api/user.js +108 -51
  140. package/server/routes/content-api/validation.js +250 -0
  141. package/server/services/constants.js +9 -0
  142. package/server/services/jwt.js +50 -2
  143. package/server/services/user.js +11 -0
  144. package/server/services/users-permissions.js +4 -2
@@ -17,6 +17,7 @@ var en = {
17
17
  "EditPage.form.roles": "Role details",
18
18
  "Email.template.data.loaded": "Email templates has been loaded",
19
19
  "Email.template.email_confirmation": "Email address confirmation",
20
+ "Email.template.reset_password": "Reset password",
20
21
  "Email.template.form.edit.label": "Edit a template",
21
22
  "Email.template.table.action.label": "action",
22
23
  "Email.template.table.icon.label": "icon",
@@ -1 +1 @@
1
- {"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -17,7 +17,7 @@ function formatPluginName(pluginSlug) {
17
17
  case 'plugin::i18n':
18
18
  return 'i18n';
19
19
  case 'plugin::upload':
20
- return 'Upload';
20
+ return 'Media Library';
21
21
  case 'plugin::users-permissions':
22
22
  return 'Users-permissions';
23
23
  default:
@@ -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 'Upload';\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,QAAA;QACT,KAAK,2BAAA;YACH,OAAO,mBAAA;AACT,QAAA;YACE,OAAOC,UAAAA,CAAWD,WAAWE,OAAO,CAAC,SAAS,EAAIA,CAAAA,CAAAA,OAAO,CAAC,UAAY,EAAA,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,UAAAA,CAAWD,WAAWE,OAAO,CAAC,SAAS,EAAIA,CAAAA,CAAAA,OAAO,CAAC,UAAY,EAAA,EAAA,CAAA,CAAA;AAC1E;AACF;;;;"}
@@ -15,7 +15,7 @@ function formatPluginName(pluginSlug) {
15
15
  case 'plugin::i18n':
16
16
  return 'i18n';
17
17
  case 'plugin::upload':
18
- return 'Upload';
18
+ return 'Media Library';
19
19
  case 'plugin::users-permissions':
20
20
  return 'Users-permissions';
21
21
  default:
@@ -1 +1 @@
1
- {"version":3,"file":"formatPluginName.mjs","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 'Upload';\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,QAAA;QACT,KAAK,2BAAA;YACH,OAAO,mBAAA;AACT,QAAA;YACE,OAAOC,UAAAA,CAAWD,WAAWE,OAAO,CAAC,SAAS,EAAIA,CAAAA,CAAAA,OAAO,CAAC,UAAY,EAAA,EAAA,CAAA,CAAA;AAC1E;AACF;;;;"}
1
+ {"version":3,"file":"formatPluginName.mjs","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,EAAIA,CAAAA,CAAAA,OAAO,CAAC,UAAY,EAAA,EAAA,CAAA,CAAA;AAC1E;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"getTrad.js","sources":["../../../admin/src/utils/getTrad.js"],"sourcesContent":["import pluginId from '../pluginId';\n\nconst getTrad = (id) => `${pluginId}.${id}`;\n\nexport default getTrad;\n"],"names":["getTrad","id","pluginId"],"mappings":";;;;AAEMA,MAAAA,OAAAA,GAAU,CAACC,EAAO,GAAA,CAAC,EAAEC,QAAS,CAAA,CAAC,EAAED,EAAAA,CAAG;;;;"}
1
+ {"version":3,"file":"getTrad.js","sources":["../../../admin/src/utils/getTrad.js"],"sourcesContent":["import pluginId from '../pluginId';\n\nconst getTrad = (id) => `${pluginId}.${id}`;\n\nexport default getTrad;\n"],"names":["getTrad","id","pluginId"],"mappings":";;;;AAEA,MAAMA,UAAU,CAACC,EAAAA,GAAO,GAAGC,QAAS,CAAA,CAAC,EAAED,EAAI,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"getTrad.mjs","sources":["../../../admin/src/utils/getTrad.js"],"sourcesContent":["import pluginId from '../pluginId';\n\nconst getTrad = (id) => `${pluginId}.${id}`;\n\nexport default getTrad;\n"],"names":["getTrad","id","pluginId"],"mappings":";;AAEMA,MAAAA,OAAAA,GAAU,CAACC,EAAO,GAAA,CAAC,EAAEC,QAAS,CAAA,CAAC,EAAED,EAAAA,CAAG;;;;"}
1
+ {"version":3,"file":"getTrad.mjs","sources":["../../../admin/src/utils/getTrad.js"],"sourcesContent":["import pluginId from '../pluginId';\n\nconst getTrad = (id) => `${pluginId}.${id}`;\n\nexport default getTrad;\n"],"names":["getTrad","id","pluginId"],"mappings":";;AAEA,MAAMA,UAAU,CAACC,EAAAA,GAAO,GAAGC,QAAS,CAAA,CAAC,EAAED,EAAI,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"prefixPluginTranslations.js","sources":["../../../admin/src/utils/prefixPluginTranslations.js"],"sourcesContent":["const prefixPluginTranslations = (trad, pluginId) => {\n if (!pluginId) {\n throw new TypeError(\"pluginId can't be empty\");\n }\n\n return Object.keys(trad).reduce((acc, current) => {\n acc[`${pluginId}.${current}`] = trad[current];\n\n return acc;\n }, {});\n};\n\nexport { prefixPluginTranslations };\n"],"names":["prefixPluginTranslations","trad","pluginId","Object","keys","reduce","acc","current"],"mappings":";;AAAMA,MAAAA,wBAAAA,GAA2B,CAACC,IAAMC,EAAAA,QAAAA,GAAAA;AAKtC,IAAA,OAAOC,OAAOC,IAAI,CAACH,MAAMI,MAAM,CAAC,CAACC,GAAKC,EAAAA,OAAAA,GAAAA;AACpCD,QAAAA,GAAG,CAAC,CAAC,EAAEJ,QAAAA,CAAS,CAAC,EAAEK,OAAQ,CAAA,CAAC,CAAC,GAAGN,IAAI,CAACM,OAAQ,CAAA;QAE7C,OAAOD,GAAAA;AACT,KAAA,EAAG,EAAC,CAAA;AACN;;;;"}
1
+ {"version":3,"file":"prefixPluginTranslations.js","sources":["../../../admin/src/utils/prefixPluginTranslations.js"],"sourcesContent":["const prefixPluginTranslations = (trad, pluginId) => {\n if (!pluginId) {\n throw new TypeError(\"pluginId can't be empty\");\n }\n\n return Object.keys(trad).reduce((acc, current) => {\n acc[`${pluginId}.${current}`] = trad[current];\n\n return acc;\n }, {});\n};\n\nexport { prefixPluginTranslations };\n"],"names":["prefixPluginTranslations","trad","pluginId","Object","keys","reduce","acc","current"],"mappings":";;AAAMA,MAAAA,wBAAAA,GAA2B,CAACC,IAAMC,EAAAA,QAAAA,GAAAA;AAKtC,IAAA,OAAOC,OAAOC,IAAI,CAACH,MAAMI,MAAM,CAAC,CAACC,GAAKC,EAAAA,OAAAA,GAAAA;QACpCD,GAAG,CAAC,CAAGJ,EAAAA,QAAAA,CAAS,CAAC,EAAEK,SAAS,CAAC,GAAGN,IAAI,CAACM,OAAQ,CAAA;QAE7C,OAAOD,GAAAA;AACT,KAAA,EAAG,EAAC,CAAA;AACN;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"prefixPluginTranslations.mjs","sources":["../../../admin/src/utils/prefixPluginTranslations.js"],"sourcesContent":["const prefixPluginTranslations = (trad, pluginId) => {\n if (!pluginId) {\n throw new TypeError(\"pluginId can't be empty\");\n }\n\n return Object.keys(trad).reduce((acc, current) => {\n acc[`${pluginId}.${current}`] = trad[current];\n\n return acc;\n }, {});\n};\n\nexport { prefixPluginTranslations };\n"],"names":["prefixPluginTranslations","trad","pluginId","Object","keys","reduce","acc","current"],"mappings":"AAAMA,MAAAA,wBAAAA,GAA2B,CAACC,IAAMC,EAAAA,QAAAA,GAAAA;AAKtC,IAAA,OAAOC,OAAOC,IAAI,CAACH,MAAMI,MAAM,CAAC,CAACC,GAAKC,EAAAA,OAAAA,GAAAA;AACpCD,QAAAA,GAAG,CAAC,CAAC,EAAEJ,QAAAA,CAAS,CAAC,EAAEK,OAAQ,CAAA,CAAC,CAAC,GAAGN,IAAI,CAACM,OAAQ,CAAA;QAE7C,OAAOD,GAAAA;AACT,KAAA,EAAG,EAAC,CAAA;AACN;;;;"}
1
+ {"version":3,"file":"prefixPluginTranslations.mjs","sources":["../../../admin/src/utils/prefixPluginTranslations.js"],"sourcesContent":["const prefixPluginTranslations = (trad, pluginId) => {\n if (!pluginId) {\n throw new TypeError(\"pluginId can't be empty\");\n }\n\n return Object.keys(trad).reduce((acc, current) => {\n acc[`${pluginId}.${current}`] = trad[current];\n\n return acc;\n }, {});\n};\n\nexport { prefixPluginTranslations };\n"],"names":["prefixPluginTranslations","trad","pluginId","Object","keys","reduce","acc","current"],"mappings":"AAAMA,MAAAA,wBAAAA,GAA2B,CAACC,IAAMC,EAAAA,QAAAA,GAAAA;AAKtC,IAAA,OAAOC,OAAOC,IAAI,CAACH,MAAMI,MAAM,CAAC,CAACC,GAAKC,EAAAA,OAAAA,GAAAA;QACpCD,GAAG,CAAC,CAAGJ,EAAAA,QAAAA,CAAS,CAAC,EAAEK,SAAS,CAAC,GAAGN,IAAI,CAACM,OAAQ,CAAA;QAE7C,OAAOD,GAAAA;AACT,KAAA,EAAG,EAAC,CAAA;AACN;;;;"}
@@ -4,6 +4,7 @@ var require$$0 = require('crypto');
4
4
  var require$$0$1 = require('lodash');
5
5
  var index = require('../utils/index.js');
6
6
  var usersPermissionsActions = require('./users-permissions-actions.js');
7
+ var constants = require('../services/constants.js');
7
8
 
8
9
  var bootstrap;
9
10
  var hasRequiredBootstrap;
@@ -20,6 +21,11 @@ function requireBootstrap() {
20
21
  const _ = require$$0$1;
21
22
  const { getService } = index.__require();
22
23
  const usersPermissionsActions$1 = usersPermissionsActions.__require();
24
+ 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();
25
+ const getSessionManager = ()=>{
26
+ const manager = strapi.sessionManager;
27
+ return manager ?? null;
28
+ };
23
29
  const initGrant = async (pluginStore)=>{
24
30
  const allProviders = getService('providers-registry').getAll();
25
31
  const grantConfig = Object.entries(allProviders).reduce((acc, [name, provider])=>{
@@ -114,27 +120,42 @@ function requireBootstrap() {
114
120
  });
115
121
  }
116
122
  };
117
- bootstrap = async ({ strapi })=>{
118
- const pluginStore = strapi.store({
123
+ bootstrap = async ({ strapi: strapi1 })=>{
124
+ const pluginStore = strapi1.store({
119
125
  type: 'plugin',
120
126
  name: 'users-permissions'
121
127
  });
122
128
  await initGrant(pluginStore);
123
129
  await initEmails(pluginStore);
124
130
  await initAdvancedOptions(pluginStore);
125
- await strapi.service('admin::permission').actionProvider.registerMany(usersPermissionsActions$1.actions);
131
+ await strapi1.service('admin::permission').actionProvider.registerMany(usersPermissionsActions$1.actions);
126
132
  await getService('users-permissions').initialize();
127
- if (!strapi.config.get('plugin::users-permissions.jwtSecret')) {
133
+ // Define users-permissions origin configuration for sessionManager
134
+ const upConfig = strapi1.config.get('plugin::users-permissions');
135
+ const sessionManager = getSessionManager();
136
+ if (sessionManager) {
137
+ sessionManager.defineOrigin('users-permissions', {
138
+ jwtSecret: upConfig.jwtSecret || strapi1.config.get('admin.auth.secret'),
139
+ accessTokenLifespan: upConfig.sessions?.accessTokenLifespan || DEFAULT_ACCESS_TOKEN_LIFESPAN,
140
+ maxRefreshTokenLifespan: upConfig.sessions?.maxRefreshTokenLifespan || DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN,
141
+ idleRefreshTokenLifespan: upConfig.sessions?.idleRefreshTokenLifespan || DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN,
142
+ maxSessionLifespan: upConfig.sessions?.maxSessionLifespan || DEFAULT_MAX_SESSION_LIFESPAN,
143
+ idleSessionLifespan: upConfig.sessions?.idleSessionLifespan || DEFAULT_IDLE_SESSION_LIFESPAN,
144
+ algorithm: upConfig.jwt?.algorithm,
145
+ jwtOptions: upConfig.jwt || {}
146
+ });
147
+ }
148
+ if (!strapi1.config.get('plugin::users-permissions.jwtSecret')) {
128
149
  if (process.env.NODE_ENV !== 'development') {
129
150
  throw new Error(`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')\`).
130
151
  For 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.`);
131
152
  }
132
153
  const jwtSecret = crypto.randomBytes(16).toString('base64');
133
- strapi.config.set('plugin::users-permissions.jwtSecret', jwtSecret);
154
+ strapi1.config.set('plugin::users-permissions.jwtSecret', jwtSecret);
134
155
  if (!process.env.JWT_SECRET) {
135
156
  const envPath = process.env.ENV_PATH || '.env';
136
- strapi.fs.appendFile(envPath, `JWT_SECRET=${jwtSecret}\n`);
137
- strapi.log.info(`The Users & Permissions plugin automatically generated a jwt secret and stored it in ${envPath} under the name JWT_SECRET.`);
157
+ strapi1.fs.appendFile(envPath, `JWT_SECRET=${jwtSecret}\n`);
158
+ strapi1.log.info(`The Users & Permissions plugin automatically generated a jwt secret and stored it in ${envPath} under the name JWT_SECRET.`);
138
159
  }
139
160
  }
140
161
  };
@@ -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');\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 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","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","strapi","store","type","service","actionProvider","registerMany","actions","initialize","config","process","env","NODE_ENV","Error","jwtSecret","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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"}
@@ -2,6 +2,7 @@ import require$$0 from 'crypto';
2
2
  import require$$0$1 from 'lodash';
3
3
  import { __require as requireUtils } from '../utils/index.mjs';
4
4
  import { __require as requireUsersPermissionsActions } from './users-permissions-actions.mjs';
5
+ import { __require as requireConstants } from '../services/constants.mjs';
5
6
 
6
7
  var bootstrap;
7
8
  var hasRequiredBootstrap;
@@ -18,6 +19,11 @@ function requireBootstrap() {
18
19
  const _ = require$$0$1;
19
20
  const { getService } = requireUtils();
20
21
  const usersPermissionsActions = requireUsersPermissionsActions();
22
+ const { DEFAULT_ACCESS_TOKEN_LIFESPAN, DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN, DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN, DEFAULT_MAX_SESSION_LIFESPAN, DEFAULT_IDLE_SESSION_LIFESPAN } = requireConstants();
23
+ const getSessionManager = ()=>{
24
+ const manager = strapi.sessionManager;
25
+ return manager ?? null;
26
+ };
21
27
  const initGrant = async (pluginStore)=>{
22
28
  const allProviders = getService('providers-registry').getAll();
23
29
  const grantConfig = Object.entries(allProviders).reduce((acc, [name, provider])=>{
@@ -112,27 +118,42 @@ function requireBootstrap() {
112
118
  });
113
119
  }
114
120
  };
115
- bootstrap = async ({ strapi })=>{
116
- const pluginStore = strapi.store({
121
+ bootstrap = async ({ strapi: strapi1 })=>{
122
+ const pluginStore = strapi1.store({
117
123
  type: 'plugin',
118
124
  name: 'users-permissions'
119
125
  });
120
126
  await initGrant(pluginStore);
121
127
  await initEmails(pluginStore);
122
128
  await initAdvancedOptions(pluginStore);
123
- await strapi.service('admin::permission').actionProvider.registerMany(usersPermissionsActions.actions);
129
+ await strapi1.service('admin::permission').actionProvider.registerMany(usersPermissionsActions.actions);
124
130
  await getService('users-permissions').initialize();
125
- if (!strapi.config.get('plugin::users-permissions.jwtSecret')) {
131
+ // Define users-permissions origin configuration for sessionManager
132
+ const upConfig = strapi1.config.get('plugin::users-permissions');
133
+ const sessionManager = getSessionManager();
134
+ if (sessionManager) {
135
+ sessionManager.defineOrigin('users-permissions', {
136
+ jwtSecret: upConfig.jwtSecret || strapi1.config.get('admin.auth.secret'),
137
+ accessTokenLifespan: upConfig.sessions?.accessTokenLifespan || DEFAULT_ACCESS_TOKEN_LIFESPAN,
138
+ maxRefreshTokenLifespan: upConfig.sessions?.maxRefreshTokenLifespan || DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN,
139
+ idleRefreshTokenLifespan: upConfig.sessions?.idleRefreshTokenLifespan || DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN,
140
+ maxSessionLifespan: upConfig.sessions?.maxSessionLifespan || DEFAULT_MAX_SESSION_LIFESPAN,
141
+ idleSessionLifespan: upConfig.sessions?.idleSessionLifespan || DEFAULT_IDLE_SESSION_LIFESPAN,
142
+ algorithm: upConfig.jwt?.algorithm,
143
+ jwtOptions: upConfig.jwt || {}
144
+ });
145
+ }
146
+ if (!strapi1.config.get('plugin::users-permissions.jwtSecret')) {
126
147
  if (process.env.NODE_ENV !== 'development') {
127
148
  throw new Error(`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')\`).
128
149
  For 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.`);
129
150
  }
130
151
  const jwtSecret = crypto.randomBytes(16).toString('base64');
131
- strapi.config.set('plugin::users-permissions.jwtSecret', jwtSecret);
152
+ strapi1.config.set('plugin::users-permissions.jwtSecret', jwtSecret);
132
153
  if (!process.env.JWT_SECRET) {
133
154
  const envPath = process.env.ENV_PATH || '.env';
134
- strapi.fs.appendFile(envPath, `JWT_SECRET=${jwtSecret}\n`);
135
- strapi.log.info(`The Users & Permissions plugin automatically generated a jwt secret and stored it in ${envPath} under the name JWT_SECRET.`);
155
+ strapi1.fs.appendFile(envPath, `JWT_SECRET=${jwtSecret}\n`);
156
+ strapi1.log.info(`The Users & Permissions plugin automatically generated a jwt secret and stored it in ${envPath} under the name JWT_SECRET.`);
136
157
  }
137
158
  }
138
159
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","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');\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 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","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","strapi","store","type","service","actionProvider","registerMany","actions","initialize","config","process","env","NODE_ENV","Error","jwtSecret","randomBytes","toString","JWT_SECRET","envPath","ENV_PATH","fs","appendFile","log","info"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","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,16 +1,32 @@
1
1
  'use strict';
2
2
 
3
+ var constants = require('./services/constants.js');
4
+
3
5
  var config;
4
6
  var hasRequiredConfig;
5
7
  function requireConfig() {
6
8
  if (hasRequiredConfig) return config;
7
9
  hasRequiredConfig = 1;
10
+ 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();
8
11
  config = {
9
12
  default: ({ env })=>({
10
13
  jwtSecret: env('JWT_SECRET'),
11
14
  jwt: {
12
15
  expiresIn: '30d'
13
16
  },
17
+ /**
18
+ * JWT management mode for the Content API authentication
19
+ * - "legacy-support": use plugin JWTs (backward compatible)
20
+ * - "refresh": use SessionManager (access/refresh tokens)
21
+ */ jwtManagement: 'legacy-support',
22
+ sessions: {
23
+ accessTokenLifespan: DEFAULT_ACCESS_TOKEN_LIFESPAN,
24
+ maxRefreshTokenLifespan: DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN,
25
+ idleRefreshTokenLifespan: DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN,
26
+ maxSessionLifespan: DEFAULT_MAX_SESSION_LIFESPAN,
27
+ idleSessionLifespan: DEFAULT_IDLE_SESSION_LIFESPAN,
28
+ httpOnly: false
29
+ },
14
30
  ratelimit: {
15
31
  interval: 60000,
16
32
  max: 10
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sources":["../../server/config.js"],"sourcesContent":["'use strict';\n\nmodule.exports = {\n default: ({ env }) => ({\n jwtSecret: env('JWT_SECRET'),\n jwt: {\n expiresIn: '30d',\n },\n ratelimit: {\n interval: 60000,\n max: 10,\n },\n layout: {\n user: {\n actions: {\n create: 'contentManagerUser.create', // Use the User plugin's controller.\n update: 'contentManagerUser.update',\n },\n },\n },\n callback: {\n validate(callback, provider) {\n let uCallback;\n let uProviderCallback;\n\n try {\n uCallback = new URL(callback);\n uProviderCallback = new URL(provider.callback);\n } catch {\n throw new Error('The callback is not a valid URL');\n }\n\n // Make sure the different origin matches\n if (uCallback.origin !== uProviderCallback.origin) {\n throw new Error(\n `Forbidden callback provided: origins don't match. Please verify your config.`\n );\n }\n\n // Make sure the different pathname matches\n if (uCallback.pathname !== uProviderCallback.pathname) {\n throw new Error(\n `Forbidden callback provided: pathname don't match. Please verify your config.`\n );\n }\n\n // NOTE: We're not checking the search parameters on purpose to allow passing different states\n },\n },\n }),\n validator() {},\n};\n"],"names":["config","default","env","jwtSecret","jwt","expiresIn","ratelimit","interval","max","layout","user","actions","create","update","callback","validate","provider","uCallback","uProviderCallback","URL","Error","origin","pathname","validator"],"mappings":";;;;;;;IAEAA,MAAiB,GAAA;AACfC,QAAAA,OAAAA,EAAS,CAAC,EAAEC,GAAG,EAAE,IAAM;AACrBC,gBAAAA,SAAAA,EAAWD,GAAI,CAAA,YAAA,CAAA;gBACfE,GAAK,EAAA;oBACHC,SAAW,EAAA;AACZ,iBAAA;gBACDC,SAAW,EAAA;oBACTC,QAAU,EAAA,KAAA;oBACVC,GAAK,EAAA;AACN,iBAAA;gBACDC,MAAQ,EAAA;oBACNC,IAAM,EAAA;wBACJC,OAAS,EAAA;4BACPC,MAAQ,EAAA,2BAAA;4BACRC,MAAQ,EAAA;AACT;AACF;AACF,iBAAA;gBACDC,QAAU,EAAA;oBACRC,QAASD,CAAAA,CAAAA,QAAQ,EAAEE,QAAQ,EAAA;wBACzB,IAAIC,SAAAA;wBACJ,IAAIC,iBAAAA;wBAEJ,IAAI;AACFD,4BAAAA,SAAAA,GAAY,IAAIE,GAAIL,CAAAA,QAAAA,CAAAA;4BACpBI,iBAAoB,GAAA,IAAIC,GAAIH,CAAAA,QAAAA,CAASF,QAAQ,CAAA;AACvD,yBAAA,CAAU,OAAM;AACN,4BAAA,MAAM,IAAIM,KAAM,CAAA,iCAAA,CAAA;AACjB;;AAGD,wBAAA,IAAIH,SAAUI,CAAAA,MAAM,KAAKH,iBAAAA,CAAkBG,MAAM,EAAE;AACjD,4BAAA,MAAM,IAAID,KAAAA,CACR,CAAC,4EAA4E,CAAC,CAAA;AAEjF;;AAGD,wBAAA,IAAIH,SAAUK,CAAAA,QAAQ,KAAKJ,iBAAAA,CAAkBI,QAAQ,EAAE;AACrD,4BAAA,MAAM,IAAIF,KAAAA,CACR,CAAC,6EAA6E,CAAC,CAAA;AAElF;;AAGF;AACF;aACL,CAAA;QACEG,SAAc,CAAA,GAAA;AAChB,KAAA;;;;;;"}
1
+ {"version":3,"file":"config.js","sources":["../../server/config.js"],"sourcesContent":["'use strict';\n\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\nmodule.exports = {\n default: ({ env }) => ({\n jwtSecret: env('JWT_SECRET'),\n jwt: {\n expiresIn: '30d',\n },\n /**\n * JWT management mode for the Content API authentication\n * - \"legacy-support\": use plugin JWTs (backward compatible)\n * - \"refresh\": use SessionManager (access/refresh tokens)\n */\n jwtManagement: 'legacy-support',\n sessions: {\n accessTokenLifespan: DEFAULT_ACCESS_TOKEN_LIFESPAN,\n maxRefreshTokenLifespan: DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN,\n idleRefreshTokenLifespan: DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN,\n maxSessionLifespan: DEFAULT_MAX_SESSION_LIFESPAN,\n idleSessionLifespan: DEFAULT_IDLE_SESSION_LIFESPAN,\n httpOnly: false,\n },\n ratelimit: {\n interval: 60000,\n max: 10,\n },\n layout: {\n user: {\n actions: {\n create: 'contentManagerUser.create', // Use the User plugin's controller.\n update: 'contentManagerUser.update',\n },\n },\n },\n callback: {\n validate(callback, provider) {\n let uCallback;\n let uProviderCallback;\n\n try {\n uCallback = new URL(callback);\n uProviderCallback = new URL(provider.callback);\n } catch {\n throw new Error('The callback is not a valid URL');\n }\n\n // Make sure the different origin matches\n if (uCallback.origin !== uProviderCallback.origin) {\n throw new Error(\n `Forbidden callback provided: origins don't match. Please verify your config.`\n );\n }\n\n // Make sure the different pathname matches\n if (uCallback.pathname !== uProviderCallback.pathname) {\n throw new Error(\n `Forbidden callback provided: pathname don't match. Please verify your config.`\n );\n }\n\n // NOTE: We're not checking the search parameters on purpose to allow passing different states\n },\n },\n }),\n validator() {},\n};\n"],"names":["DEFAULT_ACCESS_TOKEN_LIFESPAN","DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN","DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN","DEFAULT_MAX_SESSION_LIFESPAN","DEFAULT_IDLE_SESSION_LIFESPAN","require$$0","config","default","env","jwtSecret","jwt","expiresIn","jwtManagement","sessions","accessTokenLifespan","maxRefreshTokenLifespan","idleRefreshTokenLifespan","maxSessionLifespan","idleSessionLifespan","httpOnly","ratelimit","interval","max","layout","user","actions","create","update","callback","validate","provider","uCallback","uProviderCallback","URL","Error","origin","pathname","validator"],"mappings":";;;;;;;;;IAEA,MAAM,EACJA,6BAA6B,EAC7BC,kCAAkC,EAClCC,mCAAmC,EACnCC,4BAA4B,EAC5BC,6BAA6B,EAC9B,GAAGC,mBAAAA,EAAAA;IAEJC,MAAiB,GAAA;AACfC,QAAAA,OAAAA,EAAS,CAAC,EAAEC,GAAG,EAAE,IAAM;AACrBC,gBAAAA,SAAAA,EAAWD,GAAI,CAAA,YAAA,CAAA;gBACfE,GAAK,EAAA;oBACHC,SAAW,EAAA;AACZ,iBAAA;AACL;;;;AAIA,SACIC,aAAe,EAAA,gBAAA;gBACfC,QAAU,EAAA;oBACRC,mBAAqBd,EAAAA,6BAAAA;oBACrBe,uBAAyBd,EAAAA,kCAAAA;oBACzBe,wBAA0Bd,EAAAA,mCAAAA;oBAC1Be,kBAAoBd,EAAAA,4BAAAA;oBACpBe,mBAAqBd,EAAAA,6BAAAA;oBACrBe,QAAU,EAAA;AACX,iBAAA;gBACDC,SAAW,EAAA;oBACTC,QAAU,EAAA,KAAA;oBACVC,GAAK,EAAA;AACN,iBAAA;gBACDC,MAAQ,EAAA;oBACNC,IAAM,EAAA;wBACJC,OAAS,EAAA;4BACPC,MAAQ,EAAA,2BAAA;4BACRC,MAAQ,EAAA;AACT;AACF;AACF,iBAAA;gBACDC,QAAU,EAAA;oBACRC,QAASD,CAAAA,CAAAA,QAAQ,EAAEE,QAAQ,EAAA;wBACzB,IAAIC,SAAAA;wBACJ,IAAIC,iBAAAA;wBAEJ,IAAI;AACFD,4BAAAA,SAAAA,GAAY,IAAIE,GAAIL,CAAAA,QAAAA,CAAAA;4BACpBI,iBAAoB,GAAA,IAAIC,GAAIH,CAAAA,QAAAA,CAASF,QAAQ,CAAA;AACvD,yBAAA,CAAU,OAAM;AACN,4BAAA,MAAM,IAAIM,KAAM,CAAA,iCAAA,CAAA;AACjB;;AAGD,wBAAA,IAAIH,SAAUI,CAAAA,MAAM,KAAKH,iBAAAA,CAAkBG,MAAM,EAAE;AACjD,4BAAA,MAAM,IAAID,KAAAA,CACR,CAAC,4EAA4E,CAAC,CAAA;AAEjF;;AAGD,wBAAA,IAAIH,SAAUK,CAAAA,QAAQ,KAAKJ,iBAAAA,CAAkBI,QAAQ,EAAE;AACrD,4BAAA,MAAM,IAAIF,KAAAA,CACR,CAAC,6EAA6E,CAAC,CAAA;AAElF;;AAGF;AACF;aACL,CAAA;QACEG,SAAc,CAAA,GAAA;AAChB,KAAA;;;;;;"}
@@ -1,14 +1,30 @@
1
+ import { __require as requireConstants } from './services/constants.mjs';
2
+
1
3
  var config;
2
4
  var hasRequiredConfig;
3
5
  function requireConfig() {
4
6
  if (hasRequiredConfig) return config;
5
7
  hasRequiredConfig = 1;
8
+ const { DEFAULT_ACCESS_TOKEN_LIFESPAN, DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN, DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN, DEFAULT_MAX_SESSION_LIFESPAN, DEFAULT_IDLE_SESSION_LIFESPAN } = requireConstants();
6
9
  config = {
7
10
  default: ({ env })=>({
8
11
  jwtSecret: env('JWT_SECRET'),
9
12
  jwt: {
10
13
  expiresIn: '30d'
11
14
  },
15
+ /**
16
+ * JWT management mode for the Content API authentication
17
+ * - "legacy-support": use plugin JWTs (backward compatible)
18
+ * - "refresh": use SessionManager (access/refresh tokens)
19
+ */ jwtManagement: 'legacy-support',
20
+ sessions: {
21
+ accessTokenLifespan: DEFAULT_ACCESS_TOKEN_LIFESPAN,
22
+ maxRefreshTokenLifespan: DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN,
23
+ idleRefreshTokenLifespan: DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN,
24
+ maxSessionLifespan: DEFAULT_MAX_SESSION_LIFESPAN,
25
+ idleSessionLifespan: DEFAULT_IDLE_SESSION_LIFESPAN,
26
+ httpOnly: false
27
+ },
12
28
  ratelimit: {
13
29
  interval: 60000,
14
30
  max: 10
@@ -1 +1 @@
1
- {"version":3,"file":"config.mjs","sources":["../../server/config.js"],"sourcesContent":["'use strict';\n\nmodule.exports = {\n default: ({ env }) => ({\n jwtSecret: env('JWT_SECRET'),\n jwt: {\n expiresIn: '30d',\n },\n ratelimit: {\n interval: 60000,\n max: 10,\n },\n layout: {\n user: {\n actions: {\n create: 'contentManagerUser.create', // Use the User plugin's controller.\n update: 'contentManagerUser.update',\n },\n },\n },\n callback: {\n validate(callback, provider) {\n let uCallback;\n let uProviderCallback;\n\n try {\n uCallback = new URL(callback);\n uProviderCallback = new URL(provider.callback);\n } catch {\n throw new Error('The callback is not a valid URL');\n }\n\n // Make sure the different origin matches\n if (uCallback.origin !== uProviderCallback.origin) {\n throw new Error(\n `Forbidden callback provided: origins don't match. Please verify your config.`\n );\n }\n\n // Make sure the different pathname matches\n if (uCallback.pathname !== uProviderCallback.pathname) {\n throw new Error(\n `Forbidden callback provided: pathname don't match. Please verify your config.`\n );\n }\n\n // NOTE: We're not checking the search parameters on purpose to allow passing different states\n },\n },\n }),\n validator() {},\n};\n"],"names":["config","default","env","jwtSecret","jwt","expiresIn","ratelimit","interval","max","layout","user","actions","create","update","callback","validate","provider","uCallback","uProviderCallback","URL","Error","origin","pathname","validator"],"mappings":";;;;;IAEAA,MAAiB,GAAA;AACfC,QAAAA,OAAAA,EAAS,CAAC,EAAEC,GAAG,EAAE,IAAM;AACrBC,gBAAAA,SAAAA,EAAWD,GAAI,CAAA,YAAA,CAAA;gBACfE,GAAK,EAAA;oBACHC,SAAW,EAAA;AACZ,iBAAA;gBACDC,SAAW,EAAA;oBACTC,QAAU,EAAA,KAAA;oBACVC,GAAK,EAAA;AACN,iBAAA;gBACDC,MAAQ,EAAA;oBACNC,IAAM,EAAA;wBACJC,OAAS,EAAA;4BACPC,MAAQ,EAAA,2BAAA;4BACRC,MAAQ,EAAA;AACT;AACF;AACF,iBAAA;gBACDC,QAAU,EAAA;oBACRC,QAASD,CAAAA,CAAAA,QAAQ,EAAEE,QAAQ,EAAA;wBACzB,IAAIC,SAAAA;wBACJ,IAAIC,iBAAAA;wBAEJ,IAAI;AACFD,4BAAAA,SAAAA,GAAY,IAAIE,GAAIL,CAAAA,QAAAA,CAAAA;4BACpBI,iBAAoB,GAAA,IAAIC,GAAIH,CAAAA,QAAAA,CAASF,QAAQ,CAAA;AACvD,yBAAA,CAAU,OAAM;AACN,4BAAA,MAAM,IAAIM,KAAM,CAAA,iCAAA,CAAA;AACjB;;AAGD,wBAAA,IAAIH,SAAUI,CAAAA,MAAM,KAAKH,iBAAAA,CAAkBG,MAAM,EAAE;AACjD,4BAAA,MAAM,IAAID,KAAAA,CACR,CAAC,4EAA4E,CAAC,CAAA;AAEjF;;AAGD,wBAAA,IAAIH,SAAUK,CAAAA,QAAQ,KAAKJ,iBAAAA,CAAkBI,QAAQ,EAAE;AACrD,4BAAA,MAAM,IAAIF,KAAAA,CACR,CAAC,6EAA6E,CAAC,CAAA;AAElF;;AAGF;AACF;aACL,CAAA;QACEG,SAAc,CAAA,GAAA;AAChB,KAAA;;;;;;"}
1
+ {"version":3,"file":"config.mjs","sources":["../../server/config.js"],"sourcesContent":["'use strict';\n\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\nmodule.exports = {\n default: ({ env }) => ({\n jwtSecret: env('JWT_SECRET'),\n jwt: {\n expiresIn: '30d',\n },\n /**\n * JWT management mode for the Content API authentication\n * - \"legacy-support\": use plugin JWTs (backward compatible)\n * - \"refresh\": use SessionManager (access/refresh tokens)\n */\n jwtManagement: 'legacy-support',\n sessions: {\n accessTokenLifespan: DEFAULT_ACCESS_TOKEN_LIFESPAN,\n maxRefreshTokenLifespan: DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN,\n idleRefreshTokenLifespan: DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN,\n maxSessionLifespan: DEFAULT_MAX_SESSION_LIFESPAN,\n idleSessionLifespan: DEFAULT_IDLE_SESSION_LIFESPAN,\n httpOnly: false,\n },\n ratelimit: {\n interval: 60000,\n max: 10,\n },\n layout: {\n user: {\n actions: {\n create: 'contentManagerUser.create', // Use the User plugin's controller.\n update: 'contentManagerUser.update',\n },\n },\n },\n callback: {\n validate(callback, provider) {\n let uCallback;\n let uProviderCallback;\n\n try {\n uCallback = new URL(callback);\n uProviderCallback = new URL(provider.callback);\n } catch {\n throw new Error('The callback is not a valid URL');\n }\n\n // Make sure the different origin matches\n if (uCallback.origin !== uProviderCallback.origin) {\n throw new Error(\n `Forbidden callback provided: origins don't match. Please verify your config.`\n );\n }\n\n // Make sure the different pathname matches\n if (uCallback.pathname !== uProviderCallback.pathname) {\n throw new Error(\n `Forbidden callback provided: pathname don't match. Please verify your config.`\n );\n }\n\n // NOTE: We're not checking the search parameters on purpose to allow passing different states\n },\n },\n }),\n validator() {},\n};\n"],"names":["DEFAULT_ACCESS_TOKEN_LIFESPAN","DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN","DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN","DEFAULT_MAX_SESSION_LIFESPAN","DEFAULT_IDLE_SESSION_LIFESPAN","require$$0","config","default","env","jwtSecret","jwt","expiresIn","jwtManagement","sessions","accessTokenLifespan","maxRefreshTokenLifespan","idleRefreshTokenLifespan","maxSessionLifespan","idleSessionLifespan","httpOnly","ratelimit","interval","max","layout","user","actions","create","update","callback","validate","provider","uCallback","uProviderCallback","URL","Error","origin","pathname","validator"],"mappings":";;;;;;;IAEA,MAAM,EACJA,6BAA6B,EAC7BC,kCAAkC,EAClCC,mCAAmC,EACnCC,4BAA4B,EAC5BC,6BAA6B,EAC9B,GAAGC,gBAAAA,EAAAA;IAEJC,MAAiB,GAAA;AACfC,QAAAA,OAAAA,EAAS,CAAC,EAAEC,GAAG,EAAE,IAAM;AACrBC,gBAAAA,SAAAA,EAAWD,GAAI,CAAA,YAAA,CAAA;gBACfE,GAAK,EAAA;oBACHC,SAAW,EAAA;AACZ,iBAAA;AACL;;;;AAIA,SACIC,aAAe,EAAA,gBAAA;gBACfC,QAAU,EAAA;oBACRC,mBAAqBd,EAAAA,6BAAAA;oBACrBe,uBAAyBd,EAAAA,kCAAAA;oBACzBe,wBAA0Bd,EAAAA,mCAAAA;oBAC1Be,kBAAoBd,EAAAA,4BAAAA;oBACpBe,mBAAqBd,EAAAA,6BAAAA;oBACrBe,QAAU,EAAA;AACX,iBAAA;gBACDC,SAAW,EAAA;oBACTC,QAAU,EAAA,KAAA;oBACVC,GAAK,EAAA;AACN,iBAAA;gBACDC,MAAQ,EAAA;oBACNC,IAAM,EAAA;wBACJC,OAAS,EAAA;4BACPC,MAAQ,EAAA,2BAAA;4BACRC,MAAQ,EAAA;AACT;AACF;AACF,iBAAA;gBACDC,QAAU,EAAA;oBACRC,QAASD,CAAAA,CAAAA,QAAQ,EAAEE,QAAQ,EAAA;wBACzB,IAAIC,SAAAA;wBACJ,IAAIC,iBAAAA;wBAEJ,IAAI;AACFD,4BAAAA,SAAAA,GAAY,IAAIE,GAAIL,CAAAA,QAAAA,CAAAA;4BACpBI,iBAAoB,GAAA,IAAIC,GAAIH,CAAAA,QAAAA,CAASF,QAAQ,CAAA;AACvD,yBAAA,CAAU,OAAM;AACN,4BAAA,MAAM,IAAIM,KAAM,CAAA,iCAAA,CAAA;AACjB;;AAGD,wBAAA,IAAIH,SAAUI,CAAAA,MAAM,KAAKH,iBAAAA,CAAkBG,MAAM,EAAE;AACjD,4BAAA,MAAM,IAAID,KAAAA,CACR,CAAC,4EAA4E,CAAC,CAAA;AAEjF;;AAGD,wBAAA,IAAIH,SAAUK,CAAAA,QAAQ,KAAKJ,iBAAAA,CAAkBI,QAAQ,EAAE;AACrD,4BAAA,MAAM,IAAIF,KAAAA,CACR,CAAC,6EAA6E,CAAC,CAAA;AAElF;;AAGF;AACF;aACL,CAAA;QACEG,SAAc,CAAA,GAAA;AAChB,KAAA;;;;;;"}