@webbio/strapi-plugin-page-builder 0.3.2 → 0.3.3-legacy

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 (77) hide show
  1. package/README.md +21 -6
  2. package/admin/src/api/collection-type.ts +1 -7
  3. package/admin/src/components/EditView/CollectionTypeSearch/index.tsx +11 -14
  4. package/admin/src/components/EditView/CollectionTypeSettings/CreatePageButton/index.tsx +27 -9
  5. package/admin/src/components/EditView/CollectionTypeSettings/index.tsx +16 -6
  6. package/admin/src/components/EditView/Details/index.tsx +1 -1
  7. package/admin/src/components/EditView/PageSettings/index.tsx +6 -57
  8. package/admin/src/components/PageTypeFilter/index.tsx +17 -0
  9. package/admin/src/components/PageTypeFilter/page-type-filter.tsx +130 -0
  10. package/admin/src/index.tsx +2 -2
  11. package/admin/src/utils/sanitizeModules.ts +92 -9
  12. package/dist/package.json +11 -9
  13. package/dist/server/bootstrap.js +24 -40
  14. package/dist/server/content-types/user-categories/schema.json +18 -0
  15. package/dist/server/content-types/user-category/schema.json +23 -0
  16. package/dist/server/controllers/index.js +1 -3
  17. package/dist/server/controllers/platform.js +5 -5
  18. package/dist/server/controllers/private-content.js +18 -0
  19. package/dist/server/controllers/sitemap.js +29 -0
  20. package/dist/server/controllers/user-category.js +4 -0
  21. package/dist/server/graphql/page-by-path.js +113 -0
  22. package/dist/server/graphql/pages-by-uid.js +7 -9
  23. package/dist/server/policies/isAuthorizedPage.js +11 -0
  24. package/dist/server/routes/index.js +0 -21
  25. package/dist/server/routes/user-category.js +4 -0
  26. package/dist/server/schema/page-end.json +0 -5
  27. package/dist/server/schema/platform-start.json +0 -10
  28. package/dist/server/schema/template-end.json +40 -0
  29. package/dist/server/services/builder.js +5 -15
  30. package/dist/server/services/email.js +160 -0
  31. package/dist/server/services/index.js +1 -3
  32. package/dist/server/services/platform.js +6 -11
  33. package/dist/server/services/private-content/components/admin-email.json +22 -0
  34. package/dist/server/services/private-content/components/email.json +22 -0
  35. package/dist/server/services/private-content/components/platform-email.json +33 -0
  36. package/dist/server/services/private-content/constants/index.js +16 -0
  37. package/dist/server/services/private-content/graphql/index.js +77 -0
  38. package/dist/server/services/private-content/graphql/resolvers/findOnePage.js +40 -0
  39. package/dist/server/services/private-content/graphql/resolvers/findPage.js +44 -0
  40. package/dist/server/services/private-content/graphql/resolvers/forgot-password.js +29 -0
  41. package/dist/server/services/private-content/graphql/resolvers/login.js +49 -0
  42. package/dist/server/services/private-content/graphql/resolvers/register.js +68 -0
  43. package/dist/server/services/private-content/graphql/resolvers/reset-password.js +41 -0
  44. package/dist/server/services/private-content/graphql/types/index.js +89 -0
  45. package/dist/server/services/private-content/index.js +94 -0
  46. package/dist/server/services/private-content/mail-template/txtMail.email.template.text.js +12 -0
  47. package/dist/server/services/private-content/page.js +22 -0
  48. package/dist/server/services/private-content/platform.js +22 -0
  49. package/dist/server/services/private-content/schemas/index.js +30 -0
  50. package/dist/server/services/private-content/user.js +170 -0
  51. package/dist/server/services/sitemap.js +78 -0
  52. package/dist/server/services/template.js +1 -2
  53. package/dist/server/services/user-category.js +4 -0
  54. package/dist/server/utils/strapi.js +1 -4
  55. package/dist/shared/utils/constants.js +1 -3
  56. package/dist/tsconfig.server.tsbuildinfo +1 -1
  57. package/package.json +11 -9
  58. package/server/bootstrap/collection-type-lifecycles.ts +1 -1
  59. package/server/bootstrap.ts +24 -43
  60. package/server/controllers/index.ts +1 -3
  61. package/server/graphql/pages-by-uid.ts +7 -9
  62. package/server/routes/index.ts +0 -21
  63. package/server/schema/page-end.json +0 -5
  64. package/server/services/builder.ts +6 -18
  65. package/server/services/index.ts +1 -3
  66. package/server/services/template.ts +1 -2
  67. package/server/utils/strapi.ts +1 -5
  68. package/shared/utils/constants.ts +0 -2
  69. package/admin/src/api/platform.ts +0 -34
  70. package/admin/src/components/EditView/Platform/platform-select.tsx +0 -30
  71. package/admin/src/components/PageFilters/PageTypeFilter/index.tsx +0 -39
  72. package/admin/src/components/PageFilters/PlatformFilter/index.tsx +0 -28
  73. package/admin/src/components/PageFilters/filters.tsx +0 -180
  74. package/admin/src/components/PageFilters/index.tsx +0 -30
  75. package/server/controllers/platform.ts +0 -21
  76. package/server/schema/platform-start.json +0 -31
  77. package/server/services/platform.ts +0 -36
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const AWS = __importStar(require("@aws-sdk/client-ses"));
27
+ const txtMail_email_template_text_1 = require("./private-content/mail-template/txtMail.email.template.text");
28
+ const constants_1 = require("../../shared/utils/constants");
29
+ const utils_1 = require("@strapi/utils");
30
+ exports.default = {
31
+ async sendMail(options) {
32
+ const { from, to, subject, text, variables, nameSender } = options;
33
+ const emailData = (0, txtMail_email_template_text_1.txtEmail)(text, variables);
34
+ const Source = nameSender ? `${nameSender} <${from}>` : from;
35
+ try {
36
+ const client = new AWS.SES();
37
+ await client.sendEmail({
38
+ Source,
39
+ Destination: {
40
+ ToAddresses: [to]
41
+ },
42
+ Message: {
43
+ Subject: { Data: subject },
44
+ Body: {
45
+ Text: { Data: emailData }
46
+ }
47
+ }
48
+ });
49
+ return true;
50
+ }
51
+ catch (error) {
52
+ console.error(error);
53
+ throw new utils_1.errors.ApplicationError('Failed to send email', error);
54
+ }
55
+ },
56
+ async sendAdminMail(user) {
57
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
58
+ try {
59
+ const foundUser = (await strapi.entityService.findOne(constants_1.USER_PERMISSION_USER_PLUGIN, user.id, {
60
+ populate: { platform: { populate: { platformEmails: { populate: '*' } } } }
61
+ }));
62
+ if (!((_c = (_b = (_a = foundUser === null || foundUser === void 0 ? void 0 : foundUser.platform) === null || _a === void 0 ? void 0 : _a.platformEmails) === null || _b === void 0 ? void 0 : _b.adminEmail) === null || _c === void 0 ? void 0 : _c.fromEmail)) {
63
+ throw new Error('Account Admin Mail is not configured');
64
+ }
65
+ await this.sendMail({
66
+ from: (_f = (_e = (_d = foundUser === null || foundUser === void 0 ? void 0 : foundUser.platform) === null || _d === void 0 ? void 0 : _d.platformEmails) === null || _e === void 0 ? void 0 : _e.adminEmail) === null || _f === void 0 ? void 0 : _f.fromEmail,
67
+ to: (_j = (_h = (_g = foundUser === null || foundUser === void 0 ? void 0 : foundUser.platform) === null || _g === void 0 ? void 0 : _g.platformEmails) === null || _h === void 0 ? void 0 : _h.adminEmail) === null || _j === void 0 ? void 0 : _j.toEmail,
68
+ nameSender: foundUser === null || foundUser === void 0 ? void 0 : foundUser.platform.platformEmails.adminEmail.nameSender,
69
+ subject: (_m = (_l = (_k = foundUser === null || foundUser === void 0 ? void 0 : foundUser.platform) === null || _k === void 0 ? void 0 : _k.platformEmails) === null || _l === void 0 ? void 0 : _l.adminEmail) === null || _m === void 0 ? void 0 : _m.subject,
70
+ text: (_q = (_p = (_o = foundUser === null || foundUser === void 0 ? void 0 : foundUser.platform) === null || _o === void 0 ? void 0 : _o.platformEmails) === null || _p === void 0 ? void 0 : _p.adminEmail) === null || _q === void 0 ? void 0 : _q.message,
71
+ variables: {
72
+ firstName: user.firstName,
73
+ lastName: user.lastName
74
+ }
75
+ });
76
+ }
77
+ catch (e) {
78
+ console.error('Send Admin Mail Error:', e);
79
+ }
80
+ },
81
+ async sendConfirmationEmail(user) {
82
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
83
+ try {
84
+ const foundUser = (await strapi.entityService.findOne(constants_1.USER_PERMISSION_USER_PLUGIN, user.id, {
85
+ populate: { platform: { populate: { platformEmails: { populate: '*' } } } }
86
+ }));
87
+ if (foundUser && foundUser.platform) {
88
+ const jwtService = strapi.plugin('users-permissions').service('jwt');
89
+ const confirmationToken = await jwtService.issue({ userId: user.id, platformId: foundUser.platform.id }, { expiresIn: '1d' });
90
+ await strapi.entityService.update(constants_1.USER_PERMISSION_USER_PLUGIN, user.id, {
91
+ data: { confirmationToken: confirmationToken }
92
+ });
93
+ const confirmEmailUrl = `${strapi.config.server.url}/api/page-builder/activate/${confirmationToken}`;
94
+ if (!((_c = (_b = (_a = foundUser === null || foundUser === void 0 ? void 0 : foundUser.platform) === null || _a === void 0 ? void 0 : _a.platformEmails) === null || _b === void 0 ? void 0 : _b.accountCreatedMail) === null || _c === void 0 ? void 0 : _c.fromEmail)) {
95
+ throw new Error('Account Confirmation Mail is not configured');
96
+ }
97
+ await this.sendMail({
98
+ from: (_f = (_e = (_d = foundUser === null || foundUser === void 0 ? void 0 : foundUser.platform) === null || _d === void 0 ? void 0 : _d.platformEmails) === null || _e === void 0 ? void 0 : _e.accountCreatedMail) === null || _f === void 0 ? void 0 : _f.fromEmail,
99
+ to: foundUser === null || foundUser === void 0 ? void 0 : foundUser.email,
100
+ nameSender: (_j = (_h = (_g = foundUser === null || foundUser === void 0 ? void 0 : foundUser.platform) === null || _g === void 0 ? void 0 : _g.platformEmails) === null || _h === void 0 ? void 0 : _h.accountCreatedMail) === null || _j === void 0 ? void 0 : _j.nameSender,
101
+ subject: (_m = (_l = (_k = foundUser === null || foundUser === void 0 ? void 0 : foundUser.platform) === null || _k === void 0 ? void 0 : _k.platformEmails) === null || _l === void 0 ? void 0 : _l.accountCreatedMail) === null || _m === void 0 ? void 0 : _m.subject,
102
+ text: (_q = (_p = (_o = foundUser === null || foundUser === void 0 ? void 0 : foundUser.platform) === null || _o === void 0 ? void 0 : _o.platformEmails) === null || _p === void 0 ? void 0 : _p.accountCreatedMail) === null || _q === void 0 ? void 0 : _q.message,
103
+ variables: {
104
+ firstName: foundUser === null || foundUser === void 0 ? void 0 : foundUser.firstName,
105
+ lastName: foundUser === null || foundUser === void 0 ? void 0 : foundUser.lastName,
106
+ confirmEmailUrl
107
+ }
108
+ });
109
+ }
110
+ }
111
+ catch (e) {
112
+ console.error('Send Confirmation Mail Error:', e);
113
+ }
114
+ },
115
+ async sendForgotPasswordMail(user) {
116
+ var _a, _b, _c;
117
+ try {
118
+ if (user && user.platform) {
119
+ const jwtService = strapi.plugin('users-permissions').service('jwt');
120
+ const resetPasswordToken = await jwtService.issue({ userId: user.id, platformId: user.platform.id }, { expiresIn: '1d' });
121
+ await strapi.entityService.update(constants_1.USER_PERMISSION_USER_PLUGIN, user.id, {
122
+ data: { resetPasswordToken }
123
+ });
124
+ if (!((_c = (_b = (_a = user === null || user === void 0 ? void 0 : user.platform) === null || _a === void 0 ? void 0 : _a.platformEmails) === null || _b === void 0 ? void 0 : _b.resetPasswordMail) === null || _c === void 0 ? void 0 : _c.fromEmail)) {
125
+ throw new Error('Forgot Password Mail is not configured');
126
+ }
127
+ const resetPasswordUrl = getResetPasswordUrl(user, resetPasswordToken);
128
+ await this.sendMail({
129
+ from: user.platform.platformEmails.resetPasswordMail.fromEmail,
130
+ to: user.email,
131
+ nameSender: user.platform.platformEmails.resetPasswordMail.nameSender,
132
+ subject: user.platform.platformEmails.resetPasswordMail.subject,
133
+ text: user.platform.platformEmails.resetPasswordMail.message,
134
+ variables: {
135
+ firstName: user === null || user === void 0 ? void 0 : user.firstName,
136
+ lastName: user === null || user === void 0 ? void 0 : user.lastName,
137
+ resetPasswordUrl
138
+ }
139
+ });
140
+ }
141
+ }
142
+ catch (e) {
143
+ console.error('Send Forgot Password Mail Error:', e);
144
+ }
145
+ }
146
+ };
147
+ const getResetPasswordUrl = (user, resetPasswordToken) => {
148
+ var _a, _b, _c, _d, _e, _f;
149
+ if (!user || !(user === null || user === void 0 ? void 0 : user.platform)) {
150
+ return '';
151
+ }
152
+ if (((_b = (_a = user === null || user === void 0 ? void 0 : user.platform) === null || _a === void 0 ? void 0 : _a.platformEmails) === null || _b === void 0 ? void 0 : _b.resetPasswordUrl) &&
153
+ ((_d = (_c = user === null || user === void 0 ? void 0 : user.platform) === null || _c === void 0 ? void 0 : _c.platformEmails) === null || _d === void 0 ? void 0 : _d.resetPasswordUrl.includes('{{resetPasswordToken}}'))) {
154
+ const replacedTokens = user.platform.platformEmails.resetPasswordUrl
155
+ .replace('{{domain}}', (_e = user === null || user === void 0 ? void 0 : user.platform) === null || _e === void 0 ? void 0 : _e.domain)
156
+ .replace('{{resetPasswordToken}}', resetPasswordToken);
157
+ return replacedTokens;
158
+ }
159
+ return `${(_f = user === null || user === void 0 ? void 0 : user.platform) === null || _f === void 0 ? void 0 : _f.domain}/wachtwoord-resetten/${resetPasswordToken}`;
160
+ };
@@ -8,12 +8,10 @@ const builder_1 = __importDefault(require("./builder"));
8
8
  const page_type_1 = __importDefault(require("./page-type"));
9
9
  const collection_types_1 = __importDefault(require("./collection-types"));
10
10
  const template_1 = __importDefault(require("./template"));
11
- const platform_1 = __importDefault(require("./platform"));
12
11
  exports.default = {
13
12
  page: page_1.default,
14
13
  builder: builder_1.default,
15
14
  'page-type': page_type_1.default,
16
15
  'collection-types': collection_types_1.default,
17
- template: template_1.default,
18
- platform: platform_1.default
16
+ template: template_1.default
19
17
  };
@@ -5,24 +5,19 @@ exports.default = {
5
5
  async findAll() {
6
6
  return await strapi.entityService.findMany(constants_1.PLATFORM_UID, { populate: '*' });
7
7
  },
8
- async findOneByUid(uid) {
9
- return await strapi.entityService.findMany(constants_1.PLATFORM_UID, {
10
- populate: '*',
11
- filters: {
12
- pagetype: {
13
- uid
14
- }
15
- }
8
+ async findOneById(id) {
9
+ return await strapi.entityService.findOne(constants_1.PLATFORM_UID, id, {
10
+ populate: '*'
16
11
  });
17
12
  },
18
- async findPageTypesByPlatform(platform) {
13
+ async findPageTypesByPlatform(id) {
19
14
  const results = await strapi.entityService.findMany(constants_1.PLATFORM_UID, {
20
15
  populate: {
21
16
  pagetype: true
22
17
  },
23
18
  filters: {
24
- title: {
25
- $eq: platform
19
+ id: {
20
+ $eq: id
26
21
  }
27
22
  }
28
23
  });
@@ -0,0 +1,22 @@
1
+ {
2
+ "collectionName": "components_internal_admin_emails",
3
+ "info": {
4
+ "displayName": "AdminEmail",
5
+ "description": ""
6
+ },
7
+ "options": {},
8
+ "attributes": {
9
+ "toEmail": {
10
+ "type": "string"
11
+ },
12
+ "fromEmail": {
13
+ "type": "string"
14
+ },
15
+ "subject": {
16
+ "type": "string"
17
+ },
18
+ "message": {
19
+ "type": "text"
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "collectionName": "components_internal_emails",
3
+ "info": {
4
+ "displayName": "email",
5
+ "description": ""
6
+ },
7
+ "options": {},
8
+ "attributes": {
9
+ "nameSender": {
10
+ "type": "string"
11
+ },
12
+ "fromEmail": {
13
+ "type": "string"
14
+ },
15
+ "subject": {
16
+ "type": "string"
17
+ },
18
+ "message": {
19
+ "type": "text"
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "collectionName": "components_internal_platform_emails",
3
+ "info": {
4
+ "displayName": "PlatformEmail"
5
+ },
6
+ "options": {},
7
+ "attributes": {
8
+ "resetPasswordMail": {
9
+ "type": "component",
10
+ "repeatable": false,
11
+ "component": "internal.email"
12
+ },
13
+ "accountCreatedMail": {
14
+ "type": "component",
15
+ "repeatable": false,
16
+ "component": "internal.email"
17
+ },
18
+ "accountAcceptedMail": {
19
+ "type": "component",
20
+ "repeatable": false,
21
+ "component": "internal.email"
22
+ },
23
+ "adminEmail": {
24
+ "displayName": "AdminEmail",
25
+ "type": "component",
26
+ "repeatable": false,
27
+ "component": "internal.admin-email"
28
+ },
29
+ "resetPasswordUrl": {
30
+ "type": "string"
31
+ }
32
+ }
33
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ACTIONS = exports.CONTENT_ENTITY_MANAGER = exports.USER_ROLE = exports.USER_CONTENT_MANAGER = exports.USER_MODEL = exports.CREATED_BY_ATTRIBUTE = exports.UPDATED_BY_ATTRIBUTE = void 0;
5
+ const utils_1 = require("@strapi/utils");
6
+ _a = utils_1.contentTypes.constants, exports.UPDATED_BY_ATTRIBUTE = _a.UPDATED_BY_ATTRIBUTE, exports.CREATED_BY_ATTRIBUTE = _a.CREATED_BY_ATTRIBUTE;
7
+ exports.USER_MODEL = 'plugin::users-permissions.user';
8
+ exports.USER_CONTENT_MANAGER = 'plugin::users-permissions.contentmanageruser';
9
+ exports.USER_ROLE = 'plugin::users-permissions.role';
10
+ exports.CONTENT_ENTITY_MANAGER = 'plugin::content-manager.entity-manager';
11
+ exports.ACTIONS = {
12
+ read: 'plugin::content-manager.explorer.read',
13
+ create: 'plugin::content-manager.explorer.create',
14
+ edit: 'plugin::content-manager.explorer.update',
15
+ delete: 'plugin::content-manager.explorer.delete'
16
+ };
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extendGraphQL = void 0;
4
+ const types_1 = require("./types");
5
+ const register_1 = require("./resolvers/register");
6
+ const login_1 = require("./resolvers/login");
7
+ const forgot_password_1 = require("./resolvers/forgot-password");
8
+ const reset_password_1 = require("./resolvers/reset-password");
9
+ const findOnePage_1 = require("./resolvers/findOnePage");
10
+ const findPage_1 = require("./resolvers/findPage");
11
+ const extendGraphQL = () => {
12
+ const extensionService = strapi.plugin('graphql').service('extension');
13
+ const extension = () => ({
14
+ typeDefs: `
15
+ ${types_1.RegisterInput}
16
+
17
+ ${types_1.LoginInput}
18
+
19
+ ${types_1.RegisterResponse}
20
+
21
+ ${types_1.LoginResponse}
22
+
23
+ ${types_1.User}
24
+
25
+ ${types_1.Mutations}
26
+
27
+ ${types_1.ForgotPasswordInput}
28
+
29
+ ${types_1.ForgotPasswordResponse}
30
+
31
+ ${types_1.ResetPasswordInput}
32
+
33
+ ${types_1.ResetPasswordResponse}
34
+
35
+ ${types_1.ResetPasswordInput}
36
+
37
+ ${types_1.ResetPasswordResponse}
38
+
39
+ ${types_1.Queries}
40
+
41
+ `,
42
+ resolvers: {
43
+ Query: {
44
+ page: findOnePage_1.page,
45
+ pages: findPage_1.pages
46
+ },
47
+ Mutation: {
48
+ platformLogin: login_1.platformLogin,
49
+ platformRegister: register_1.platformRegister,
50
+ platformForgotPassword: forgot_password_1.platformForgotPassword,
51
+ platformResetPassword: reset_password_1.platformResetPassword
52
+ }
53
+ },
54
+ resolversConfig: {
55
+ 'Mutation.platformLogin': {
56
+ auth: false
57
+ },
58
+ 'Mutation.platformRegister': {
59
+ auth: false
60
+ },
61
+ 'Mutation.platformForgotPassword': {
62
+ auth: false
63
+ },
64
+ 'Mutation.platformResetPassword': {
65
+ auth: false
66
+ },
67
+ 'Query.page': {
68
+ auth: false
69
+ },
70
+ 'Query.pages': {
71
+ auth: false
72
+ }
73
+ }
74
+ });
75
+ extensionService.use(extension);
76
+ };
77
+ exports.extendGraphQL = extendGraphQL;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.page = void 0;
4
+ const fp_1 = require("lodash/fp");
5
+ const utils_1 = require("@strapi/utils");
6
+ const constants_1 = require("../../../../../shared/utils/constants");
7
+ const apollo_server_koa_1 = require("apollo-server-koa");
8
+ exports.page = {
9
+ async resolve(parent, args, ctx) {
10
+ var _a, _b, _c, _d;
11
+ const uid = constants_1.PAGE_UID;
12
+ const { toEntityResponse } = strapi.plugin('graphql').service('format').returnTypes;
13
+ const { transformArgs } = strapi.plugin('graphql').service('builders').utils;
14
+ const populatedArgs = { ...args, populate: { platform: true } };
15
+ const transformedArgs = transformArgs(populatedArgs, strapi.contentType(constants_1.PAGE_UID));
16
+ const sanitizedQuery = await utils_1.sanitize.contentAPI.query(populatedArgs, strapi.contentType(constants_1.PAGE_UID));
17
+ const value = await strapi.entityService.findOne(uid, args.id, (0, fp_1.omit)('id', sanitizedQuery));
18
+ // @ts-ignore Strapi types are the best
19
+ if (!((_a = value === null || value === void 0 ? void 0 : value.platform) === null || _a === void 0 ? void 0 : _a.isPrivate) && !(value === null || value === void 0 ? void 0 : value.isPrivate)) {
20
+ return toEntityResponse(value, { args: transformedArgs, resourceUID: uid });
21
+ }
22
+ if (
23
+ // @ts-ignore Strapi types are the best
24
+ (((_b = value === null || value === void 0 ? void 0 : value.platform) === null || _b === void 0 ? void 0 : _b.isPrivate) === true && ctx.koaContext.req.headers.authorization) ||
25
+ ((value === null || value === void 0 ? void 0 : value.isPrivate) === true && ctx.koaContext.req.headers.authorization)) {
26
+ const auth = ctx.koaContext.req.headers.authorization;
27
+ const token = auth.split(' ');
28
+ const jwtService = strapi.plugin('users-permissions').service('jwt');
29
+ const decodedToken = await jwtService.verify(token[1]);
30
+ if (decodedToken) {
31
+ const user = ctx.state.user;
32
+ // @ts-ignore Strapi types are the best
33
+ if (((_c = user === null || user === void 0 ? void 0 : user.platform) === null || _c === void 0 ? void 0 : _c.id) === ((_d = value === null || value === void 0 ? void 0 : value.platform) === null || _d === void 0 ? void 0 : _d.id)) {
34
+ return toEntityResponse(value, { args: transformedArgs, resourceUID: uid });
35
+ }
36
+ }
37
+ }
38
+ return new apollo_server_koa_1.ForbiddenError('Forbidden access');
39
+ }
40
+ };
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pages = void 0;
4
+ const utils_1 = require("@strapi/utils");
5
+ const constants_1 = require("../../../../../shared/utils/constants");
6
+ exports.pages = {
7
+ async resolve(parent, args, ctx) {
8
+ const uid = constants_1.PAGE_UID;
9
+ const { toEntityResponseCollection } = strapi.plugin('graphql').service('format').returnTypes;
10
+ const { transformArgs } = strapi.plugin('graphql').service('builders').utils;
11
+ const populatedArgs = { ...args, populate: { platform: true } };
12
+ const transformedArgs = transformArgs(populatedArgs, strapi.contentType(constants_1.PAGE_UID));
13
+ const sanitizedQuery = await utils_1.sanitize.contentAPI.query(populatedArgs, strapi.contentType(constants_1.PAGE_UID));
14
+ const value = await strapi.entityService.findMany(uid, sanitizedQuery);
15
+ const user = ctx.state.user;
16
+ if (user && ctx.koaContext.req.headers.authorization) {
17
+ const auth = ctx.koaContext.req.headers.authorization;
18
+ const token = auth.split(' ');
19
+ const jwtService = strapi.plugin('users-permissions').service('jwt');
20
+ const decodedToken = await jwtService.verify(token[1]);
21
+ if (decodedToken) {
22
+ // @ts-ignore
23
+ const filteredItems = value.filter((item) => {
24
+ var _a, _b;
25
+ // @ts-ignore
26
+ if (((_a = item.platform) === null || _a === void 0 ? void 0 : _a.isPrivate) === true && user.platform.id === item.platform.id) {
27
+ return item;
28
+ }
29
+ if ((item === null || item === void 0 ? void 0 : item.isPrivate) === true && user.platform.id === item.platform.id) {
30
+ return item;
31
+ }
32
+ // @ts-ignore
33
+ if (((_b = item.platform) === null || _b === void 0 ? void 0 : _b.isPrivate) !== true && (item === null || item === void 0 ? void 0 : item.isPrivate) !== true) {
34
+ return item;
35
+ }
36
+ });
37
+ return toEntityResponseCollection(filteredItems, { args: transformedArgs, resourceUID: uid });
38
+ }
39
+ }
40
+ // @ts-ignore
41
+ const filteredItems = value.filter((item) => { var _a; return ((_a = item.platform) === null || _a === void 0 ? void 0 : _a.isPrivate) !== true && (item === null || item === void 0 ? void 0 : item.isPrivate) !== true; });
42
+ return toEntityResponseCollection(filteredItems, { args: transformedArgs, resourceUID: uid });
43
+ }
44
+ };
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.platformForgotPassword = void 0;
4
+ const constants_1 = require("../../constants");
5
+ const schemas_1 = require("../../schemas");
6
+ exports.platformForgotPassword = {
7
+ async resolve(parent, args, context) {
8
+ await (0, schemas_1.validateForgotPasswordSchema)(args.input);
9
+ const { email, domain } = args.input;
10
+ const user = await strapi.query(constants_1.USER_MODEL).findOne({
11
+ populate: { platform: { populate: { platformEmails: { populate: true } } } },
12
+ where: {
13
+ email: email.toLowerCase(),
14
+ platform: {
15
+ domain: domain.toLowerCase()
16
+ }
17
+ }
18
+ });
19
+ if (!user) {
20
+ {
21
+ message: 'Email has been sent';
22
+ }
23
+ }
24
+ await strapi.service('plugin::page-builder.email').sendForgotPasswordMail(user);
25
+ return {
26
+ message: 'Email has been sent'
27
+ };
28
+ }
29
+ };
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.platformLogin = void 0;
4
+ const utils_1 = require("@strapi/utils");
5
+ const constants_1 = require("../../constants");
6
+ const schemas_1 = require("../../schemas");
7
+ const { UnauthorizedError } = utils_1.errors;
8
+ exports.platformLogin = {
9
+ async resolve(parent, args, context) {
10
+ await (0, schemas_1.validateLoginSchema)(args.input);
11
+ const { email, password, domain } = args.input;
12
+ const user = await strapi.query(constants_1.USER_MODEL).findOne({
13
+ where: {
14
+ email: email.toLowerCase(),
15
+ platform: {
16
+ domain: domain.toLowerCase()
17
+ }
18
+ },
19
+ populate: {
20
+ platform: true
21
+ }
22
+ });
23
+ if (user == null) {
24
+ throw new UnauthorizedError('Invalid email or password');
25
+ }
26
+ const isPasswordValid = await strapi
27
+ .service('plugin::users-permissions.user')
28
+ .validatePassword(password, user.password);
29
+ if (isPasswordValid === false) {
30
+ throw new UnauthorizedError('Invalid email or password');
31
+ }
32
+ if (user.confirmed === false) {
33
+ throw new UnauthorizedError('Email is not confirmed');
34
+ }
35
+ if (user.activateUser === false) {
36
+ throw new UnauthorizedError('Account is not activated');
37
+ }
38
+ const sanitizedUser = utils_1.sanitize.contentAPI.output(user, strapi.getModel(constants_1.USER_MODEL), {
39
+ auth: false
40
+ });
41
+ const jwt = await strapi
42
+ .service('plugin::users-permissions.jwt')
43
+ .issue({ id: user.id, platformId: user.platform.id });
44
+ return {
45
+ user: sanitizedUser,
46
+ jwt
47
+ };
48
+ }
49
+ };
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.platformRegister = void 0;
4
+ const utils_1 = require("@strapi/utils");
5
+ const utils_2 = require("@strapi/utils");
6
+ const constants_1 = require("../../constants");
7
+ const schemas_1 = require("../../schemas");
8
+ const { ApplicationError, NotFoundError } = utils_2.errors;
9
+ exports.platformRegister = {
10
+ async resolve(parent, args, context) {
11
+ const pluginStore = await strapi.store({ type: 'plugin', name: 'users-permissions' });
12
+ const settings = await pluginStore.get({ key: 'advanced' });
13
+ await (0, schemas_1.validateRegisterSchema)(args.input);
14
+ const { email, domain } = args.input;
15
+ const platform = await strapi.query('api::platform.platform').findOne({
16
+ where: {
17
+ domain: domain.toLowerCase()
18
+ }
19
+ });
20
+ if (!platform) {
21
+ throw new NotFoundError('Platform not found');
22
+ }
23
+ const role = await strapi
24
+ .query('plugin::users-permissions.role')
25
+ .findOne({ where: { type: settings.default_role } });
26
+ if (!role) {
27
+ throw new ApplicationError('Impossible to find the default role');
28
+ }
29
+ const conflictingUserCount = await strapi.query(constants_1.USER_MODEL).count({
30
+ where: {
31
+ $and: [
32
+ {
33
+ email: email.toLowerCase()
34
+ },
35
+ {
36
+ platform: {
37
+ id: platform.id
38
+ }
39
+ }
40
+ ]
41
+ }
42
+ });
43
+ if (conflictingUserCount > 0) {
44
+ throw new ApplicationError('Email is already taken');
45
+ }
46
+ const userData = {
47
+ ...args.input,
48
+ role: role.id,
49
+ categories: args.input.categories,
50
+ platform: platform.id,
51
+ email: email.toLowerCase(),
52
+ provider: 'local',
53
+ confirmed: false,
54
+ activateUser: false
55
+ };
56
+ const createdUser = await strapi.entityService.create(constants_1.USER_MODEL, {
57
+ data: userData
58
+ });
59
+ const userModel = strapi.getModel(constants_1.USER_MODEL);
60
+ const sanitizedUser = utils_1.sanitize.contentAPI.output(createdUser, userModel, {
61
+ auth: false
62
+ });
63
+ await strapi.service('plugin::page-builder.email').sendConfirmationEmail(createdUser);
64
+ return {
65
+ user: sanitizedUser
66
+ };
67
+ }
68
+ };
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.platformResetPassword = void 0;
4
+ const utils_1 = require("@strapi/utils");
5
+ const constants_1 = require("../../constants");
6
+ const schemas_1 = require("../../schemas");
7
+ exports.platformResetPassword = {
8
+ async resolve(parent, args, context) {
9
+ await (0, schemas_1.validateResetPasswordSchema)(args.input);
10
+ const { password, resetPasswordToken } = args.input;
11
+ const jwtService = strapi.plugin('users-permissions').service('jwt');
12
+ const decodedToken = await jwtService.verify(resetPasswordToken);
13
+ if (decodedToken) {
14
+ const user = await strapi.query(constants_1.USER_MODEL).findOne({
15
+ where: {
16
+ id: decodedToken.userId,
17
+ resetPasswordToken: resetPasswordToken
18
+ }
19
+ });
20
+ if (user && user.resetPasswordToken && user.resetPasswordToken === resetPasswordToken) {
21
+ if (password) {
22
+ await strapi.entityService.update(constants_1.USER_MODEL, user.id, {
23
+ data: {
24
+ // @ts-ignore
25
+ password: password,
26
+ resetPasswordToken: null
27
+ }
28
+ });
29
+ }
30
+ const userModel = strapi.getModel(constants_1.USER_MODEL);
31
+ const sanitizedUser = utils_1.sanitize.contentAPI.output(user, userModel, {
32
+ auth: false
33
+ });
34
+ return {
35
+ user: sanitizedUser
36
+ };
37
+ }
38
+ }
39
+ throw new Error('Time of token has expired request a new password change');
40
+ }
41
+ };