@strapi/plugin-users-permissions 4.0.0-next.9 → 4.0.0

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 (177) hide show
  1. package/admin/src/components/BoundRoute/getMethodColor.js +41 -0
  2. package/admin/src/components/BoundRoute/index.js +40 -24
  3. package/admin/src/components/FormModal/Input/index.js +121 -0
  4. package/admin/src/components/FormModal/index.js +123 -0
  5. package/admin/src/components/Permissions/PermissionRow/CheckboxWrapper.js +19 -26
  6. package/admin/src/components/Permissions/PermissionRow/SubCategory.js +118 -0
  7. package/admin/src/components/Permissions/PermissionRow/index.js +9 -48
  8. package/admin/src/components/Permissions/index.js +36 -24
  9. package/admin/src/components/Permissions/init.js +1 -6
  10. package/admin/src/components/Policies/index.js +46 -47
  11. package/admin/src/components/UsersPermissions/index.js +29 -26
  12. package/admin/src/components/UsersPermissions/init.js +1 -2
  13. package/admin/src/hooks/useFetchRole/index.js +17 -7
  14. package/admin/src/hooks/useForm/index.js +3 -29
  15. package/admin/src/hooks/useForm/reducer.js +2 -21
  16. package/admin/src/hooks/usePlugins/index.js +12 -21
  17. package/admin/src/hooks/usePlugins/reducer.js +0 -3
  18. package/admin/src/index.js +0 -8
  19. package/admin/src/pages/AdvancedSettings/index.js +203 -193
  20. package/admin/src/pages/AdvancedSettings/utils/api.js +13 -0
  21. package/admin/src/pages/AdvancedSettings/utils/layout.js +96 -0
  22. package/admin/src/pages/AdvancedSettings/utils/schema.js +22 -0
  23. package/admin/src/pages/EmailTemplates/components/EmailForm.js +173 -0
  24. package/admin/src/pages/EmailTemplates/components/EmailTable.js +116 -0
  25. package/admin/src/pages/EmailTemplates/index.js +117 -197
  26. package/admin/src/pages/EmailTemplates/utils/api.js +13 -0
  27. package/admin/src/pages/Providers/index.js +206 -221
  28. package/admin/src/pages/Providers/utils/api.js +21 -0
  29. package/admin/src/pages/Providers/utils/forms.js +168 -126
  30. package/admin/src/pages/Roles/CreatePage/index.js +155 -147
  31. package/admin/src/pages/Roles/EditPage/index.js +162 -134
  32. package/admin/src/pages/Roles/ListPage/components/TableBody.js +96 -0
  33. package/admin/src/pages/Roles/ListPage/index.js +176 -156
  34. package/admin/src/pages/Roles/ListPage/utils/api.js +28 -0
  35. package/admin/src/translations/ar.json +0 -8
  36. package/admin/src/translations/cs.json +0 -8
  37. package/admin/src/translations/de.json +0 -8
  38. package/admin/src/translations/dk.json +0 -8
  39. package/admin/src/translations/en.json +33 -12
  40. package/admin/src/translations/es.json +0 -8
  41. package/admin/src/translations/fr.json +0 -8
  42. package/admin/src/translations/id.json +0 -8
  43. package/admin/src/translations/it.json +0 -8
  44. package/admin/src/translations/ja.json +0 -8
  45. package/admin/src/translations/ko.json +0 -8
  46. package/admin/src/translations/ms.json +0 -8
  47. package/admin/src/translations/nl.json +0 -8
  48. package/admin/src/translations/pl.json +0 -8
  49. package/admin/src/translations/pt-BR.json +0 -8
  50. package/admin/src/translations/pt.json +0 -8
  51. package/admin/src/translations/ru.json +0 -8
  52. package/admin/src/translations/sk.json +0 -8
  53. package/admin/src/translations/sv.json +0 -8
  54. package/admin/src/translations/th.json +0 -8
  55. package/admin/src/translations/tr.json +0 -8
  56. package/admin/src/translations/uk.json +0 -8
  57. package/admin/src/translations/vi.json +0 -8
  58. package/admin/src/translations/zh-Hans.json +5 -14
  59. package/admin/src/translations/zh.json +0 -8
  60. package/admin/src/utils/axiosInstance.js +36 -0
  61. package/admin/src/utils/formatPluginName.js +26 -0
  62. package/admin/src/utils/index.js +1 -0
  63. package/documentation/1.0.0/overrides/users-permissions-Role.json +6 -6
  64. package/documentation/1.0.0/overrides/users-permissions-User.json +7 -7
  65. package/package.json +30 -31
  66. package/server/bootstrap/index.js +19 -21
  67. package/server/config.js +3 -3
  68. package/server/content-types/index.js +3 -3
  69. package/server/content-types/permission/index.js +30 -3
  70. package/server/content-types/role/index.js +47 -3
  71. package/server/content-types/user/index.js +65 -4
  72. package/server/controllers/auth.js +81 -244
  73. package/server/controllers/content-manager-user.js +183 -0
  74. package/server/controllers/index.js +12 -6
  75. package/server/controllers/permissions.js +26 -0
  76. package/server/controllers/role.js +77 -0
  77. package/server/controllers/settings.js +85 -0
  78. package/server/controllers/user.js +118 -44
  79. package/server/controllers/validation/auth.js +29 -0
  80. package/server/controllers/validation/user.js +38 -0
  81. package/server/graphql/index.js +44 -0
  82. package/server/graphql/mutations/auth/email-confirmation.js +39 -0
  83. package/server/graphql/mutations/auth/forgot-password.js +38 -0
  84. package/server/graphql/mutations/auth/login.js +38 -0
  85. package/server/graphql/mutations/auth/register.js +39 -0
  86. package/server/graphql/mutations/auth/reset-password.js +41 -0
  87. package/server/graphql/mutations/crud/role/create-role.js +37 -0
  88. package/server/graphql/mutations/crud/role/delete-role.js +28 -0
  89. package/server/graphql/mutations/crud/role/update-role.js +38 -0
  90. package/server/graphql/mutations/crud/user/create-user.js +48 -0
  91. package/server/graphql/mutations/crud/user/delete-user.js +42 -0
  92. package/server/graphql/mutations/crud/user/update-user.js +49 -0
  93. package/server/graphql/mutations/index.js +42 -0
  94. package/server/graphql/queries/index.js +13 -0
  95. package/server/graphql/queries/me.js +17 -0
  96. package/server/graphql/resolvers-configs.js +37 -0
  97. package/server/graphql/types/create-role-payload.js +11 -0
  98. package/server/graphql/types/delete-role-payload.js +11 -0
  99. package/server/graphql/types/index.js +21 -0
  100. package/server/graphql/types/login-input.js +13 -0
  101. package/server/graphql/types/login-payload.js +12 -0
  102. package/server/graphql/types/me-role.js +14 -0
  103. package/server/graphql/types/me.js +16 -0
  104. package/server/graphql/types/password-payload.js +11 -0
  105. package/server/graphql/types/register-input.js +13 -0
  106. package/server/graphql/types/update-role-payload.js +11 -0
  107. package/server/graphql/utils.js +27 -0
  108. package/server/index.js +21 -0
  109. package/server/middlewares/index.js +2 -2
  110. package/server/{policies → middlewares}/rateLimit.js +3 -7
  111. package/server/register.js +11 -0
  112. package/server/routes/admin/index.js +10 -0
  113. package/server/routes/admin/permissions.js +20 -0
  114. package/server/routes/admin/role.js +79 -0
  115. package/server/routes/admin/settings.js +95 -0
  116. package/server/routes/content-api/auth.js +73 -0
  117. package/server/routes/content-api/index.js +11 -0
  118. package/server/routes/content-api/permissions.js +9 -0
  119. package/server/routes/content-api/role.js +29 -0
  120. package/server/routes/content-api/user.js +61 -0
  121. package/server/routes/index.js +4 -428
  122. package/server/services/index.js +10 -8
  123. package/server/services/jwt.js +9 -17
  124. package/server/services/providers.js +32 -33
  125. package/server/services/role.js +177 -0
  126. package/server/services/user.js +9 -15
  127. package/server/services/users-permissions.js +140 -338
  128. package/server/strategies/users-permissions.js +123 -0
  129. package/server/utils/index.d.ts +2 -0
  130. package/strapi-admin.js +3 -0
  131. package/strapi-server.js +1 -19
  132. package/admin/src/assets/images/logo.svg +0 -1
  133. package/admin/src/components/BaselineAlignement/index.js +0 -33
  134. package/admin/src/components/Bloc/index.js +0 -10
  135. package/admin/src/components/BoundRoute/Components.js +0 -78
  136. package/admin/src/components/ContainerFluid/index.js +0 -13
  137. package/admin/src/components/FormBloc/index.js +0 -61
  138. package/admin/src/components/IntlInput/index.js +0 -38
  139. package/admin/src/components/ListBaselineAlignment/index.js +0 -8
  140. package/admin/src/components/ListRow/Components.js +0 -74
  141. package/admin/src/components/ListRow/index.js +0 -35
  142. package/admin/src/components/ModalForm/Wrapper.js +0 -12
  143. package/admin/src/components/ModalForm/index.js +0 -59
  144. package/admin/src/components/Permissions/ListWrapper.js +0 -9
  145. package/admin/src/components/Permissions/PermissionRow/BaselineAlignment.js +0 -7
  146. package/admin/src/components/Permissions/PermissionRow/RowStyle.js +0 -28
  147. package/admin/src/components/Permissions/PermissionRow/SubCategory/ConditionsButtonWrapper.js +0 -13
  148. package/admin/src/components/Permissions/PermissionRow/SubCategory/PolicyWrapper.js +0 -8
  149. package/admin/src/components/Permissions/PermissionRow/SubCategory/SubCategoryWrapper.js +0 -26
  150. package/admin/src/components/Permissions/PermissionRow/SubCategory/index.js +0 -116
  151. package/admin/src/components/Policies/Components.js +0 -26
  152. package/admin/src/components/PrefixedIcon/index.js +0 -27
  153. package/admin/src/components/Roles/EmptyRole/BaselineAlignment.js +0 -7
  154. package/admin/src/components/Roles/EmptyRole/index.js +0 -27
  155. package/admin/src/components/Roles/RoleListWrapper/index.js +0 -17
  156. package/admin/src/components/Roles/RoleRow/RoleDescription.js +0 -9
  157. package/admin/src/components/Roles/RoleRow/index.js +0 -45
  158. package/admin/src/components/Roles/index.js +0 -3
  159. package/admin/src/components/SizedInput/index.js +0 -24
  160. package/admin/src/pages/AdvancedSettings/reducer.js +0 -65
  161. package/admin/src/pages/AdvancedSettings/utils/form.js +0 -52
  162. package/admin/src/pages/EmailTemplates/CustomTextInput.js +0 -105
  163. package/admin/src/pages/EmailTemplates/Wrapper.js +0 -36
  164. package/admin/src/pages/EmailTemplates/reducer.js +0 -58
  165. package/admin/src/pages/EmailTemplates/utils/forms.js +0 -81
  166. package/admin/src/pages/Roles/ListPage/BaselineAlignment.js +0 -8
  167. package/server/content-types/permission/schema.json +0 -48
  168. package/server/content-types/role/schema.json +0 -46
  169. package/server/content-types/user/schema.json +0 -66
  170. package/server/controllers/user/admin.js +0 -230
  171. package/server/controllers/user/api.js +0 -174
  172. package/server/controllers/users-permissions.js +0 -271
  173. package/server/middlewares/users-permissions.js +0 -44
  174. package/server/policies/index.js +0 -11
  175. package/server/policies/isAuthenticated.js +0 -9
  176. package/server/policies/permissions.js +0 -94
  177. package/server/schema.graphql.js +0 -317
@@ -13,12 +13,8 @@ const { getService } = require('../utils');
13
13
 
14
14
  const usersPermissionsActions = require('./users-permissions-actions');
15
15
 
16
- module.exports = async () => {
17
- const pluginStore = strapi.store({
18
- environment: '',
19
- type: 'plugin',
20
- name: 'users-permissions',
21
- });
16
+ module.exports = async ({ strapi }) => {
17
+ const pluginStore = strapi.store({ type: 'plugin', name: 'users-permissions' });
22
18
 
23
19
  await initGrant(pluginStore);
24
20
  await initEmails(pluginStore);
@@ -30,7 +26,6 @@ module.exports = async () => {
30
26
 
31
27
  await getService('users-permissions').initialize();
32
28
 
33
- // TODO: adapt with new extension system
34
29
  if (!strapi.config.get('plugin.users-permissions.jwtSecret')) {
35
30
  const jwtSecret = uuid();
36
31
  strapi.config.set('plugin.users-permissions.jwtSecret', jwtSecret);
@@ -42,6 +37,9 @@ module.exports = async () => {
42
37
  };
43
38
 
44
39
  const initGrant = async pluginStore => {
40
+ const apiPrefix = strapi.config.get('api.rest.prefix');
41
+ const baseURL = `${strapi.config.server.url}/${apiPrefix}/auth`;
42
+
45
43
  const grantConfig = {
46
44
  email: {
47
45
  enabled: true,
@@ -52,7 +50,7 @@ const initGrant = async pluginStore => {
52
50
  icon: 'discord',
53
51
  key: '',
54
52
  secret: '',
55
- callback: `${strapi.config.server.url}/auth/discord/callback`,
53
+ callback: `${baseURL}/discord/callback`,
56
54
  scope: ['identify', 'email'],
57
55
  },
58
56
  facebook: {
@@ -60,7 +58,7 @@ const initGrant = async pluginStore => {
60
58
  icon: 'facebook-square',
61
59
  key: '',
62
60
  secret: '',
63
- callback: `${strapi.config.server.url}/auth/facebook/callback`,
61
+ callback: `${baseURL}/facebook/callback`,
64
62
  scope: ['email'],
65
63
  },
66
64
  google: {
@@ -68,7 +66,7 @@ const initGrant = async pluginStore => {
68
66
  icon: 'google',
69
67
  key: '',
70
68
  secret: '',
71
- callback: `${strapi.config.server.url}/auth/google/callback`,
69
+ callback: `${baseURL}/google/callback`,
72
70
  scope: ['email'],
73
71
  },
74
72
  github: {
@@ -76,7 +74,7 @@ const initGrant = async pluginStore => {
76
74
  icon: 'github',
77
75
  key: '',
78
76
  secret: '',
79
- callback: `${strapi.config.server.url}/auth/github/callback`,
77
+ callback: `${baseURL}/github/callback`,
80
78
  scope: ['user', 'user:email'],
81
79
  },
82
80
  microsoft: {
@@ -84,7 +82,7 @@ const initGrant = async pluginStore => {
84
82
  icon: 'windows',
85
83
  key: '',
86
84
  secret: '',
87
- callback: `${strapi.config.server.url}/auth/microsoft/callback`,
85
+ callback: `${baseURL}/microsoft/callback`,
88
86
  scope: ['user.read'],
89
87
  },
90
88
  twitter: {
@@ -92,14 +90,14 @@ const initGrant = async pluginStore => {
92
90
  icon: 'twitter',
93
91
  key: '',
94
92
  secret: '',
95
- callback: `${strapi.config.server.url}/auth/twitter/callback`,
93
+ callback: `${baseURL}/twitter/callback`,
96
94
  },
97
95
  instagram: {
98
96
  enabled: false,
99
97
  icon: 'instagram',
100
98
  key: '',
101
99
  secret: '',
102
- callback: `${strapi.config.server.url}/auth/instagram/callback`,
100
+ callback: `${baseURL}/instagram/callback`,
103
101
  scope: ['user_profile'],
104
102
  },
105
103
  vk: {
@@ -107,7 +105,7 @@ const initGrant = async pluginStore => {
107
105
  icon: 'vk',
108
106
  key: '',
109
107
  secret: '',
110
- callback: `${strapi.config.server.url}/auth/vk/callback`,
108
+ callback: `${baseURL}/vk/callback`,
111
109
  scope: ['email'],
112
110
  },
113
111
  twitch: {
@@ -115,7 +113,7 @@ const initGrant = async pluginStore => {
115
113
  icon: 'twitch',
116
114
  key: '',
117
115
  secret: '',
118
- callback: `${strapi.config.server.url}/auth/twitch/callback`,
116
+ callback: `${baseURL}/twitch/callback`,
119
117
  scope: ['user:read:email'],
120
118
  },
121
119
  linkedin: {
@@ -123,7 +121,7 @@ const initGrant = async pluginStore => {
123
121
  icon: 'linkedin',
124
122
  key: '',
125
123
  secret: '',
126
- callback: `${strapi.config.server.url}/auth/linkedin/callback`,
124
+ callback: `${baseURL}/linkedin/callback`,
127
125
  scope: ['r_liteprofile', 'r_emailaddress'],
128
126
  },
129
127
  cognito: {
@@ -132,7 +130,7 @@ const initGrant = async pluginStore => {
132
130
  key: '',
133
131
  secret: '',
134
132
  subdomain: 'my.subdomain.com',
135
- callback: `${strapi.config.server.url}/auth/cognito/callback`,
133
+ callback: `${baseURL}/cognito/callback`,
136
134
  scope: ['email', 'openid', 'profile'],
137
135
  },
138
136
  reddit: {
@@ -141,7 +139,7 @@ const initGrant = async pluginStore => {
141
139
  key: '',
142
140
  secret: '',
143
141
  state: true,
144
- callback: `${strapi.config.server.url}/auth/reddit/callback`,
142
+ callback: `${baseURL}/reddit/callback`,
145
143
  scope: ['identity'],
146
144
  },
147
145
  auth0: {
@@ -150,7 +148,7 @@ const initGrant = async pluginStore => {
150
148
  key: '',
151
149
  secret: '',
152
150
  subdomain: 'my-tenant.eu',
153
- callback: `${strapi.config.server.url}/auth/auth0/callback`,
151
+ callback: `${baseURL}/auth0/callback`,
154
152
  scope: ['openid', 'email', 'profile'],
155
153
  },
156
154
  cas: {
@@ -158,7 +156,7 @@ const initGrant = async pluginStore => {
158
156
  icon: 'book',
159
157
  key: '',
160
158
  secret: '',
161
- callback: `${strapi.config.server.url}/auth/cas/callback`,
159
+ callback: `${baseURL}/cas/callback`,
162
160
  scope: ['openid email'], // scopes should be space delimited
163
161
  subdomain: 'my.subdomain.com/cas',
164
162
  },
package/server/config.js CHANGED
@@ -13,11 +13,11 @@ module.exports = {
13
13
  layout: {
14
14
  user: {
15
15
  actions: {
16
- create: 'User.create', // Use the User plugin's controller.
17
- update: 'User.update',
16
+ create: 'contentManagerUser.create', // Use the User plugin's controller.
17
+ update: 'contentManagerUser.update',
18
18
  },
19
19
  },
20
20
  },
21
21
  }),
22
- validator: () => {},
22
+ validator() {},
23
23
  };
@@ -5,7 +5,7 @@ const role = require('./role');
5
5
  const user = require('./user');
6
6
 
7
7
  module.exports = {
8
- permission,
9
- role,
10
- user,
8
+ permission: { schema: permission },
9
+ role: { schema: role },
10
+ user: { schema: user },
11
11
  };
@@ -1,7 +1,34 @@
1
1
  'use strict';
2
2
 
3
- const schema = require('./schema');
4
-
5
3
  module.exports = {
6
- schema,
4
+ collectionName: 'up_permissions',
5
+ info: {
6
+ name: 'permission',
7
+ description: '',
8
+ singularName: 'permission',
9
+ pluralName: 'permissions',
10
+ displayName: 'Permission',
11
+ },
12
+ pluginOptions: {
13
+ 'content-manager': {
14
+ visible: false,
15
+ },
16
+ 'content-type-builder': {
17
+ visible: false,
18
+ },
19
+ },
20
+ attributes: {
21
+ action: {
22
+ type: 'string',
23
+ required: true,
24
+ configurable: false,
25
+ },
26
+ role: {
27
+ type: 'relation',
28
+ relation: 'manyToOne',
29
+ target: 'plugin::users-permissions.role',
30
+ inversedBy: 'permissions',
31
+ configurable: false,
32
+ },
33
+ },
7
34
  };
@@ -1,7 +1,51 @@
1
1
  'use strict';
2
2
 
3
- const schema = require('./schema');
4
-
5
3
  module.exports = {
6
- schema,
4
+ collectionName: 'up_roles',
5
+ info: {
6
+ name: 'role',
7
+ description: '',
8
+ singularName: 'role',
9
+ pluralName: 'roles',
10
+ displayName: 'Role',
11
+ },
12
+ pluginOptions: {
13
+ 'content-manager': {
14
+ visible: false,
15
+ },
16
+ 'content-type-builder': {
17
+ visible: false,
18
+ },
19
+ },
20
+ attributes: {
21
+ name: {
22
+ type: 'string',
23
+ minLength: 3,
24
+ required: true,
25
+ configurable: false,
26
+ },
27
+ description: {
28
+ type: 'string',
29
+ configurable: false,
30
+ },
31
+ type: {
32
+ type: 'string',
33
+ unique: true,
34
+ configurable: false,
35
+ },
36
+ permissions: {
37
+ type: 'relation',
38
+ relation: 'oneToMany',
39
+ target: 'plugin::users-permissions.permission',
40
+ mappedBy: 'role',
41
+ configurable: false,
42
+ },
43
+ users: {
44
+ type: 'relation',
45
+ relation: 'oneToMany',
46
+ target: 'plugin::users-permissions.user',
47
+ mappedBy: 'role',
48
+ configurable: false,
49
+ },
50
+ },
7
51
  };
@@ -1,11 +1,72 @@
1
1
  'use strict';
2
2
 
3
- const schema = require('./schema');
4
3
  const schemaConfig = require('./schema-config');
5
4
 
6
5
  module.exports = {
7
- schema: {
8
- ...schema,
9
- config: schemaConfig, // TODO: to handle differently for V4
6
+ collectionName: 'up_users',
7
+ info: {
8
+ name: 'user',
9
+ description: '',
10
+ singularName: 'user',
11
+ pluralName: 'users',
12
+ displayName: 'User',
10
13
  },
14
+ options: {
15
+ draftAndPublish: false,
16
+ timestamps: true,
17
+ },
18
+ attributes: {
19
+ username: {
20
+ type: 'string',
21
+ minLength: 3,
22
+ unique: true,
23
+ configurable: false,
24
+ required: true,
25
+ },
26
+ email: {
27
+ type: 'email',
28
+ minLength: 6,
29
+ configurable: false,
30
+ required: true,
31
+ },
32
+ provider: {
33
+ type: 'string',
34
+ configurable: false,
35
+ },
36
+ password: {
37
+ type: 'password',
38
+ minLength: 6,
39
+ configurable: false,
40
+ private: true,
41
+ },
42
+ resetPasswordToken: {
43
+ type: 'string',
44
+ configurable: false,
45
+ private: true,
46
+ },
47
+ confirmationToken: {
48
+ type: 'string',
49
+ configurable: false,
50
+ private: true,
51
+ },
52
+ confirmed: {
53
+ type: 'boolean',
54
+ default: false,
55
+ configurable: false,
56
+ },
57
+ blocked: {
58
+ type: 'boolean',
59
+ default: false,
60
+ configurable: false,
61
+ },
62
+ role: {
63
+ type: 'relation',
64
+ relation: 'manyToOne',
65
+ target: 'plugin::users-permissions.role',
66
+ inversedBy: 'users',
67
+ configurable: false,
68
+ },
69
+ },
70
+
71
+ config: schemaConfig, // TODO: to move to content-manager options
11
72
  };