@webbio/strapi-plugin-page-builder 0.12.2-platform → 0.12.4-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/collection-type-lifecycles.js +1 -1
- package/dist/server/bootstrap.js +1 -1
- package/dist/server/graphql/page-by-path.js +20 -17
- package/dist/server/graphql/page-by-slug.js +9 -9
- 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/server/utils/graphql.js +18 -18
- 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
|
@@ -1,56 +1,56 @@
|
|
|
1
|
-
import { errors, sanitize } from '@strapi/utils';
|
|
2
|
-
import { USER_MODEL } from '../../constants';
|
|
3
|
-
import { validateLoginSchema } from '../../schemas';
|
|
4
|
-
const { UnauthorizedError } = errors;
|
|
5
|
-
|
|
6
|
-
export const platformLogin = {
|
|
7
|
-
async resolve(parent, args, context) {
|
|
8
|
-
await validateLoginSchema(args.input);
|
|
9
|
-
|
|
10
|
-
const { email, password, domain } = args.input;
|
|
11
|
-
|
|
12
|
-
const user = await strapi.query(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
|
-
|
|
24
|
-
if (user == null) {
|
|
25
|
-
throw new UnauthorizedError('Invalid email or password');
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
const isPasswordValid = await strapi
|
|
29
|
-
.service('plugin::users-permissions.user')
|
|
30
|
-
.validatePassword(password, user.password);
|
|
31
|
-
|
|
32
|
-
if (isPasswordValid === false) {
|
|
33
|
-
throw new UnauthorizedError('Invalid email or password');
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
if (user.confirmed === false) {
|
|
37
|
-
throw new UnauthorizedError('Email is not confirmed');
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
if (user.activateUser === false) {
|
|
41
|
-
throw new UnauthorizedError('Account is not activated');
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
const sanitizedUser = sanitize.contentAPI.output(user, strapi.getModel(USER_MODEL), {
|
|
45
|
-
auth: false
|
|
46
|
-
});
|
|
47
|
-
const jwt = await strapi
|
|
48
|
-
.service('plugin::users-permissions.jwt')
|
|
49
|
-
.issue({ id: user.id, platformId: user.platform.id });
|
|
50
|
-
|
|
51
|
-
return {
|
|
52
|
-
user: sanitizedUser,
|
|
53
|
-
jwt
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
};
|
|
1
|
+
import { errors, sanitize } from '@strapi/utils';
|
|
2
|
+
import { USER_MODEL } from '../../constants';
|
|
3
|
+
import { validateLoginSchema } from '../../schemas';
|
|
4
|
+
const { UnauthorizedError } = errors;
|
|
5
|
+
|
|
6
|
+
export const platformLogin = {
|
|
7
|
+
async resolve(parent, args, context) {
|
|
8
|
+
await validateLoginSchema(args.input);
|
|
9
|
+
|
|
10
|
+
const { email, password, domain } = args.input;
|
|
11
|
+
|
|
12
|
+
const user = await strapi.query(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
|
+
|
|
24
|
+
if (user == null) {
|
|
25
|
+
throw new UnauthorizedError('Invalid email or password');
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const isPasswordValid = await strapi
|
|
29
|
+
.service('plugin::users-permissions.user')
|
|
30
|
+
.validatePassword(password, user.password);
|
|
31
|
+
|
|
32
|
+
if (isPasswordValid === false) {
|
|
33
|
+
throw new UnauthorizedError('Invalid email or password');
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (user.confirmed === false) {
|
|
37
|
+
throw new UnauthorizedError('Email is not confirmed');
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (user.activateUser === false) {
|
|
41
|
+
throw new UnauthorizedError('Account is not activated');
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const sanitizedUser = sanitize.contentAPI.output(user, strapi.getModel(USER_MODEL), {
|
|
45
|
+
auth: false
|
|
46
|
+
});
|
|
47
|
+
const jwt = await strapi
|
|
48
|
+
.service('plugin::users-permissions.jwt')
|
|
49
|
+
.issue({ id: user.id, platformId: user.platform.id });
|
|
50
|
+
|
|
51
|
+
return {
|
|
52
|
+
user: sanitizedUser,
|
|
53
|
+
jwt
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
};
|
|
@@ -1,78 +1,78 @@
|
|
|
1
|
-
import { sanitize } from '@strapi/utils';
|
|
2
|
-
import { errors } from '@strapi/utils';
|
|
3
|
-
import { USER_MODEL } from '../../constants';
|
|
4
|
-
import { validateRegisterSchema } from '../../schemas';
|
|
5
|
-
const { ApplicationError, NotFoundError } = errors;
|
|
6
|
-
|
|
7
|
-
export const platformRegister = {
|
|
8
|
-
async resolve(parent, args, context) {
|
|
9
|
-
const pluginStore = await strapi.store({ type: 'plugin', name: 'users-permissions' });
|
|
10
|
-
const settings: any = await pluginStore.get({ key: 'advanced' });
|
|
11
|
-
|
|
12
|
-
await validateRegisterSchema(args.input);
|
|
13
|
-
|
|
14
|
-
const { email, domain } = args.input;
|
|
15
|
-
|
|
16
|
-
const platform = await strapi.query('api::platform.platform').findOne({
|
|
17
|
-
where: {
|
|
18
|
-
domain: domain.toLowerCase()
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
if (!platform) {
|
|
23
|
-
throw new NotFoundError('Platform not found');
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const role = await strapi
|
|
27
|
-
.query('plugin::users-permissions.role')
|
|
28
|
-
.findOne({ where: { type: settings.default_role } });
|
|
29
|
-
|
|
30
|
-
if (!role) {
|
|
31
|
-
throw new ApplicationError('Impossible to find the default role');
|
|
32
|
-
}
|
|
33
|
-
const conflictingUserCount = await strapi.query(USER_MODEL).count({
|
|
34
|
-
where: {
|
|
35
|
-
$and: [
|
|
36
|
-
{
|
|
37
|
-
email: email.toLowerCase()
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
platform: {
|
|
41
|
-
id: platform.id
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
]
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
if (conflictingUserCount > 0) {
|
|
49
|
-
throw new ApplicationError('Email is already taken');
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const userData = {
|
|
53
|
-
...args.input,
|
|
54
|
-
role: role.id,
|
|
55
|
-
categories: args.input.categories,
|
|
56
|
-
platform: platform.id,
|
|
57
|
-
email: email.toLowerCase(),
|
|
58
|
-
provider: 'local',
|
|
59
|
-
confirmed: false,
|
|
60
|
-
activateUser: false
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
const createdUser = await strapi.entityService.create(USER_MODEL, {
|
|
64
|
-
data: userData
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
const userModel = strapi.getModel(USER_MODEL);
|
|
68
|
-
const sanitizedUser = sanitize.contentAPI.output(createdUser, userModel, {
|
|
69
|
-
auth: false
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
await strapi.service('plugin::page-builder.email').sendConfirmationEmail(createdUser);
|
|
73
|
-
|
|
74
|
-
return {
|
|
75
|
-
user: sanitizedUser
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
};
|
|
1
|
+
import { sanitize } from '@strapi/utils';
|
|
2
|
+
import { errors } from '@strapi/utils';
|
|
3
|
+
import { USER_MODEL } from '../../constants';
|
|
4
|
+
import { validateRegisterSchema } from '../../schemas';
|
|
5
|
+
const { ApplicationError, NotFoundError } = errors;
|
|
6
|
+
|
|
7
|
+
export const platformRegister = {
|
|
8
|
+
async resolve(parent, args, context) {
|
|
9
|
+
const pluginStore = await strapi.store({ type: 'plugin', name: 'users-permissions' });
|
|
10
|
+
const settings: any = await pluginStore.get({ key: 'advanced' });
|
|
11
|
+
|
|
12
|
+
await validateRegisterSchema(args.input);
|
|
13
|
+
|
|
14
|
+
const { email, domain } = args.input;
|
|
15
|
+
|
|
16
|
+
const platform = await strapi.query('api::platform.platform').findOne({
|
|
17
|
+
where: {
|
|
18
|
+
domain: domain.toLowerCase()
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
if (!platform) {
|
|
23
|
+
throw new NotFoundError('Platform not found');
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const role = await strapi
|
|
27
|
+
.query('plugin::users-permissions.role')
|
|
28
|
+
.findOne({ where: { type: settings.default_role } });
|
|
29
|
+
|
|
30
|
+
if (!role) {
|
|
31
|
+
throw new ApplicationError('Impossible to find the default role');
|
|
32
|
+
}
|
|
33
|
+
const conflictingUserCount = await strapi.query(USER_MODEL).count({
|
|
34
|
+
where: {
|
|
35
|
+
$and: [
|
|
36
|
+
{
|
|
37
|
+
email: email.toLowerCase()
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
platform: {
|
|
41
|
+
id: platform.id
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
if (conflictingUserCount > 0) {
|
|
49
|
+
throw new ApplicationError('Email is already taken');
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const userData = {
|
|
53
|
+
...args.input,
|
|
54
|
+
role: role.id,
|
|
55
|
+
categories: args.input.categories,
|
|
56
|
+
platform: platform.id,
|
|
57
|
+
email: email.toLowerCase(),
|
|
58
|
+
provider: 'local',
|
|
59
|
+
confirmed: false,
|
|
60
|
+
activateUser: false
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
const createdUser = await strapi.entityService.create(USER_MODEL, {
|
|
64
|
+
data: userData
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
const userModel = strapi.getModel(USER_MODEL);
|
|
68
|
+
const sanitizedUser = sanitize.contentAPI.output(createdUser, userModel, {
|
|
69
|
+
auth: false
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
await strapi.service('plugin::page-builder.email').sendConfirmationEmail(createdUser);
|
|
73
|
+
|
|
74
|
+
return {
|
|
75
|
+
user: sanitizedUser
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
};
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
import { sanitize } from '@strapi/utils';
|
|
2
|
-
import { USER_MODEL } from '../../constants';
|
|
3
|
-
import { validateResetPasswordSchema } from '../../schemas';
|
|
4
|
-
|
|
5
|
-
export const platformResetPassword = {
|
|
6
|
-
async resolve(parent, args, context) {
|
|
7
|
-
await validateResetPasswordSchema(args.input);
|
|
8
|
-
|
|
9
|
-
const { password, resetPasswordToken } = args.input;
|
|
10
|
-
|
|
11
|
-
const jwtService = strapi.plugin('users-permissions').service('jwt');
|
|
12
|
-
const decodedToken = await jwtService.verify(resetPasswordToken);
|
|
13
|
-
|
|
14
|
-
if (decodedToken) {
|
|
15
|
-
const user = await strapi.query(USER_MODEL).findOne({
|
|
16
|
-
where: {
|
|
17
|
-
id: decodedToken.userId,
|
|
18
|
-
resetPasswordToken: resetPasswordToken
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
if (user && user.resetPasswordToken && user.resetPasswordToken === resetPasswordToken) {
|
|
22
|
-
if (password) {
|
|
23
|
-
await strapi.entityService.update(USER_MODEL, user.id, {
|
|
24
|
-
data: {
|
|
25
|
-
// @ts-ignore
|
|
26
|
-
password: password,
|
|
27
|
-
resetPasswordToken: null
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
const userModel = strapi.getModel(USER_MODEL);
|
|
33
|
-
const sanitizedUser = sanitize.contentAPI.output(user, userModel, {
|
|
34
|
-
auth: false
|
|
35
|
-
});
|
|
36
|
-
return {
|
|
37
|
-
user: sanitizedUser
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
throw new Error('Time of token has expired request a new password change');
|
|
43
|
-
}
|
|
44
|
-
};
|
|
1
|
+
import { sanitize } from '@strapi/utils';
|
|
2
|
+
import { USER_MODEL } from '../../constants';
|
|
3
|
+
import { validateResetPasswordSchema } from '../../schemas';
|
|
4
|
+
|
|
5
|
+
export const platformResetPassword = {
|
|
6
|
+
async resolve(parent, args, context) {
|
|
7
|
+
await validateResetPasswordSchema(args.input);
|
|
8
|
+
|
|
9
|
+
const { password, resetPasswordToken } = args.input;
|
|
10
|
+
|
|
11
|
+
const jwtService = strapi.plugin('users-permissions').service('jwt');
|
|
12
|
+
const decodedToken = await jwtService.verify(resetPasswordToken);
|
|
13
|
+
|
|
14
|
+
if (decodedToken) {
|
|
15
|
+
const user = await strapi.query(USER_MODEL).findOne({
|
|
16
|
+
where: {
|
|
17
|
+
id: decodedToken.userId,
|
|
18
|
+
resetPasswordToken: resetPasswordToken
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
if (user && user.resetPasswordToken && user.resetPasswordToken === resetPasswordToken) {
|
|
22
|
+
if (password) {
|
|
23
|
+
await strapi.entityService.update(USER_MODEL, user.id, {
|
|
24
|
+
data: {
|
|
25
|
+
// @ts-ignore
|
|
26
|
+
password: password,
|
|
27
|
+
resetPasswordToken: null
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const userModel = strapi.getModel(USER_MODEL);
|
|
33
|
+
const sanitizedUser = sanitize.contentAPI.output(user, userModel, {
|
|
34
|
+
auth: false
|
|
35
|
+
});
|
|
36
|
+
return {
|
|
37
|
+
user: sanitizedUser
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
throw new Error('Time of token has expired request a new password change');
|
|
43
|
+
}
|
|
44
|
+
};
|
|
@@ -1,96 +1,96 @@
|
|
|
1
|
-
export const LoginInput = `
|
|
2
|
-
input LoginInput {
|
|
3
|
-
email: String!
|
|
4
|
-
password: String!
|
|
5
|
-
domain: String!
|
|
6
|
-
}
|
|
7
|
-
`;
|
|
8
|
-
|
|
9
|
-
export const ForgotPasswordInput = `
|
|
10
|
-
input ForgotPasswordInput {
|
|
11
|
-
email: String!
|
|
12
|
-
domain: String!
|
|
13
|
-
}`;
|
|
14
|
-
|
|
15
|
-
export const RegisterInput = `
|
|
16
|
-
input RegisterInput {
|
|
17
|
-
email: String!
|
|
18
|
-
password: String!
|
|
19
|
-
firstName: String
|
|
20
|
-
lastName: String
|
|
21
|
-
company: String
|
|
22
|
-
jobTitle: String
|
|
23
|
-
address: String
|
|
24
|
-
postalCode: String
|
|
25
|
-
city: String
|
|
26
|
-
country: String
|
|
27
|
-
phone: String
|
|
28
|
-
subscribeToNewsletter: Boolean
|
|
29
|
-
categories: [ID]
|
|
30
|
-
domain: String!
|
|
31
|
-
}
|
|
32
|
-
`;
|
|
33
|
-
|
|
34
|
-
export const LoginResponse = `
|
|
35
|
-
type LoginResponse {
|
|
36
|
-
jwt: String
|
|
37
|
-
user: User
|
|
38
|
-
}
|
|
39
|
-
`;
|
|
40
|
-
|
|
41
|
-
export const RegisterResponse = `
|
|
42
|
-
type RegisterResponse {
|
|
43
|
-
user: User
|
|
44
|
-
}
|
|
45
|
-
`;
|
|
46
|
-
|
|
47
|
-
export const ForgotPasswordResponse = `
|
|
48
|
-
type ForgotPasswordResponse {
|
|
49
|
-
message: String
|
|
50
|
-
}
|
|
51
|
-
`;
|
|
52
|
-
|
|
53
|
-
export const User = `
|
|
54
|
-
type User {
|
|
55
|
-
id: ID!
|
|
56
|
-
email: String!
|
|
57
|
-
confirmed: Boolean
|
|
58
|
-
blocked: Boolean
|
|
59
|
-
activated: Boolean
|
|
60
|
-
}
|
|
61
|
-
`;
|
|
62
|
-
|
|
63
|
-
export const ResetPassword = `
|
|
64
|
-
type ResetPassword {
|
|
65
|
-
jwt: String
|
|
66
|
-
email: String
|
|
67
|
-
}
|
|
68
|
-
`;
|
|
69
|
-
export const ResetPasswordInput = `
|
|
70
|
-
input ResetPasswordInput {
|
|
71
|
-
password: String!
|
|
72
|
-
resetPasswordToken: String!
|
|
73
|
-
}
|
|
74
|
-
`;
|
|
75
|
-
|
|
76
|
-
export const ResetPasswordResponse = `
|
|
77
|
-
type ResetPasswordResponse {
|
|
78
|
-
user: User
|
|
79
|
-
}
|
|
80
|
-
`;
|
|
81
|
-
|
|
82
|
-
export const Mutations = `
|
|
83
|
-
type Mutation {
|
|
84
|
-
platformLogin(input: LoginInput!): LoginResponse
|
|
85
|
-
platformRegister(input: RegisterInput!): RegisterResponse
|
|
86
|
-
platformForgotPassword(input: ForgotPasswordInput!): ForgotPasswordResponse
|
|
87
|
-
platformResetPassword(input: ResetPasswordInput!): ResetPasswordResponse
|
|
88
|
-
}
|
|
89
|
-
`;
|
|
90
|
-
|
|
91
|
-
export const Queries = `
|
|
92
|
-
type Query {
|
|
93
|
-
page(id: ID, locale: I18NLocaleCode): PageEntityResponse
|
|
94
|
-
pages(filters: PageFiltersInput pagination: PaginationArg = {} sort: [String] = [] publicationState: PublicationState = LIVE locale: I18NLocaleCode): PageEntityResponseCollection
|
|
95
|
-
}
|
|
96
|
-
`;
|
|
1
|
+
export const LoginInput = `
|
|
2
|
+
input LoginInput {
|
|
3
|
+
email: String!
|
|
4
|
+
password: String!
|
|
5
|
+
domain: String!
|
|
6
|
+
}
|
|
7
|
+
`;
|
|
8
|
+
|
|
9
|
+
export const ForgotPasswordInput = `
|
|
10
|
+
input ForgotPasswordInput {
|
|
11
|
+
email: String!
|
|
12
|
+
domain: String!
|
|
13
|
+
}`;
|
|
14
|
+
|
|
15
|
+
export const RegisterInput = `
|
|
16
|
+
input RegisterInput {
|
|
17
|
+
email: String!
|
|
18
|
+
password: String!
|
|
19
|
+
firstName: String
|
|
20
|
+
lastName: String
|
|
21
|
+
company: String
|
|
22
|
+
jobTitle: String
|
|
23
|
+
address: String
|
|
24
|
+
postalCode: String
|
|
25
|
+
city: String
|
|
26
|
+
country: String
|
|
27
|
+
phone: String
|
|
28
|
+
subscribeToNewsletter: Boolean
|
|
29
|
+
categories: [ID]
|
|
30
|
+
domain: String!
|
|
31
|
+
}
|
|
32
|
+
`;
|
|
33
|
+
|
|
34
|
+
export const LoginResponse = `
|
|
35
|
+
type LoginResponse {
|
|
36
|
+
jwt: String
|
|
37
|
+
user: User
|
|
38
|
+
}
|
|
39
|
+
`;
|
|
40
|
+
|
|
41
|
+
export const RegisterResponse = `
|
|
42
|
+
type RegisterResponse {
|
|
43
|
+
user: User
|
|
44
|
+
}
|
|
45
|
+
`;
|
|
46
|
+
|
|
47
|
+
export const ForgotPasswordResponse = `
|
|
48
|
+
type ForgotPasswordResponse {
|
|
49
|
+
message: String
|
|
50
|
+
}
|
|
51
|
+
`;
|
|
52
|
+
|
|
53
|
+
export const User = `
|
|
54
|
+
type User {
|
|
55
|
+
id: ID!
|
|
56
|
+
email: String!
|
|
57
|
+
confirmed: Boolean
|
|
58
|
+
blocked: Boolean
|
|
59
|
+
activated: Boolean
|
|
60
|
+
}
|
|
61
|
+
`;
|
|
62
|
+
|
|
63
|
+
export const ResetPassword = `
|
|
64
|
+
type ResetPassword {
|
|
65
|
+
jwt: String
|
|
66
|
+
email: String
|
|
67
|
+
}
|
|
68
|
+
`;
|
|
69
|
+
export const ResetPasswordInput = `
|
|
70
|
+
input ResetPasswordInput {
|
|
71
|
+
password: String!
|
|
72
|
+
resetPasswordToken: String!
|
|
73
|
+
}
|
|
74
|
+
`;
|
|
75
|
+
|
|
76
|
+
export const ResetPasswordResponse = `
|
|
77
|
+
type ResetPasswordResponse {
|
|
78
|
+
user: User
|
|
79
|
+
}
|
|
80
|
+
`;
|
|
81
|
+
|
|
82
|
+
export const Mutations = `
|
|
83
|
+
type Mutation {
|
|
84
|
+
platformLogin(input: LoginInput!): LoginResponse
|
|
85
|
+
platformRegister(input: RegisterInput!): RegisterResponse
|
|
86
|
+
platformForgotPassword(input: ForgotPasswordInput!): ForgotPasswordResponse
|
|
87
|
+
platformResetPassword(input: ResetPasswordInput!): ResetPasswordResponse
|
|
88
|
+
}
|
|
89
|
+
`;
|
|
90
|
+
|
|
91
|
+
export const Queries = `
|
|
92
|
+
type Query {
|
|
93
|
+
page(id: ID, locale: I18NLocaleCode): PageEntityResponse
|
|
94
|
+
pages(filters: PageFiltersInput pagination: PaginationArg = {} sort: [String] = [] publicationState: PublicationState = LIVE locale: I18NLocaleCode): PageEntityResponseCollection
|
|
95
|
+
}
|
|
96
|
+
`;
|