@webbio/strapi-plugin-page-builder 0.12.2-platform → 0.12.3-platform

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 (172) hide show
  1. package/README.md +166 -166
  2. package/admin/src/api/collection-type.ts +111 -111
  3. package/admin/src/api/entity-relation.ts +42 -42
  4. package/admin/src/api/has-page-relation.ts +37 -37
  5. package/admin/src/api/has-platform-relation.ts +40 -40
  6. package/admin/src/api/page-type-relation.ts +41 -41
  7. package/admin/src/api/platform-page-types.ts +45 -45
  8. package/admin/src/api/platform-relation.ts +42 -42
  9. package/admin/src/api/platform.ts +35 -35
  10. package/admin/src/api/search-filtered-entity.ts +114 -114
  11. package/admin/src/api/template.ts +39 -39
  12. package/admin/src/components/Combobox/index.tsx +83 -83
  13. package/admin/src/components/Combobox/react-select-custom-styles.tsx +121 -121
  14. package/admin/src/components/Combobox/styles.ts +46 -46
  15. package/admin/src/components/ConfirmModal/index.tsx +90 -90
  16. package/admin/src/components/EditView/CollectionTypeSearch/index.tsx +127 -127
  17. package/admin/src/components/EditView/CollectionTypeSettings/CreatePageButton/index.tsx +149 -149
  18. package/admin/src/components/EditView/CollectionTypeSettings/CreatePageButton/styles.ts +19 -19
  19. package/admin/src/components/EditView/CollectionTypeSettings/index.tsx +82 -82
  20. package/admin/src/components/EditView/Details/index.tsx +48 -48
  21. package/admin/src/components/EditView/Details/styles.ts +51 -51
  22. package/admin/src/components/EditView/PageSettings/index.tsx +124 -124
  23. package/admin/src/components/EditView/Platform/platform-select.tsx +30 -30
  24. package/admin/src/components/EditView/Template/TemplateConfirmModal/index.tsx +36 -36
  25. package/admin/src/components/EditView/Template/TemplateSelect/index.tsx +70 -70
  26. package/admin/src/components/EditView/Template/TemplateSelect/use-template-modules.ts +41 -41
  27. package/admin/src/components/EditView/index.tsx +35 -35
  28. package/admin/src/components/EditView/page-type-select.tsx +32 -32
  29. package/admin/src/components/EditView/wrapper.tsx +41 -41
  30. package/admin/src/components/GlobalPlatformSelect/index.tsx +40 -40
  31. package/admin/src/components/GlobalPlatformSelect/styles.ts +27 -27
  32. package/admin/src/components/Initializer/index.tsx +24 -24
  33. package/admin/src/components/PageFilters/PageTypeFilter/index.tsx +39 -39
  34. package/admin/src/components/PageFilters/PlatformFilter/index.tsx +32 -32
  35. package/admin/src/components/PageFilters/filters.tsx +189 -189
  36. package/admin/src/components/PageFilters/index.tsx +35 -35
  37. package/admin/src/components/PageTypeEditView/TemplatePlatformSelect/index.tsx +76 -76
  38. package/admin/src/components/PageTypeEditView/index.tsx +53 -53
  39. package/admin/src/components/PlatformFilteredSelectField/InputIcon/index.tsx +23 -23
  40. package/admin/src/components/PlatformFilteredSelectField/Multi/index.tsx +210 -210
  41. package/admin/src/components/PlatformFilteredSelectField/Single/index.tsx +197 -197
  42. package/admin/src/components/PlatformFilteredSelectField/hooks/useRelationLoad.tsx +128 -128
  43. package/admin/src/components/PlatformFilteredSelectField/index.tsx +85 -85
  44. package/admin/src/components/PlatformFilteredSelectField/styles.tsx +77 -77
  45. package/admin/src/components/PlatformFilteredSelectField/utils/get-translations.ts +3 -3
  46. package/admin/src/components/PlatformFilteredSelectField/utils/relation-helper.ts +147 -147
  47. package/admin/src/components/PluginIcon/index.tsx +94 -94
  48. package/admin/src/components/StrapiCore/admin/admin/src/content-manager/components/Relations/RelationInput.tsx +689 -689
  49. package/admin/src/components/StrapiCore/admin/admin/src/content-manager/components/Relations/RelationInputDataManager.tsx +6 -6
  50. package/admin/src/components/StrapiCore/admin/admin/src/content-manager/components/Relations/useRelation.ts +170 -170
  51. package/admin/src/components/StrapiCore/admin/admin/src/content-manager/components/Relations/utils/getRelationLink.ts +5 -5
  52. package/admin/src/components/StrapiCore/admin/admin/src/content-manager/components/Relations/utils/normalizeRelations.ts +52 -52
  53. package/admin/src/components/StrapiCore/admin/admin/src/content-manager/constants/attributes.ts +3 -3
  54. package/admin/src/components/StrapiCore/admin/admin/src/content-manager/hooks/useDragAndDrop.ts +253 -253
  55. package/admin/src/components/StrapiCore/admin/admin/src/content-manager/hooks/useKeyboardDragAndDrop.ts +96 -96
  56. package/admin/src/components/StrapiCore/admin/admin/src/content-manager/hooks/usePrev.ts +11 -11
  57. package/admin/src/components/StrapiCore/admin/admin/src/content-manager/utils/dragAndDrop.ts +8 -8
  58. package/admin/src/components/StrapiCore/admin/admin/src/content-manager/utils/paths.ts +29 -29
  59. package/admin/src/components/StrapiCore/admin/admin/src/content-manager/utils/refs.ts +19 -19
  60. package/admin/src/components/StrapiCore/admin/admin/src/content-manager/utils/translations.ts +3 -3
  61. package/admin/src/components/StrapiCore/content-manager/shared/contracts/collection-types.ts +300 -300
  62. package/admin/src/components/StrapiCore/content-manager/shared/contracts/components.ts +72 -72
  63. package/admin/src/components/StrapiCore/content-manager/shared/contracts/content-types.ts +116 -116
  64. package/admin/src/components/StrapiCore/content-manager/shared/contracts/index.ts +8 -8
  65. package/admin/src/components/StrapiCore/content-manager/shared/contracts/init.ts +22 -22
  66. package/admin/src/components/StrapiCore/content-manager/shared/contracts/relations.ts +80 -80
  67. package/admin/src/components/StrapiCore/content-manager/shared/contracts/review-workflows.ts +88 -88
  68. package/admin/src/components/StrapiCore/content-manager/shared/contracts/single-types.ts +112 -112
  69. package/admin/src/components/StrapiCore/content-manager/shared/contracts/uid.ts +48 -48
  70. package/admin/src/components/StrapiCore/content-manager/shared/index.ts +1 -1
  71. package/admin/src/constants.ts +3 -3
  72. package/admin/src/index.tsx +101 -101
  73. package/admin/src/middlewares/index.tsx +37 -37
  74. package/admin/src/pages/app/index.tsx +14 -14
  75. package/admin/src/pluginId.ts +5 -5
  76. package/admin/src/translations/en.json +9 -9
  77. package/admin/src/translations/nl.json +9 -9
  78. package/admin/src/utils/findDomElement.ts +6 -6
  79. package/admin/src/utils/findElementParent.ts +20 -20
  80. package/admin/src/utils/getObjectFromFormName.ts +42 -42
  81. package/admin/src/utils/getRequestUrl.ts +11 -11
  82. package/admin/src/utils/getTrad.ts +5 -5
  83. package/admin/src/utils/hooks/useDebounce.ts +17 -17
  84. package/admin/src/utils/hooks/useDefaultPlatformFromLocalStorage.ts +61 -61
  85. package/admin/src/utils/hooks/useGetLocaleFromUrl.ts +9 -9
  86. package/admin/src/utils/hooks/useHideOverviewFilterTags.ts +34 -34
  87. package/admin/src/utils/hooks/usePlatformFormData.ts +64 -64
  88. package/admin/src/utils/hooks/usePrevious.ts +12 -12
  89. package/admin/src/utils/sanitizeModules.ts +93 -93
  90. package/custom.d.ts +6 -6
  91. package/dist/package.json +1 -1
  92. package/dist/server/bootstrap.js +1 -1
  93. package/dist/server/graphql/page-by-path.js +20 -17
  94. package/dist/server/graphql/pages-by-uid.js +5 -5
  95. package/dist/server/services/private-content/graphql/index.js +27 -27
  96. package/dist/server/services/private-content/graphql/types/index.js +74 -74
  97. package/dist/tsconfig.server.tsbuildinfo +1 -1
  98. package/package.json +78 -78
  99. package/server/bootstrap/collection-type-lifecycles.ts +47 -47
  100. package/server/bootstrap/permissions.ts +161 -161
  101. package/server/bootstrap.ts +261 -261
  102. package/server/config/index.ts +4 -4
  103. package/server/content-types/index.ts +7 -7
  104. package/server/content-types/user-category/schema.json +23 -23
  105. package/server/controllers/collection-types.ts +32 -32
  106. package/server/controllers/index.ts +19 -19
  107. package/server/controllers/page-type.ts +18 -18
  108. package/server/controllers/page.ts +9 -9
  109. package/server/controllers/platform.ts +21 -21
  110. package/server/controllers/private-content.ts +17 -17
  111. package/server/controllers/sitemap.ts +32 -32
  112. package/server/controllers/template.ts +16 -16
  113. package/server/controllers/user-category.ts +3 -3
  114. package/server/destroy.ts +5 -5
  115. package/server/graphql/index.ts +9 -9
  116. package/server/graphql/page-by-path.ts +135 -132
  117. package/server/graphql/page-type.ts +67 -67
  118. package/server/graphql/pages-by-uid.ts +89 -89
  119. package/server/index.ts +23 -23
  120. package/server/middlewares/index.ts +1 -1
  121. package/server/policies/index.ts +5 -5
  122. package/server/policies/isAuthorizedPage.ts +11 -11
  123. package/server/register.ts +22 -22
  124. package/server/routes/index.ts +115 -115
  125. package/server/routes/user-category.ts +3 -3
  126. package/server/schema/page-end.json +96 -96
  127. package/server/schema/page-start.json +87 -87
  128. package/server/schema/page-type-end.json +53 -53
  129. package/server/schema/page-type-start.json +38 -38
  130. package/server/schema/platform-start.json +21 -21
  131. package/server/schema/template-end.json +40 -40
  132. package/server/schema/template-start.json +35 -35
  133. package/server/services/builder.ts +232 -232
  134. package/server/services/collection-types.ts +95 -95
  135. package/server/services/email.ts +127 -127
  136. package/server/services/index.ts +23 -23
  137. package/server/services/page-type.ts +30 -30
  138. package/server/services/page.ts +24 -24
  139. package/server/services/platform.ts +30 -30
  140. package/server/services/private-content/components/admin-email.json +22 -22
  141. package/server/services/private-content/components/email.json +22 -22
  142. package/server/services/private-content/components/platform-email.json +30 -30
  143. package/server/services/private-content/constants/index.ts +13 -13
  144. package/server/services/private-content/graphql/index.ts +88 -88
  145. package/server/services/private-content/graphql/resolvers/findOnePage.ts +40 -40
  146. package/server/services/private-content/graphql/resolvers/findPage.ts +45 -45
  147. package/server/services/private-content/graphql/resolvers/forgot-password.ts +34 -34
  148. package/server/services/private-content/graphql/resolvers/login.ts +56 -56
  149. package/server/services/private-content/graphql/resolvers/register.ts +78 -78
  150. package/server/services/private-content/graphql/resolvers/reset-password.ts +44 -44
  151. package/server/services/private-content/graphql/types/index.ts +96 -96
  152. package/server/services/private-content/index.ts +95 -95
  153. package/server/services/private-content/mail-template/txtMail.email.template.text.ts +6 -6
  154. package/server/services/private-content/page.ts +20 -20
  155. package/server/services/private-content/platform.ts +19 -19
  156. package/server/services/private-content/schemas/index.ts +28 -28
  157. package/server/services/private-content/user.ts +197 -197
  158. package/server/services/sitemap.ts +83 -83
  159. package/server/services/template.ts +13 -13
  160. package/server/services/user-category.ts +3 -3
  161. package/server/utils/filter-underscore-arguments.ts +12 -12
  162. package/server/utils/reload-strapi-on-load.ts +13 -13
  163. package/server/utils/strapi.ts +50 -50
  164. package/shared/utils/constants.ts +8 -8
  165. package/shared/utils/sleep.ts +1 -1
  166. package/strapi-admin.js +3 -3
  167. package/strapi-server.js +3 -3
  168. package/tsconfig.json +20 -20
  169. package/tsconfig.server.json +25 -25
  170. package/dist/server/graphql/page-by-slug.js +0 -89
  171. package/dist/server/utils/graphql.js +0 -100
  172. package/dist/server/utils/paginationValidation.js +0 -31
@@ -1,19 +1,19 @@
1
- import page from './page';
2
- import pageType from './page-type';
3
- import collectionTypes from './collection-types';
4
- import template from './template';
5
- import platform from './platform';
6
- import sitemap from './sitemap';
7
- import privateContent from './private-content';
8
- import userCategory from './user-category';
9
-
10
- export default {
11
- page,
12
- 'page-type': pageType,
13
- 'collection-types': collectionTypes,
14
- template,
15
- platform,
16
- sitemap,
17
- 'private-content': privateContent,
18
- 'user-category': userCategory
19
- };
1
+ import page from './page';
2
+ import pageType from './page-type';
3
+ import collectionTypes from './collection-types';
4
+ import template from './template';
5
+ import platform from './platform';
6
+ import sitemap from './sitemap';
7
+ import privateContent from './private-content';
8
+ import userCategory from './user-category';
9
+
10
+ export default {
11
+ page,
12
+ 'page-type': pageType,
13
+ 'collection-types': collectionTypes,
14
+ template,
15
+ platform,
16
+ sitemap,
17
+ 'private-content': privateContent,
18
+ 'user-category': userCategory
19
+ };
@@ -1,18 +1,18 @@
1
- import { Strapi } from '@strapi/strapi';
2
-
3
- export default {
4
- async findOneByUid(ctx: any) {
5
- const uid = ctx?.params?.uid;
6
- const platformId = ctx?.params?.platformId;
7
-
8
- if (!uid) {
9
- return ctx.badRequest('uid is missing.');
10
- }
11
-
12
- if (!platformId) {
13
- return ctx.badRequest('PlatformId is missing.');
14
- }
15
-
16
- return await (strapi as Strapi).service('plugin::page-builder.page-type').findOneByUid(uid, platformId);
17
- }
18
- };
1
+ import { Strapi } from '@strapi/strapi';
2
+
3
+ export default {
4
+ async findOneByUid(ctx: any) {
5
+ const uid = ctx?.params?.uid;
6
+ const platformId = ctx?.params?.platformId;
7
+
8
+ if (!uid) {
9
+ return ctx.badRequest('uid is missing.');
10
+ }
11
+
12
+ if (!platformId) {
13
+ return ctx.badRequest('PlatformId is missing.');
14
+ }
15
+
16
+ return await (strapi as Strapi).service('plugin::page-builder.page-type').findOneByUid(uid, platformId);
17
+ }
18
+ };
@@ -1,9 +1,9 @@
1
- import { Strapi } from '@strapi/strapi';
2
-
3
- export default {
4
- async getPage(ctx) {
5
- const id = ctx.params?.id;
6
-
7
- return (strapi as Strapi).service('plugin::page-builder.page')?.getPage(id);
8
- }
9
- };
1
+ import { Strapi } from '@strapi/strapi';
2
+
3
+ export default {
4
+ async getPage(ctx) {
5
+ const id = ctx.params?.id;
6
+
7
+ return (strapi as Strapi).service('plugin::page-builder.page')?.getPage(id);
8
+ }
9
+ };
@@ -1,21 +1,21 @@
1
- import { Strapi } from '@strapi/strapi';
2
-
3
- export default {
4
- async findAll() {
5
- return await (strapi as Strapi).service('plugin::page-builder.platform').findAll();
6
- },
7
-
8
- async findOneById(ctx: any) {
9
- const id = ctx?.params?.id;
10
-
11
- if (!id) {
12
- return ctx.badRequest('id is missing.');
13
- }
14
-
15
- return await strapi.service('plugin::page-builder.platform').findOneById(id);
16
- },
17
- async findPageTypesByPlatform(ctx: any) {
18
- const platform = ctx?.params?.platform;
19
- return await (strapi as Strapi).services['plugin::page-builder.platform'].findPageTypesByPlatform(platform);
20
- }
21
- };
1
+ import { Strapi } from '@strapi/strapi';
2
+
3
+ export default {
4
+ async findAll() {
5
+ return await (strapi as Strapi).service('plugin::page-builder.platform').findAll();
6
+ },
7
+
8
+ async findOneById(ctx: any) {
9
+ const id = ctx?.params?.id;
10
+
11
+ if (!id) {
12
+ return ctx.badRequest('id is missing.');
13
+ }
14
+
15
+ return await strapi.service('plugin::page-builder.platform').findOneById(id);
16
+ },
17
+ async findPageTypesByPlatform(ctx: any) {
18
+ const platform = ctx?.params?.platform;
19
+ return await (strapi as Strapi).services['plugin::page-builder.platform'].findPageTypesByPlatform(platform);
20
+ }
21
+ };
@@ -1,17 +1,17 @@
1
- import { Context } from 'koa';
2
-
3
- export default {
4
- async activateUser(ctx: Context): Promise<any> {
5
- try {
6
- const user = await strapi.service('plugin::page-builder.private-content').activateUser(ctx.params.token);
7
- const callbackUrl = `${user.platform.domain}/inloggen`;
8
- return ctx.redirect(callbackUrl);
9
- } catch (error) {
10
- console.log(ctx);
11
- return ctx.unauthorized('User is already confirmed or token is invalid');
12
- }
13
- },
14
- removeInactiveUsers(ctx: Context) {
15
- return strapi.service('plugin::page-builder.private-content').removeInactiveUsers();
16
- }
17
- };
1
+ import { Context } from 'koa';
2
+
3
+ export default {
4
+ async activateUser(ctx: Context): Promise<any> {
5
+ try {
6
+ const user = await strapi.service('plugin::page-builder.private-content').activateUser(ctx.params.token);
7
+ const callbackUrl = `${user.platform.domain}/inloggen`;
8
+ return ctx.redirect(callbackUrl);
9
+ } catch (error) {
10
+ console.log(ctx);
11
+ return ctx.unauthorized('User is already confirmed or token is invalid');
12
+ }
13
+ },
14
+ removeInactiveUsers(ctx: Context) {
15
+ return strapi.service('plugin::page-builder.private-content').removeInactiveUsers();
16
+ }
17
+ };
@@ -1,32 +1,32 @@
1
- import { errors } from '@strapi/utils';
2
- import { PLATFORM_UID } from '../../shared/utils/constants';
3
- import { Context } from 'koa';
4
-
5
- export default {
6
- async generate(ctx: Context) {
7
- try {
8
- ctx.set('Content-Type', 'text/xml');
9
-
10
- const domain = ctx.query?.domain;
11
-
12
- if (domain == null) {
13
- return ctx.badRequest('Domain is required.');
14
- }
15
-
16
- const platform = await strapi.query(PLATFORM_UID).findOne({
17
- select: ['domain'],
18
- where: {
19
- domain
20
- }
21
- });
22
-
23
- if (platform == null) {
24
- return ctx.notFound('No platform found for specified domain.');
25
- }
26
-
27
- return strapi.service('plugin::page-builder.sitemap').generateSitemap(domain);
28
- } catch (error) {
29
- throw new errors.ApplicationError('Unknown error while generating the sitemap.');
30
- }
31
- }
32
- };
1
+ import { errors } from '@strapi/utils';
2
+ import { PLATFORM_UID } from '../../shared/utils/constants';
3
+ import { Context } from 'koa';
4
+
5
+ export default {
6
+ async generate(ctx: Context) {
7
+ try {
8
+ ctx.set('Content-Type', 'text/xml');
9
+
10
+ const domain = ctx.query?.domain;
11
+
12
+ if (domain == null) {
13
+ return ctx.badRequest('Domain is required.');
14
+ }
15
+
16
+ const platform = await strapi.query(PLATFORM_UID).findOne({
17
+ select: ['domain'],
18
+ where: {
19
+ domain
20
+ }
21
+ });
22
+
23
+ if (platform == null) {
24
+ return ctx.notFound('No platform found for specified domain.');
25
+ }
26
+
27
+ return strapi.service('plugin::page-builder.sitemap').generateSitemap(domain);
28
+ } catch (error) {
29
+ throw new errors.ApplicationError('Unknown error while generating the sitemap.');
30
+ }
31
+ }
32
+ };
@@ -1,16 +1,16 @@
1
- import { Strapi } from '@strapi/strapi';
2
-
3
- export default {
4
- async findOneById(ctx: any) {
5
- const id = ctx?.params?.id;
6
-
7
- if (!id) {
8
- return ctx.badRequest('id is missing.');
9
- }
10
-
11
- return await (strapi as Strapi).service('plugin::page-builder.template').findOne(id);
12
- },
13
- async findAll() {
14
- return await (strapi as Strapi).service('plugin::page-builder.template').findAll();
15
- }
16
- };
1
+ import { Strapi } from '@strapi/strapi';
2
+
3
+ export default {
4
+ async findOneById(ctx: any) {
5
+ const id = ctx?.params?.id;
6
+
7
+ if (!id) {
8
+ return ctx.badRequest('id is missing.');
9
+ }
10
+
11
+ return await (strapi as Strapi).service('plugin::page-builder.template').findOne(id);
12
+ },
13
+ async findAll() {
14
+ return await (strapi as Strapi).service('plugin::page-builder.template').findAll();
15
+ }
16
+ };
@@ -1,3 +1,3 @@
1
- import { factories } from '@strapi/strapi';
2
-
3
- export default factories.createCoreController('plugin::page-builder.user-category');
1
+ import { factories } from '@strapi/strapi';
2
+
3
+ export default factories.createCoreController('plugin::page-builder.user-category');
package/server/destroy.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { Strapi } from '@strapi/strapi';
2
-
3
- export default ({ strapi }: { strapi: Strapi }) => {
4
- // destroy phase
5
- };
1
+ import { Strapi } from '@strapi/strapi';
2
+
3
+ export default ({ strapi }: { strapi: Strapi }) => {
4
+ // destroy phase
5
+ };
@@ -1,9 +1,9 @@
1
- import pageType from './page-type';
2
- import pageByPath from './page-by-path';
3
- import getPageInfoFromUID from './pages-by-uid';
4
-
5
- export default {
6
- getPageInfoFromUID,
7
- pageType,
8
- pageByPath
9
- };
1
+ import pageType from './page-type';
2
+ import pageByPath from './page-by-path';
3
+ import getPageInfoFromUID from './pages-by-uid';
4
+
5
+ export default {
6
+ getPageInfoFromUID,
7
+ pageType,
8
+ pageByPath
9
+ };
@@ -1,132 +1,135 @@
1
- import { Strapi } from '@strapi/strapi';
2
-
3
- import { PAGE_UID } from '../../shared/utils/constants';
4
-
5
- import { ForbiddenError as ApolloForbiddenError } from 'apollo-server-koa';
6
- import { getConfig } from '../utils/strapi';
7
-
8
- const getPageByPath = (strapi: Strapi) => {
9
- const typeDefs = () => {
10
- return `
11
- extend type Page {
12
- collectionType: GenericMorph
13
- }
14
-
15
- type Query {
16
- getPageByPath(path: String, domain: String, publicationState: PublicationState): PageEntity
17
- }
18
-
19
- `;
20
- };
21
-
22
- const resolvers = (strapi: Strapi) => {
23
- const { transformArgs } = strapi.plugin('graphql').service('builders').utils;
24
-
25
- return {
26
- Query: {
27
- getPageByPath: {
28
- resolve: async (_parent: any, args: Record<string, any>, ctx: any) => {
29
- try {
30
- const filteredArgs: Record<string, any> = {
31
- filters: {
32
- path: args.path,
33
- platform: args.domain ? { domain: args.domain } : null
34
- },
35
- publicationState: args.publicationState,
36
- locale: args.locale
37
- };
38
-
39
- const { toEntityResponse } = strapi.plugin('graphql').service('format').returnTypes;
40
- const getPage = async () => {
41
- const transformedArgs = transformArgs(filteredArgs, {
42
- contentType: strapi.contentTypes[PAGE_UID],
43
- usePagination: false
44
- });
45
-
46
- const results = await strapi.entityService?.findMany(PAGE_UID, {
47
- ...filteredArgs,
48
- populate: '*'
49
- });
50
-
51
- const entityResponse = toEntityResponse(results?.[0] || {}, {
52
- args: transformedArgs,
53
- resourceUID: PAGE_UID
54
- });
55
-
56
- if (!entityResponse?.value || Object.keys(entityResponse.value).length === 0) {
57
- throw new Error(ctx.koaContext.response.message);
58
- }
59
-
60
- const collectionTypeDataFilter = entityResponse?.value?.collectionTypeData?.filter(Boolean);
61
-
62
- const collectionType: Record<string, any> | null =
63
- collectionTypeDataFilter.length === 1 ? collectionTypeDataFilter?.[0] : null;
64
-
65
- const addedAttributes = {
66
- collectionType: collectionType
67
- };
68
-
69
- const result = {
70
- ...entityResponse.value,
71
- ...addedAttributes
72
- };
73
-
74
- return result;
75
- };
76
-
77
- const results: Record<string, any> = await getPage();
78
-
79
- if (Object.values(results)?.filter(Boolean).length > 0) {
80
- if (!results?.platform?.isPrivate && !results?.isPrivate) {
81
- return results;
82
- }
83
- if (
84
- (results?.platform?.isPrivate === true && ctx.koaContext.req.headers.authorization) ||
85
- (results?.isPrivate === true && ctx.koaContext.req.headers.authorization)
86
- ) {
87
- const auth = ctx.koaContext.req.headers.authorization;
88
- const token = auth.split(' ');
89
-
90
- const jwtService = strapi.plugin('users-permissions').service('jwt');
91
- const decodedToken = await jwtService.verify(token[1]);
92
- if (decodedToken) {
93
- const user = ctx.state.user;
94
-
95
- if (user?.platform?.id === results?.platform?.id) {
96
- return results;
97
- }
98
- }
99
- }
100
-
101
- return new ApolloForbiddenError('Forbidden access');
102
- } else {
103
- throw new Error(ctx.koaContext.response.message);
104
- }
105
- } catch (error) {
106
- console.log('Error in [getPageByPath], args:', args, 'ERROR:', error);
107
-
108
- throw new Error(ctx.koaContext.response.message);
109
- }
110
- }
111
- }
112
- }
113
- };
114
- };
115
-
116
- const pageBuilderConfig = getConfig();
117
-
118
- const resolversConfig = {
119
- 'Query.getPageByPath': {
120
- policies: pageBuilderConfig?.privateContent === true ? ['plugin::page-builder.isAuthorizedForPage'] : [],
121
- auth: false
122
- }
123
- };
124
-
125
- return {
126
- typeDefs: typeDefs(),
127
- resolvers: resolvers(strapi),
128
- resolversConfig
129
- };
130
- };
131
-
132
- export default getPageByPath;
1
+ import { Strapi } from '@strapi/strapi';
2
+
3
+ import { PAGE_UID } from '../../shared/utils/constants';
4
+
5
+ import { ForbiddenError as ApolloForbiddenError } from 'apollo-server-koa';
6
+ import { getConfig } from '../utils/strapi';
7
+
8
+ const getPageByPath = (strapi: Strapi) => {
9
+ const typeDefs = () => {
10
+ return `
11
+ extend type Page {
12
+ collectionType: GenericMorph
13
+ }
14
+
15
+ type Query {
16
+ getPageByPath(path: String, domain: String, publicationState: PublicationState): PageEntity
17
+ }
18
+
19
+ `;
20
+ };
21
+
22
+ const resolvers = (strapi: Strapi) => {
23
+ const { transformArgs } = strapi.plugin('graphql').service('builders').utils;
24
+
25
+ return {
26
+ Query: {
27
+ getPageByPath: {
28
+ resolve: async (_parent: any, args: Record<string, any>, ctx: any) => {
29
+ try {
30
+ const filteredArgs: Record<string, any> = {
31
+ filters: {
32
+ path: args.path,
33
+ platform: args.domain ? { domain: args.domain } : null
34
+ },
35
+ publicationState: args.publicationState,
36
+ locale: args.locale
37
+ };
38
+
39
+ const { toEntityResponse } = strapi.plugin('graphql').service('format').returnTypes;
40
+ const getPage = async () => {
41
+ const transformedArgs = transformArgs(filteredArgs, {
42
+ contentType: strapi.contentTypes[PAGE_UID],
43
+ usePagination: false
44
+ });
45
+
46
+ const results = await strapi.entityService?.findMany(PAGE_UID, {
47
+ ...filteredArgs,
48
+ populate: '*'
49
+ });
50
+
51
+ const entityResponse = toEntityResponse(results?.[0] || {}, {
52
+ args: transformedArgs,
53
+ resourceUID: PAGE_UID
54
+ });
55
+
56
+ if (!entityResponse?.value || Object.keys(entityResponse.value).length === 0) {
57
+ throw new Error(ctx.koaContext.response.message);
58
+ }
59
+
60
+ const collectionTypeDataFilter = entityResponse?.value?.collectionTypeData?.filter(Boolean);
61
+
62
+ const collectionType: Record<string, any> | null =
63
+ collectionTypeDataFilter.length === 1 ? collectionTypeDataFilter?.[0] : null;
64
+
65
+ const addedAttributes = {
66
+ collectionType: collectionType
67
+ };
68
+
69
+ const result = {
70
+ ...entityResponse.value,
71
+ ...addedAttributes
72
+ };
73
+
74
+ return result;
75
+ };
76
+
77
+ const result: Record<string, any> = await getPage();
78
+
79
+ if (Object.values(result)?.filter(Boolean).length > 0) {
80
+ if (result?.path === '404' || result.path === '500') {
81
+ return result;
82
+ }
83
+ if (!result?.platform?.isPrivate && !result?.isPrivate) {
84
+ return result;
85
+ }
86
+ if (
87
+ (result?.platform?.isPrivate === true && ctx.koaContext.req.headers.authorization) ||
88
+ (result?.isPrivate === true && ctx.koaContext.req.headers.authorization)
89
+ ) {
90
+ const auth = ctx.koaContext.req.headers.authorization;
91
+ const token = auth.split(' ');
92
+
93
+ const jwtService = strapi.plugin('users-permissions').service('jwt');
94
+ const decodedToken = await jwtService.verify(token[1]);
95
+ if (decodedToken) {
96
+ const user = ctx.state.user;
97
+
98
+ if (user?.platform?.id === result?.platform?.id) {
99
+ return result;
100
+ }
101
+ }
102
+ }
103
+
104
+ return new ApolloForbiddenError('Forbidden access');
105
+ } else {
106
+ throw new Error(ctx.koaContext.response.message);
107
+ }
108
+ } catch (error) {
109
+ console.log('Error in [getPageByPath], args:', args, 'ERROR:', error);
110
+
111
+ throw new Error(ctx.koaContext.response.message);
112
+ }
113
+ }
114
+ }
115
+ }
116
+ };
117
+ };
118
+
119
+ const pageBuilderConfig = getConfig();
120
+
121
+ const resolversConfig = {
122
+ 'Query.getPageByPath': {
123
+ policies: pageBuilderConfig?.privateContent === true ? ['plugin::page-builder.isAuthorizedForPage'] : [],
124
+ auth: false
125
+ }
126
+ };
127
+
128
+ return {
129
+ typeDefs: typeDefs(),
130
+ resolvers: resolvers(strapi),
131
+ resolversConfig
132
+ };
133
+ };
134
+
135
+ export default getPageByPath;