@strapi/plugin-users-permissions 4.2.0-alpha.9 → 4.2.0-beta.1

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 (41) hide show
  1. package/admin/src/components/FormModal/index.js +1 -1
  2. package/admin/src/index.js +1 -1
  3. package/admin/src/pages/AdvancedSettings/index.js +2 -2
  4. package/admin/src/pages/EmailTemplates/components/EmailTable.js +2 -2
  5. package/admin/src/pages/Providers/index.js +4 -4
  6. package/admin/src/pages/Roles/CreatePage/index.js +3 -3
  7. package/admin/src/pages/Roles/EditPage/index.js +4 -4
  8. package/admin/src/pages/Roles/ListPage/components/TableBody.js +2 -3
  9. package/admin/src/pages/Roles/ListPage/index.js +6 -6
  10. package/admin/src/translations/ar.json +0 -1
  11. package/admin/src/translations/cs.json +0 -1
  12. package/admin/src/translations/de.json +0 -2
  13. package/admin/src/translations/dk.json +0 -11
  14. package/admin/src/translations/en.json +0 -11
  15. package/admin/src/translations/es.json +0 -11
  16. package/admin/src/translations/fr.json +0 -1
  17. package/admin/src/translations/id.json +0 -2
  18. package/admin/src/translations/it.json +0 -2
  19. package/admin/src/translations/ja.json +0 -1
  20. package/admin/src/translations/ko.json +0 -11
  21. package/admin/src/translations/ms.json +0 -1
  22. package/admin/src/translations/nl.json +0 -1
  23. package/admin/src/translations/pl.json +0 -1
  24. package/admin/src/translations/pt-BR.json +0 -1
  25. package/admin/src/translations/pt.json +0 -1
  26. package/admin/src/translations/ru.json +0 -2
  27. package/admin/src/translations/sk.json +0 -1
  28. package/admin/src/translations/sv.json +0 -2
  29. package/admin/src/translations/th.json +0 -2
  30. package/admin/src/translations/tr.json +0 -1
  31. package/admin/src/translations/uk.json +0 -1
  32. package/admin/src/translations/vi.json +0 -1
  33. package/admin/src/translations/zh-Hans.json +0 -3
  34. package/admin/src/translations/zh.json +0 -1
  35. package/package.json +6 -8
  36. package/server/bootstrap/index.js +13 -4
  37. package/server/controllers/auth.js +10 -15
  38. package/server/controllers/validation/email-template.js +10 -1
  39. package/server/services/providers-list.js +152 -348
  40. package/server/services/providers.js +58 -69
  41. package/server/services/user.js +3 -1
@@ -18,17 +18,16 @@ module.exports = ({ strapi }) => {
18
18
  * Helper to get profiles
19
19
  *
20
20
  * @param {String} provider
21
- * @param {Function} callback
22
21
  */
23
22
 
24
- const getProfile = async (provider, query, callback) => {
23
+ const getProfile = async (provider, query) => {
25
24
  const access_token = query.access_token || query.code || query.oauth_token;
26
25
 
27
26
  const providers = await strapi
28
27
  .store({ type: 'plugin', name: 'users-permissions', key: 'grant' })
29
28
  .get();
30
29
 
31
- await providerRequest({ provider, query, callback, access_token, providers });
30
+ return providerRequest({ provider, query, access_token, providers });
32
31
  };
33
32
 
34
33
  /**
@@ -46,79 +45,69 @@ module.exports = ({ strapi }) => {
46
45
 
47
46
  return new Promise((resolve, reject) => {
48
47
  if (!access_token) {
49
- return reject([null, { message: 'No access_token.' }]);
48
+ return reject({ message: 'No access_token.' });
50
49
  }
51
50
 
52
51
  // Get the profile.
53
- getProfile(provider, query, async (err, profile) => {
54
- if (err) {
55
- return reject([null, err]);
56
- }
57
-
58
- const email = _.toLower(profile.email);
59
-
60
- // We need at least the mail.
61
- if (!email) {
62
- return reject([null, { message: 'Email was not available.' }]);
63
- }
64
-
65
- try {
66
- const users = await strapi.query('plugin::users-permissions.user').findMany({
67
- where: { email },
68
- });
69
-
70
- const advanced = await strapi
71
- .store({ type: 'plugin', name: 'users-permissions', key: 'advanced' })
72
- .get();
73
-
74
- const user = _.find(users, { provider });
75
-
76
- if (_.isEmpty(user) && !advanced.allow_register) {
77
- return resolve([
78
- null,
79
- [{ messages: [{ id: 'Auth.advanced.allow_register' }] }],
80
- 'Register action is actually not available.',
81
- ]);
82
- }
52
+ getProfile(provider, query)
53
+ .then(async profile => {
54
+ const email = _.toLower(profile.email);
83
55
 
84
- if (!_.isEmpty(user)) {
85
- return resolve([user, null]);
56
+ // We need at least the mail.
57
+ if (!email) {
58
+ return reject({ message: 'Email was not available.' });
86
59
  }
87
60
 
88
- if (
89
- !_.isEmpty(_.find(users, user => user.provider !== provider)) &&
90
- advanced.unique_email
91
- ) {
92
- return resolve([
93
- null,
94
- [{ messages: [{ id: 'Auth.form.error.email.taken' }] }],
95
- 'Email is already taken.',
96
- ]);
61
+ try {
62
+ const users = await strapi.query('plugin::users-permissions.user').findMany({
63
+ where: { email },
64
+ });
65
+
66
+ const advanced = await strapi
67
+ .store({ type: 'plugin', name: 'users-permissions', key: 'advanced' })
68
+ .get();
69
+
70
+ const user = _.find(users, { provider });
71
+
72
+ if (_.isEmpty(user) && !advanced.allow_register) {
73
+ return reject({ message: 'Register action is actually not available.' });
74
+ }
75
+
76
+ if (!_.isEmpty(user)) {
77
+ return resolve(user);
78
+ }
79
+
80
+ if (
81
+ !_.isEmpty(_.find(users, user => user.provider !== provider)) &&
82
+ advanced.unique_email
83
+ ) {
84
+ return reject({ message: 'Email is already taken.' });
85
+ }
86
+
87
+ // Retrieve default role.
88
+ const defaultRole = await strapi
89
+ .query('plugin::users-permissions.role')
90
+ .findOne({ where: { type: advanced.default_role } });
91
+
92
+ // Create the new user.
93
+ const params = {
94
+ ...profile,
95
+ email, // overwrite with lowercased email
96
+ provider,
97
+ role: defaultRole.id,
98
+ confirmed: true,
99
+ };
100
+
101
+ const createdUser = await strapi
102
+ .query('plugin::users-permissions.user')
103
+ .create({ data: params });
104
+
105
+ return resolve(createdUser);
106
+ } catch (err) {
107
+ reject(err);
97
108
  }
98
-
99
- // Retrieve default role.
100
- const defaultRole = await strapi
101
- .query('plugin::users-permissions.role')
102
- .findOne({ where: { type: advanced.default_role } });
103
-
104
- // Create the new user.
105
- const params = {
106
- ...profile,
107
- email, // overwrite with lowercased email
108
- provider,
109
- role: defaultRole.id,
110
- confirmed: true,
111
- };
112
-
113
- const createdUser = await strapi
114
- .query('plugin::users-permissions.user')
115
- .create({ data: params });
116
-
117
- return resolve([createdUser, null]);
118
- } catch (err) {
119
- reject([null, err]);
120
- }
121
- });
109
+ })
110
+ .catch(reject);
122
111
  });
123
112
  };
124
113
 
@@ -10,7 +10,7 @@ const crypto = require('crypto');
10
10
  const bcrypt = require('bcryptjs');
11
11
  const urlJoin = require('url-join');
12
12
 
13
- const { getAbsoluteServerUrl, sanitize } = require('@strapi/utils');
13
+ const { getAbsoluteAdminUrl, getAbsoluteServerUrl, sanitize } = require('@strapi/utils');
14
14
  const { getService } = require('../utils');
15
15
 
16
16
  module.exports = ({ strapi }) => ({
@@ -118,6 +118,8 @@ module.exports = ({ strapi }) => ({
118
118
  const apiPrefix = strapi.config.get('api.rest.prefix');
119
119
  settings.message = await userPermissionService.template(settings.message, {
120
120
  URL: urlJoin(getAbsoluteServerUrl(strapi.config), apiPrefix, '/auth/email-confirmation'),
121
+ SERVER_URL: getAbsoluteServerUrl(strapi.config),
122
+ ADMIN_URL: getAbsoluteAdminUrl(strapi.config),
121
123
  USER: sanitizedUserInfo,
122
124
  CODE: confirmationToken,
123
125
  });