@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.
- package/README.md +166 -166
- package/admin/src/api/collection-type.ts +111 -111
- package/admin/src/api/entity-relation.ts +42 -42
- package/admin/src/api/has-page-relation.ts +37 -37
- package/admin/src/api/has-platform-relation.ts +40 -40
- package/admin/src/api/page-type-relation.ts +41 -41
- package/admin/src/api/platform-page-types.ts +45 -45
- package/admin/src/api/platform-relation.ts +42 -42
- package/admin/src/api/platform.ts +35 -35
- package/admin/src/api/search-filtered-entity.ts +114 -114
- package/admin/src/api/template.ts +39 -39
- package/admin/src/components/Combobox/index.tsx +83 -83
- package/admin/src/components/Combobox/react-select-custom-styles.tsx +121 -121
- package/admin/src/components/Combobox/styles.ts +46 -46
- package/admin/src/components/ConfirmModal/index.tsx +90 -90
- package/admin/src/components/EditView/CollectionTypeSearch/index.tsx +127 -127
- package/admin/src/components/EditView/CollectionTypeSettings/CreatePageButton/index.tsx +149 -149
- package/admin/src/components/EditView/CollectionTypeSettings/CreatePageButton/styles.ts +19 -19
- package/admin/src/components/EditView/CollectionTypeSettings/index.tsx +82 -82
- package/admin/src/components/EditView/Details/index.tsx +48 -48
- package/admin/src/components/EditView/Details/styles.ts +51 -51
- package/admin/src/components/EditView/PageSettings/index.tsx +124 -124
- package/admin/src/components/EditView/Platform/platform-select.tsx +30 -30
- package/admin/src/components/EditView/Template/TemplateConfirmModal/index.tsx +36 -36
- package/admin/src/components/EditView/Template/TemplateSelect/index.tsx +70 -70
- package/admin/src/components/EditView/Template/TemplateSelect/use-template-modules.ts +41 -41
- package/admin/src/components/EditView/index.tsx +35 -35
- package/admin/src/components/EditView/page-type-select.tsx +32 -32
- package/admin/src/components/EditView/wrapper.tsx +41 -41
- package/admin/src/components/GlobalPlatformSelect/index.tsx +40 -40
- package/admin/src/components/GlobalPlatformSelect/styles.ts +27 -27
- package/admin/src/components/Initializer/index.tsx +24 -24
- package/admin/src/components/PageFilters/PageTypeFilter/index.tsx +39 -39
- package/admin/src/components/PageFilters/PlatformFilter/index.tsx +32 -32
- package/admin/src/components/PageFilters/filters.tsx +189 -189
- package/admin/src/components/PageFilters/index.tsx +35 -35
- package/admin/src/components/PageTypeEditView/TemplatePlatformSelect/index.tsx +76 -76
- package/admin/src/components/PageTypeEditView/index.tsx +53 -53
- package/admin/src/components/PlatformFilteredSelectField/InputIcon/index.tsx +23 -23
- package/admin/src/components/PlatformFilteredSelectField/Multi/index.tsx +210 -210
- package/admin/src/components/PlatformFilteredSelectField/Single/index.tsx +197 -197
- package/admin/src/components/PlatformFilteredSelectField/hooks/useRelationLoad.tsx +128 -128
- package/admin/src/components/PlatformFilteredSelectField/index.tsx +85 -85
- package/admin/src/components/PlatformFilteredSelectField/styles.tsx +77 -77
- package/admin/src/components/PlatformFilteredSelectField/utils/get-translations.ts +3 -3
- package/admin/src/components/PlatformFilteredSelectField/utils/relation-helper.ts +147 -147
- package/admin/src/components/PluginIcon/index.tsx +94 -94
- package/admin/src/components/StrapiCore/admin/admin/src/content-manager/components/Relations/RelationInput.tsx +689 -689
- package/admin/src/components/StrapiCore/admin/admin/src/content-manager/components/Relations/RelationInputDataManager.tsx +6 -6
- package/admin/src/components/StrapiCore/admin/admin/src/content-manager/components/Relations/useRelation.ts +170 -170
- package/admin/src/components/StrapiCore/admin/admin/src/content-manager/components/Relations/utils/getRelationLink.ts +5 -5
- package/admin/src/components/StrapiCore/admin/admin/src/content-manager/components/Relations/utils/normalizeRelations.ts +52 -52
- package/admin/src/components/StrapiCore/admin/admin/src/content-manager/constants/attributes.ts +3 -3
- package/admin/src/components/StrapiCore/admin/admin/src/content-manager/hooks/useDragAndDrop.ts +253 -253
- package/admin/src/components/StrapiCore/admin/admin/src/content-manager/hooks/useKeyboardDragAndDrop.ts +96 -96
- package/admin/src/components/StrapiCore/admin/admin/src/content-manager/hooks/usePrev.ts +11 -11
- package/admin/src/components/StrapiCore/admin/admin/src/content-manager/utils/dragAndDrop.ts +8 -8
- package/admin/src/components/StrapiCore/admin/admin/src/content-manager/utils/paths.ts +29 -29
- package/admin/src/components/StrapiCore/admin/admin/src/content-manager/utils/refs.ts +19 -19
- package/admin/src/components/StrapiCore/admin/admin/src/content-manager/utils/translations.ts +3 -3
- package/admin/src/components/StrapiCore/content-manager/shared/contracts/collection-types.ts +300 -300
- package/admin/src/components/StrapiCore/content-manager/shared/contracts/components.ts +72 -72
- package/admin/src/components/StrapiCore/content-manager/shared/contracts/content-types.ts +116 -116
- package/admin/src/components/StrapiCore/content-manager/shared/contracts/index.ts +8 -8
- package/admin/src/components/StrapiCore/content-manager/shared/contracts/init.ts +22 -22
- package/admin/src/components/StrapiCore/content-manager/shared/contracts/relations.ts +80 -80
- package/admin/src/components/StrapiCore/content-manager/shared/contracts/review-workflows.ts +88 -88
- package/admin/src/components/StrapiCore/content-manager/shared/contracts/single-types.ts +112 -112
- package/admin/src/components/StrapiCore/content-manager/shared/contracts/uid.ts +48 -48
- package/admin/src/components/StrapiCore/content-manager/shared/index.ts +1 -1
- package/admin/src/constants.ts +3 -3
- package/admin/src/index.tsx +101 -101
- package/admin/src/middlewares/index.tsx +37 -37
- package/admin/src/pages/app/index.tsx +14 -14
- package/admin/src/pluginId.ts +5 -5
- package/admin/src/translations/en.json +9 -9
- package/admin/src/translations/nl.json +9 -9
- package/admin/src/utils/findDomElement.ts +6 -6
- package/admin/src/utils/findElementParent.ts +20 -20
- package/admin/src/utils/getObjectFromFormName.ts +42 -42
- package/admin/src/utils/getRequestUrl.ts +11 -11
- package/admin/src/utils/getTrad.ts +5 -5
- package/admin/src/utils/hooks/useDebounce.ts +17 -17
- package/admin/src/utils/hooks/useDefaultPlatformFromLocalStorage.ts +61 -61
- package/admin/src/utils/hooks/useGetLocaleFromUrl.ts +9 -9
- package/admin/src/utils/hooks/useHideOverviewFilterTags.ts +34 -34
- package/admin/src/utils/hooks/usePlatformFormData.ts +64 -64
- package/admin/src/utils/hooks/usePrevious.ts +12 -12
- package/admin/src/utils/sanitizeModules.ts +93 -93
- package/custom.d.ts +6 -6
- package/dist/package.json +1 -1
- package/dist/server/bootstrap.js +1 -1
- package/dist/server/graphql/page-by-path.js +20 -17
- package/dist/server/graphql/pages-by-uid.js +5 -5
- package/dist/server/services/private-content/graphql/index.js +27 -27
- package/dist/server/services/private-content/graphql/types/index.js +74 -74
- package/dist/tsconfig.server.tsbuildinfo +1 -1
- package/package.json +78 -78
- package/server/bootstrap/collection-type-lifecycles.ts +47 -47
- package/server/bootstrap/permissions.ts +161 -161
- package/server/bootstrap.ts +261 -261
- package/server/config/index.ts +4 -4
- package/server/content-types/index.ts +7 -7
- package/server/content-types/user-category/schema.json +23 -23
- package/server/controllers/collection-types.ts +32 -32
- package/server/controllers/index.ts +19 -19
- package/server/controllers/page-type.ts +18 -18
- package/server/controllers/page.ts +9 -9
- package/server/controllers/platform.ts +21 -21
- package/server/controllers/private-content.ts +17 -17
- package/server/controllers/sitemap.ts +32 -32
- package/server/controllers/template.ts +16 -16
- package/server/controllers/user-category.ts +3 -3
- package/server/destroy.ts +5 -5
- package/server/graphql/index.ts +9 -9
- package/server/graphql/page-by-path.ts +135 -132
- package/server/graphql/page-type.ts +67 -67
- package/server/graphql/pages-by-uid.ts +89 -89
- package/server/index.ts +23 -23
- package/server/middlewares/index.ts +1 -1
- package/server/policies/index.ts +5 -5
- package/server/policies/isAuthorizedPage.ts +11 -11
- package/server/register.ts +22 -22
- package/server/routes/index.ts +115 -115
- package/server/routes/user-category.ts +3 -3
- package/server/schema/page-end.json +96 -96
- package/server/schema/page-start.json +87 -87
- package/server/schema/page-type-end.json +53 -53
- package/server/schema/page-type-start.json +38 -38
- package/server/schema/platform-start.json +21 -21
- package/server/schema/template-end.json +40 -40
- package/server/schema/template-start.json +35 -35
- package/server/services/builder.ts +232 -232
- package/server/services/collection-types.ts +95 -95
- package/server/services/email.ts +127 -127
- package/server/services/index.ts +23 -23
- package/server/services/page-type.ts +30 -30
- package/server/services/page.ts +24 -24
- package/server/services/platform.ts +30 -30
- package/server/services/private-content/components/admin-email.json +22 -22
- package/server/services/private-content/components/email.json +22 -22
- package/server/services/private-content/components/platform-email.json +30 -30
- package/server/services/private-content/constants/index.ts +13 -13
- package/server/services/private-content/graphql/index.ts +88 -88
- package/server/services/private-content/graphql/resolvers/findOnePage.ts +40 -40
- package/server/services/private-content/graphql/resolvers/findPage.ts +45 -45
- package/server/services/private-content/graphql/resolvers/forgot-password.ts +34 -34
- package/server/services/private-content/graphql/resolvers/login.ts +56 -56
- package/server/services/private-content/graphql/resolvers/register.ts +78 -78
- package/server/services/private-content/graphql/resolvers/reset-password.ts +44 -44
- package/server/services/private-content/graphql/types/index.ts +96 -96
- package/server/services/private-content/index.ts +95 -95
- package/server/services/private-content/mail-template/txtMail.email.template.text.ts +6 -6
- package/server/services/private-content/page.ts +20 -20
- package/server/services/private-content/platform.ts +19 -19
- package/server/services/private-content/schemas/index.ts +28 -28
- package/server/services/private-content/user.ts +197 -197
- package/server/services/sitemap.ts +83 -83
- package/server/services/template.ts +13 -13
- package/server/services/user-category.ts +3 -3
- package/server/utils/filter-underscore-arguments.ts +12 -12
- package/server/utils/reload-strapi-on-load.ts +13 -13
- package/server/utils/strapi.ts +50 -50
- package/shared/utils/constants.ts +8 -8
- package/shared/utils/sleep.ts +1 -1
- package/strapi-admin.js +3 -3
- package/strapi-server.js +3 -3
- package/tsconfig.json +20 -20
- package/tsconfig.server.json +25 -25
- package/dist/server/graphql/page-by-slug.js +0 -89
- package/dist/server/utils/graphql.js +0 -100
- 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
|
+
};
|
package/server/graphql/index.ts
CHANGED
|
@@ -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
|
|
78
|
-
|
|
79
|
-
if (Object.values(
|
|
80
|
-
if (
|
|
81
|
-
return
|
|
82
|
-
}
|
|
83
|
-
if (
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
const
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
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;
|