@webiny/api-headless-cms 5.23.1 → 5.25.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/content/contextSetup.js.map +1 -0
  2. package/content/graphQLHandlerFactory.js +12 -2
  3. package/content/graphQLHandlerFactory.js.map +1 -0
  4. package/content/parameterPlugins.js.map +1 -0
  5. package/content/plugins/CmsGroupPlugin.js.map +1 -0
  6. package/content/plugins/CmsModelPlugin.js.map +1 -0
  7. package/content/plugins/CmsParametersPlugin.d.ts +1 -1
  8. package/content/plugins/CmsParametersPlugin.js.map +1 -0
  9. package/content/plugins/buildSchemaPlugins.js.map +1 -0
  10. package/content/plugins/crud/contentEntry/afterDelete.d.ts +3 -2
  11. package/content/plugins/crud/contentEntry/afterDelete.js +2 -1
  12. package/content/plugins/crud/contentEntry/afterDelete.js.map +1 -0
  13. package/content/plugins/crud/contentEntry/beforeCreate.d.ts +3 -2
  14. package/content/plugins/crud/contentEntry/beforeCreate.js.map +1 -0
  15. package/content/plugins/crud/contentEntry/beforeUpdate.d.ts +3 -2
  16. package/content/plugins/crud/contentEntry/beforeUpdate.js.map +1 -0
  17. package/content/plugins/crud/contentEntry/entryDataValidation.d.ts +2 -2
  18. package/content/plugins/crud/contentEntry/entryDataValidation.js +2 -3
  19. package/content/plugins/crud/contentEntry/entryDataValidation.js.map +1 -0
  20. package/content/plugins/crud/contentEntry/markLockedFields.d.ts +2 -1
  21. package/content/plugins/crud/contentEntry/markLockedFields.js +1 -1
  22. package/content/plugins/crud/contentEntry/markLockedFields.js.map +1 -0
  23. package/content/plugins/crud/contentEntry/referenceFieldsMapping.js +7 -3
  24. package/content/plugins/crud/contentEntry/referenceFieldsMapping.js.map +1 -0
  25. package/content/plugins/crud/contentEntry.crud.d.ts +2 -2
  26. package/content/plugins/crud/contentEntry.crud.js +24 -13
  27. package/content/plugins/crud/contentEntry.crud.js.map +1 -0
  28. package/content/plugins/crud/contentModel/afterCreate.d.ts +3 -2
  29. package/content/plugins/crud/contentModel/afterCreate.js.map +1 -0
  30. package/content/plugins/crud/contentModel/afterDelete.d.ts +3 -2
  31. package/content/plugins/crud/contentModel/afterDelete.js.map +1 -0
  32. package/content/plugins/crud/contentModel/afterUpdate.d.ts +3 -2
  33. package/content/plugins/crud/contentModel/afterUpdate.js.map +1 -0
  34. package/content/plugins/crud/contentModel/beforeCreate.d.ts +5 -4
  35. package/content/plugins/crud/contentModel/beforeCreate.js +1 -1
  36. package/content/plugins/crud/contentModel/beforeCreate.js.map +1 -0
  37. package/content/plugins/crud/contentModel/beforeDelete.d.ts +3 -2
  38. package/content/plugins/crud/contentModel/beforeDelete.js.map +1 -0
  39. package/content/plugins/crud/contentModel/beforeUpdate.d.ts +3 -2
  40. package/content/plugins/crud/contentModel/beforeUpdate.js +77 -0
  41. package/content/plugins/crud/contentModel/beforeUpdate.js.map +1 -0
  42. package/content/plugins/crud/contentModel/contentModelManagerFactory.d.ts +2 -2
  43. package/content/plugins/crud/contentModel/contentModelManagerFactory.js.map +1 -0
  44. package/content/plugins/crud/contentModel/createFieldModels.js.map +1 -0
  45. package/content/plugins/crud/contentModel/idValidation.js.map +1 -0
  46. package/content/plugins/crud/contentModel/models.js +9 -0
  47. package/content/plugins/crud/contentModel/models.js.map +1 -0
  48. package/content/plugins/crud/contentModel/validateLayout.js.map +1 -0
  49. package/content/plugins/crud/contentModel.crud.d.ts +2 -2
  50. package/content/plugins/crud/contentModel.crud.js +2 -2
  51. package/content/plugins/crud/contentModel.crud.js.map +1 -0
  52. package/content/plugins/crud/contentModelGroup/beforeCreate.d.ts +3 -2
  53. package/content/plugins/crud/contentModelGroup/beforeCreate.js.map +1 -0
  54. package/content/plugins/crud/contentModelGroup/beforeDelete.d.ts +3 -2
  55. package/content/plugins/crud/contentModelGroup/beforeDelete.js.map +1 -0
  56. package/content/plugins/crud/contentModelGroup/beforeUpdate.d.ts +3 -2
  57. package/content/plugins/crud/contentModelGroup/beforeUpdate.js.map +1 -0
  58. package/content/plugins/crud/contentModelGroup.crud.d.ts +2 -2
  59. package/content/plugins/crud/contentModelGroup.crud.js.map +1 -0
  60. package/content/plugins/crud/index.d.ts +2 -2
  61. package/content/plugins/crud/index.js.map +1 -0
  62. package/content/plugins/graphqlFields/boolean.js +2 -6
  63. package/content/plugins/graphqlFields/boolean.js.map +1 -0
  64. package/content/plugins/graphqlFields/datetime.js +5 -3
  65. package/content/plugins/graphqlFields/datetime.js.map +1 -0
  66. package/content/plugins/graphqlFields/file.js +2 -6
  67. package/content/plugins/graphqlFields/file.js.map +1 -0
  68. package/content/plugins/graphqlFields/helpers.d.ts +6 -0
  69. package/content/plugins/graphqlFields/helpers.js +49 -0
  70. package/content/plugins/graphqlFields/helpers.js.map +1 -0
  71. package/content/plugins/graphqlFields/index.js.map +1 -0
  72. package/content/plugins/graphqlFields/longText.js +2 -6
  73. package/content/plugins/graphqlFields/longText.js.map +1 -0
  74. package/content/plugins/graphqlFields/number.js +2 -6
  75. package/content/plugins/graphqlFields/number.js.map +1 -0
  76. package/content/plugins/graphqlFields/object.js +20 -18
  77. package/content/plugins/graphqlFields/object.js.map +1 -0
  78. package/content/plugins/graphqlFields/ref.js +51 -18
  79. package/content/plugins/graphqlFields/ref.js.map +1 -0
  80. package/content/plugins/graphqlFields/richText.js +2 -6
  81. package/content/plugins/graphqlFields/richText.js.map +1 -0
  82. package/content/plugins/graphqlFields/text.js +2 -6
  83. package/content/plugins/graphqlFields/text.js.map +1 -0
  84. package/content/plugins/internalSecurity/InternalAuthenticationPlugin.d.ts +1 -1
  85. package/content/plugins/internalSecurity/InternalAuthenticationPlugin.js +1 -0
  86. package/content/plugins/internalSecurity/InternalAuthenticationPlugin.js.map +1 -0
  87. package/content/plugins/internalSecurity/InternalAuthorizationPlugin.d.ts +1 -1
  88. package/content/plugins/internalSecurity/InternalAuthorizationPlugin.js +1 -0
  89. package/content/plugins/internalSecurity/InternalAuthorizationPlugin.js.map +1 -0
  90. package/content/plugins/modelManager/DefaultCmsModelManager.d.ts +3 -3
  91. package/content/plugins/modelManager/DefaultCmsModelManager.js.map +1 -0
  92. package/content/plugins/modelManager/index.js.map +1 -0
  93. package/content/plugins/schema/baseSchema.js +1 -0
  94. package/content/plugins/schema/baseSchema.js.map +1 -0
  95. package/content/plugins/schema/contentEntries.js +12 -5
  96. package/content/plugins/schema/contentEntries.js.map +1 -0
  97. package/content/plugins/schema/contentModelGroups.js +1 -2
  98. package/content/plugins/schema/contentModelGroups.js.map +1 -0
  99. package/content/plugins/schema/contentModels.js +2 -3
  100. package/content/plugins/schema/contentModels.js.map +1 -0
  101. package/content/plugins/schema/createFieldResolvers.d.ts +8 -7
  102. package/content/plugins/schema/createFieldResolvers.js +25 -12
  103. package/content/plugins/schema/createFieldResolvers.js.map +1 -0
  104. package/content/plugins/schema/createManageResolvers.d.ts +7 -6
  105. package/content/plugins/schema/createManageResolvers.js.map +1 -0
  106. package/content/plugins/schema/createManageSDL.d.ts +5 -4
  107. package/content/plugins/schema/createManageSDL.js.map +1 -0
  108. package/content/plugins/schema/createPreviewResolvers.d.ts +8 -6
  109. package/content/plugins/schema/createPreviewResolvers.js.map +1 -0
  110. package/content/plugins/schema/createReadResolvers.d.ts +8 -6
  111. package/content/plugins/schema/createReadResolvers.js.map +1 -0
  112. package/content/plugins/schema/createReadSDL.d.ts +7 -6
  113. package/content/plugins/schema/createReadSDL.js.map +1 -0
  114. package/content/plugins/schema/resolvers/commonFieldResolvers.d.ts +1 -1
  115. package/content/plugins/schema/resolvers/commonFieldResolvers.js.map +1 -0
  116. package/content/plugins/schema/resolvers/manage/resolveCreate.d.ts +5 -4
  117. package/content/plugins/schema/resolvers/manage/resolveCreate.js +2 -4
  118. package/content/plugins/schema/resolvers/manage/resolveCreate.js.map +1 -0
  119. package/content/plugins/schema/resolvers/manage/resolveCreateFrom.d.ts +5 -4
  120. package/content/plugins/schema/resolvers/manage/resolveCreateFrom.js +2 -4
  121. package/content/plugins/schema/resolvers/manage/resolveCreateFrom.js.map +1 -0
  122. package/content/plugins/schema/resolvers/manage/resolveDelete.d.ts +6 -1
  123. package/content/plugins/schema/resolvers/manage/resolveDelete.js +4 -8
  124. package/content/plugins/schema/resolvers/manage/resolveDelete.js.map +1 -0
  125. package/content/plugins/schema/resolvers/manage/resolveGet.d.ts +6 -1
  126. package/content/plugins/schema/resolvers/manage/resolveGet.js.map +1 -0
  127. package/content/plugins/schema/resolvers/manage/resolveGetByIds.d.ts +6 -1
  128. package/content/plugins/schema/resolvers/manage/resolveGetByIds.js +2 -4
  129. package/content/plugins/schema/resolvers/manage/resolveGetByIds.js.map +1 -0
  130. package/content/plugins/schema/resolvers/manage/resolveGetRevisions.d.ts +6 -1
  131. package/content/plugins/schema/resolvers/manage/resolveGetRevisions.js +2 -4
  132. package/content/plugins/schema/resolvers/manage/resolveGetRevisions.js.map +1 -0
  133. package/content/plugins/schema/resolvers/manage/resolveList.d.ts +4 -2
  134. package/content/plugins/schema/resolvers/manage/resolveList.js +2 -4
  135. package/content/plugins/schema/resolvers/manage/resolveList.js.map +1 -0
  136. package/content/plugins/schema/resolvers/manage/resolvePublish.d.ts +6 -1
  137. package/content/plugins/schema/resolvers/manage/resolvePublish.js.map +1 -0
  138. package/content/plugins/schema/resolvers/manage/resolveRepublish.d.ts +6 -1
  139. package/content/plugins/schema/resolvers/manage/resolveRepublish.js.map +1 -0
  140. package/content/plugins/schema/resolvers/manage/resolveRequestChanges.d.ts +3 -2
  141. package/content/plugins/schema/resolvers/manage/resolveRequestChanges.js +2 -4
  142. package/content/plugins/schema/resolvers/manage/resolveRequestChanges.js.map +1 -0
  143. package/content/plugins/schema/resolvers/manage/resolveRequestReview.d.ts +3 -2
  144. package/content/plugins/schema/resolvers/manage/resolveRequestReview.js +2 -4
  145. package/content/plugins/schema/resolvers/manage/resolveRequestReview.js.map +1 -0
  146. package/content/plugins/schema/resolvers/manage/resolveUnpublish.d.ts +6 -1
  147. package/content/plugins/schema/resolvers/manage/resolveUnpublish.js.map +1 -0
  148. package/content/plugins/schema/resolvers/manage/resolveUpdate.d.ts +5 -4
  149. package/content/plugins/schema/resolvers/manage/resolveUpdate.js +2 -4
  150. package/content/plugins/schema/resolvers/manage/resolveUpdate.js.map +1 -0
  151. package/content/plugins/schema/resolvers/preview/resolveGet.d.ts +4 -2
  152. package/content/plugins/schema/resolvers/preview/resolveGet.js.map +1 -0
  153. package/content/plugins/schema/resolvers/preview/resolveList.d.ts +4 -2
  154. package/content/plugins/schema/resolvers/preview/resolveList.js +2 -4
  155. package/content/plugins/schema/resolvers/preview/resolveList.js.map +1 -0
  156. package/content/plugins/schema/resolvers/read/resolveGet.d.ts +4 -2
  157. package/content/plugins/schema/resolvers/read/resolveGet.js.map +1 -0
  158. package/content/plugins/schema/resolvers/read/resolveList.d.ts +4 -2
  159. package/content/plugins/schema/resolvers/read/resolveList.js +2 -4
  160. package/content/plugins/schema/resolvers/read/resolveList.js.map +1 -0
  161. package/content/plugins/schema/schemaPlugins.js.map +1 -0
  162. package/content/plugins/storage/StorageTransformPlugin.d.ts +2 -2
  163. package/content/plugins/storage/StorageTransformPlugin.js.map +1 -0
  164. package/content/plugins/storage/default.js.map +1 -0
  165. package/content/plugins/storage/object.js +15 -10
  166. package/content/plugins/storage/object.js.map +1 -0
  167. package/content/plugins/utils/createTypeName.d.ts +3 -3
  168. package/content/plugins/utils/createTypeName.js.map +1 -0
  169. package/content/plugins/utils/entryStorage.d.ts +2 -2
  170. package/content/plugins/utils/entryStorage.js +0 -4
  171. package/content/plugins/utils/entryStorage.js.map +1 -0
  172. package/content/plugins/utils/getEntryTitle.d.ts +1 -1
  173. package/content/plugins/utils/getEntryTitle.js +1 -1
  174. package/content/plugins/utils/getEntryTitle.js.map +1 -0
  175. package/content/plugins/utils/getSchemaFromFieldPlugins.d.ts +7 -6
  176. package/content/plugins/utils/getSchemaFromFieldPlugins.js +12 -7
  177. package/content/plugins/utils/getSchemaFromFieldPlugins.js.map +1 -0
  178. package/content/plugins/utils/pluralizedTypeName.d.ts +1 -1
  179. package/content/plugins/utils/pluralizedTypeName.js.map +1 -0
  180. package/content/plugins/utils/renderFields.d.ts +11 -12
  181. package/content/plugins/utils/renderFields.js +1 -1
  182. package/content/plugins/utils/renderFields.js.map +1 -0
  183. package/content/plugins/utils/renderGetFilterFields.d.ts +5 -4
  184. package/content/plugins/utils/renderGetFilterFields.js +28 -13
  185. package/content/plugins/utils/renderGetFilterFields.js.map +1 -0
  186. package/content/plugins/utils/renderInputFields.d.ts +10 -10
  187. package/content/plugins/utils/renderInputFields.js.map +1 -0
  188. package/content/plugins/utils/renderListFilterFields.d.ts +7 -6
  189. package/content/plugins/utils/renderListFilterFields.js +24 -12
  190. package/content/plugins/utils/renderListFilterFields.js.map +1 -0
  191. package/content/plugins/utils/renderSortEnum.js +5 -5
  192. package/content/plugins/utils/renderSortEnum.js.map +1 -0
  193. package/content/plugins/validators/dateGte.js +1 -1
  194. package/content/plugins/validators/dateGte.js.map +1 -0
  195. package/content/plugins/validators/dateLte.js +1 -1
  196. package/content/plugins/validators/dateLte.js.map +1 -0
  197. package/content/plugins/validators/gte.js +3 -1
  198. package/content/plugins/validators/gte.js.map +1 -0
  199. package/content/plugins/validators/in.js +3 -1
  200. package/content/plugins/validators/in.js.map +1 -0
  201. package/content/plugins/validators/index.js.map +1 -0
  202. package/content/plugins/validators/lte.js +3 -1
  203. package/content/plugins/validators/lte.js.map +1 -0
  204. package/content/plugins/validators/maxLength.js +3 -1
  205. package/content/plugins/validators/maxLength.js.map +1 -0
  206. package/content/plugins/validators/minLength.js +3 -1
  207. package/content/plugins/validators/minLength.js.map +1 -0
  208. package/content/plugins/validators/pattern.js +2 -2
  209. package/content/plugins/validators/pattern.js.map +1 -0
  210. package/content/plugins/validators/patternPlugins/email.js.map +1 -0
  211. package/content/plugins/validators/patternPlugins/index.js.map +1 -0
  212. package/content/plugins/validators/patternPlugins/lowerCase.js.map +1 -0
  213. package/content/plugins/validators/patternPlugins/lowerCaseSpace.js.map +1 -0
  214. package/content/plugins/validators/patternPlugins/upperCase.js.map +1 -0
  215. package/content/plugins/validators/patternPlugins/upperCaseSpace.js.map +1 -0
  216. package/content/plugins/validators/patternPlugins/url.js.map +1 -0
  217. package/content/plugins/validators/required.js.map +1 -0
  218. package/content/plugins/validators/timeGte.js +3 -1
  219. package/content/plugins/validators/timeGte.js.map +1 -0
  220. package/content/plugins/validators/timeLte.js +3 -1
  221. package/content/plugins/validators/timeLte.js.map +1 -0
  222. package/content/plugins/validators/unique.js +1 -0
  223. package/content/plugins/validators/unique.js.map +1 -0
  224. package/index.d.ts +3 -3
  225. package/index.js.map +1 -0
  226. package/migrateCMSPermissions.d.ts +2 -2
  227. package/migrateCMSPermissions.js +4 -0
  228. package/migrateCMSPermissions.js.map +1 -0
  229. package/package.json +27 -26
  230. package/plugins/context.js +8 -3
  231. package/plugins/context.js.map +1 -0
  232. package/plugins/crud/index.d.ts +2 -2
  233. package/plugins/crud/index.js.map +1 -0
  234. package/plugins/crud/settings.crud.d.ts +2 -2
  235. package/plugins/crud/settings.crud.js.map +1 -0
  236. package/plugins/crud/system.crud.d.ts +3 -2
  237. package/plugins/crud/system.crud.js +2 -2
  238. package/plugins/crud/system.crud.js.map +1 -0
  239. package/plugins/graphql/system.d.ts +5 -4
  240. package/plugins/graphql/system.js +5 -3
  241. package/plugins/graphql/system.js.map +1 -0
  242. package/plugins/graphql.js +7 -0
  243. package/plugins/graphql.js.map +1 -0
  244. package/plugins/upgrades/index.js.map +1 -0
  245. package/plugins/upgrades/v5.5.0/helpers.js.map +1 -0
  246. package/plugins/upgrades/v5.5.0/index.js +5 -0
  247. package/plugins/upgrades/v5.5.0/index.js.map +1 -0
  248. package/transformers.js.map +1 -0
  249. package/types.d.ts +70 -40
  250. package/types.js +6 -0
  251. package/types.js.map +1 -0
  252. package/utils.d.ts +14 -16
  253. package/utils.js.map +1 -0
  254. package/content/plugins/graphqlFields/requiredField.d.ts +0 -2
  255. package/content/plugins/graphqlFields/requiredField.js +0 -24
package/utils.d.ts CHANGED
@@ -1,19 +1,16 @@
1
- import { SecurityPermission } from "@webiny/api-security/types";
2
- import { CmsModel, CmsContext, CreatedBy, CmsGroupPermission, CmsGroup } from "./types";
3
- export declare const hasRwd: (permission: any, rwd: any) => any;
4
- export declare const hasPw: (permission: any, pw: any) => any;
5
- export declare const checkPermissions: <TPermission extends SecurityPermission = SecurityPermission>(context: CmsContext, name: string, check?: {
6
- rwd?: string;
7
- pw?: string;
8
- }) => Promise<TPermission>;
9
- export declare const checkOwnership: (context: CmsContext, permission: SecurityPermission, record: {
1
+ import { CmsModel, CmsContext, CreatedBy, CmsGroupPermission, CmsGroup, CmsEntryPermission, BaseCmsSecurityPermission } from "./types";
2
+ export declare const hasRwd: (permission: BaseCmsSecurityPermission, rwd: string) => boolean;
3
+ export declare const hasPw: (permission: CmsEntryPermission, pw: string) => boolean;
4
+ export declare const checkPermissions: <TPermission extends BaseCmsSecurityPermission = BaseCmsSecurityPermission>(context: CmsContext, name: string, check?: {
5
+ rwd?: string | undefined;
6
+ pw?: string | undefined;
7
+ } | undefined) => Promise<TPermission>;
8
+ interface OwnableRecord {
10
9
  createdBy?: CreatedBy;
11
10
  ownedBy?: CreatedBy;
12
- }) => void;
13
- export declare const validateOwnership: (context: CmsContext, permission: SecurityPermission, record: {
14
- createdBy?: CreatedBy;
15
- ownedBy?: CreatedBy;
16
- }) => boolean;
11
+ }
12
+ export declare const checkOwnership: (context: CmsContext, permission: BaseCmsSecurityPermission, record: OwnableRecord) => void;
13
+ export declare const validateOwnership: (context: CmsContext, permission: BaseCmsSecurityPermission, record: OwnableRecord) => boolean;
17
14
  /**
18
15
  * model access is checking for both specific model or group access
19
16
  * if permission has specific models set as access pattern then groups will not matter (although both can be set)
@@ -21,5 +18,6 @@ export declare const validateOwnership: (context: CmsContext, permission: Securi
21
18
  export declare const checkModelAccess: (context: CmsContext, model: CmsModel) => Promise<void>;
22
19
  export declare const validateModelAccess: (context: CmsContext, model: CmsModel) => Promise<boolean>;
23
20
  export declare const validateGroupAccess: (context: CmsContext, permission: CmsGroupPermission, group: CmsGroup) => boolean;
24
- export declare const toSlug: (text: any) => string;
25
- export declare const filterAsync: <T = Record<string, any>>(items: T[], predicate: (T: any) => Promise<boolean>) => Promise<T[]>;
21
+ export declare const toSlug: (text: string) => string;
22
+ export declare const filterAsync: <T = Record<string, any>>(items: T[], predicate: (param: T) => Promise<boolean>) => Promise<T[]>;
23
+ export {};
package/utils.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["utils.ts"],"names":["hasRwd","permission","rwd","includes","hasPw","pw","isCustom","Object","keys","length","PW","r","c","p","u","RWD","w","d","checkPermissions","context","name","check","contentPermission","security","getPermission","NotAuthorizedError","data","reason","code","cms","getLocale","Array","isArray","locales","checkOwnership","record","own","identity","getIdentity","owner","id","creator","validateOwnership","checkModelAccess","model","validateModelAccess","modelId","modelGroupPermission","groups","modelPermission","models","locale","group","validateGroupAccess","toSlug","text","replacement","lower","remove","filterAsync","items","predicate","filteredItems","i","item","valid","push"],"mappings":"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","sourcesContent":["import slugify from \"slugify\";\nimport { NotAuthorizedError } from \"@webiny/api-security\";\n\nimport {\n CmsModelPermission,\n CmsModel,\n CmsContext,\n CreatedBy,\n CmsGroupPermission,\n CmsGroup,\n CmsEntryPermission,\n BaseCmsSecurityPermission\n} from \"~/types\";\n\nexport const hasRwd = (permission: BaseCmsSecurityPermission, rwd: string): boolean => {\n if (typeof permission.rwd !== \"string\") {\n return true;\n }\n\n return permission.rwd.includes(rwd);\n};\n\nexport const hasPw = (permission: CmsEntryPermission, pw: string): boolean => {\n const isCustom = Object.keys(permission).length > 1; // \"name\" key is always present\n\n if (!isCustom) {\n // Means it's a \"full-access\" permission.\n return true;\n }\n\n if (typeof permission.pw !== \"string\") {\n return false;\n }\n\n return permission.pw.includes(pw);\n};\n\nconst PW: Record<string, string> = {\n r: \"request review\",\n c: \"request change\",\n p: \"publish\",\n u: \"unpublish\"\n};\n\nconst RWD: Record<string, string> = {\n r: \"read\",\n w: \"write\",\n d: \"delete\"\n};\n\nexport const checkPermissions = async <\n TPermission extends BaseCmsSecurityPermission = BaseCmsSecurityPermission\n>(\n context: CmsContext,\n name: string,\n check?: { rwd?: string; pw?: string }\n): Promise<TPermission> => {\n // Check if user is allowed to edit content in current language\n const contentPermission: any = await context.security.getPermission(\"content.i18n\");\n\n if (!contentPermission) {\n throw new NotAuthorizedError({\n data: {\n reason: \"Missing access to content in any locale.\"\n }\n });\n }\n\n // We need to check this manually as CMS locale comes from the URL and not the default i18n app.\n const code = context.cms.getLocale().code;\n\n // IMPORTANT: If we have a `contentPermission`, and `locales` key is NOT SET - it means the user has access to all locales.\n // However, if the the `locales` IS SET - check that it contains the required locale.\n if (Array.isArray(contentPermission.locales) && !contentPermission.locales.includes(code)) {\n throw new NotAuthorizedError({\n data: {\n reason: `Not allowed to access content in \"${code}.\"`\n }\n });\n }\n\n const permission = await context.security.getPermission<TPermission>(name);\n\n if (!permission) {\n throw new NotAuthorizedError({\n data: {\n reason: `Missing permission \"${name}\".`\n }\n });\n }\n\n if (!check) {\n return permission;\n }\n\n if (check.rwd && !hasRwd(permission, check.rwd)) {\n throw new NotAuthorizedError({\n data: {\n reason: `Not allowed to perform \"${RWD[check.rwd]}\" on \"${name}\".`\n }\n });\n }\n\n // r = request review\n // c = request change\n // p = publish\n // u = unpublish\n if (check.pw && !hasPw(permission, check.pw)) {\n throw new NotAuthorizedError({\n data: {\n reason: `Not allowed to perform \"${PW[check.pw]}\" on \"${name}\".`\n }\n });\n }\n\n return permission;\n};\n\ninterface OwnableRecord {\n createdBy?: CreatedBy;\n ownedBy?: CreatedBy;\n}\n\nexport const checkOwnership = (\n context: CmsContext,\n permission: BaseCmsSecurityPermission,\n record: OwnableRecord\n): void => {\n if (!permission.own) {\n return;\n }\n\n const identity = context.security.getIdentity();\n const owner = identity && record[\"ownedBy\"] && record[\"ownedBy\"].id === identity.id;\n const creator = identity && record[\"createdBy\"] && record[\"createdBy\"].id === identity.id;\n\n if (!owner && !creator) {\n throw new NotAuthorizedError({\n data: {\n reason: `You are not the owner of the record.`\n }\n });\n }\n};\n\nexport const validateOwnership = (\n context: CmsContext,\n permission: BaseCmsSecurityPermission,\n record: OwnableRecord\n): boolean => {\n try {\n checkOwnership(context, permission, record);\n return true;\n } catch {\n return false;\n }\n};\n/**\n * model access is checking for both specific model or group access\n * if permission has specific models set as access pattern then groups will not matter (although both can be set)\n */\nexport const checkModelAccess = async (context: CmsContext, model: CmsModel): Promise<void> => {\n if (await validateModelAccess(context, model)) {\n return;\n }\n throw new NotAuthorizedError({\n data: {\n reason: `Not allowed to access model \"${model.modelId}\".`\n }\n });\n};\nexport const validateModelAccess = async (\n context: CmsContext,\n model: CmsModel\n): Promise<boolean> => {\n const modelGroupPermission: CmsGroupPermission = await checkPermissions(\n context,\n \"cms.contentModelGroup\",\n { rwd: \"r\" }\n );\n const { groups } = modelGroupPermission;\n\n const modelPermission: CmsModelPermission = await checkPermissions(\n context,\n \"cms.contentModel\",\n {\n rwd: \"r\"\n }\n );\n const { models } = modelPermission;\n // when no models or groups defined on permission\n // it means user has access to everything\n if (!models && !groups) {\n return true;\n }\n const locale = context.cms.getLocale().code;\n // Check whether the model is question belongs to \"content model groups\" for which user has permission.\n if (groups) {\n if (\n Array.isArray(groups[locale]) === false ||\n groups[locale].includes(model.group.id) === false\n ) {\n return false;\n }\n }\n // Check whether the model is question belongs to \"content models\" for which user has permission.\n if (models) {\n if (\n Array.isArray(models[locale]) === false ||\n models[locale].includes(model.modelId) === false\n ) {\n return false;\n }\n }\n\n return true;\n};\nexport const validateGroupAccess = (\n context: CmsContext,\n permission: CmsGroupPermission,\n group: CmsGroup\n): boolean => {\n const { groups } = permission;\n // when no groups defined on permission\n // it means user has access to everything\n if (!groups) {\n return true;\n }\n const locale = context.cms.getLocale().code;\n // when there is no locale in groups, it means that no access was given\n // this happens when access control was set but no models or groups were added\n if (Array.isArray(groups[locale]) === false || groups[locale].includes(group.id) === false) {\n return false;\n }\n return true;\n};\n\nexport const toSlug = (text: string): string => {\n return slugify(text, {\n replacement: \"-\",\n lower: true,\n remove: /[*#\\?<>_\\{\\}\\[\\]+~.()'\"!:;@]/g\n });\n};\n\nexport const filterAsync = async <T = Record<string, any>>(\n items: T[],\n predicate: (param: T) => Promise<boolean>\n): Promise<T[]> => {\n const filteredItems = [];\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const valid = await predicate(item);\n if (valid) {\n filteredItems.push(item);\n }\n }\n\n return filteredItems;\n};\n"]}
@@ -1,2 +0,0 @@
1
- import { CmsModelField } from "../../../types";
2
- export declare const attachRequiredFieldValue: (def: string, field: CmsModelField) => string;
@@ -1,24 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.attachRequiredFieldValue = void 0;
7
-
8
- const attachRequiredFieldValue = (def, field) => {
9
- if (!field.validation || field.validation.length === 0) {
10
- return def;
11
- }
12
-
13
- const isRequired = field.validation.some(validation => {
14
- return validation.name === "required";
15
- });
16
-
17
- if (!isRequired) {
18
- return def;
19
- }
20
-
21
- return `${def}!`;
22
- };
23
-
24
- exports.attachRequiredFieldValue = attachRequiredFieldValue;