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

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 (178) 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 +21 -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 +93 -54
  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/jest.config.front.js +10 -0
  66. package/package.json +36 -33
  67. package/server/bootstrap/index.js +19 -21
  68. package/server/config.js +3 -3
  69. package/server/content-types/index.js +3 -3
  70. package/server/content-types/permission/index.js +30 -3
  71. package/server/content-types/role/index.js +47 -3
  72. package/server/content-types/user/index.js +65 -4
  73. package/server/controllers/auth.js +82 -245
  74. package/server/controllers/content-manager-user.js +183 -0
  75. package/server/controllers/index.js +12 -6
  76. package/server/controllers/permissions.js +26 -0
  77. package/server/controllers/role.js +77 -0
  78. package/server/controllers/settings.js +85 -0
  79. package/server/controllers/user.js +119 -45
  80. package/server/controllers/validation/auth.js +29 -0
  81. package/server/controllers/validation/user.js +38 -0
  82. package/server/graphql/index.js +44 -0
  83. package/server/graphql/mutations/auth/email-confirmation.js +39 -0
  84. package/server/graphql/mutations/auth/forgot-password.js +38 -0
  85. package/server/graphql/mutations/auth/login.js +38 -0
  86. package/server/graphql/mutations/auth/register.js +39 -0
  87. package/server/graphql/mutations/auth/reset-password.js +41 -0
  88. package/server/graphql/mutations/crud/role/create-role.js +37 -0
  89. package/server/graphql/mutations/crud/role/delete-role.js +28 -0
  90. package/server/graphql/mutations/crud/role/update-role.js +38 -0
  91. package/server/graphql/mutations/crud/user/create-user.js +48 -0
  92. package/server/graphql/mutations/crud/user/delete-user.js +42 -0
  93. package/server/graphql/mutations/crud/user/update-user.js +49 -0
  94. package/server/graphql/mutations/index.js +42 -0
  95. package/server/graphql/queries/index.js +13 -0
  96. package/server/graphql/queries/me.js +17 -0
  97. package/server/graphql/resolvers-configs.js +37 -0
  98. package/server/graphql/types/create-role-payload.js +11 -0
  99. package/server/graphql/types/delete-role-payload.js +11 -0
  100. package/server/graphql/types/index.js +21 -0
  101. package/server/graphql/types/login-input.js +13 -0
  102. package/server/graphql/types/login-payload.js +12 -0
  103. package/server/graphql/types/me-role.js +14 -0
  104. package/server/graphql/types/me.js +16 -0
  105. package/server/graphql/types/password-payload.js +11 -0
  106. package/server/graphql/types/register-input.js +13 -0
  107. package/server/graphql/types/update-role-payload.js +11 -0
  108. package/server/graphql/utils.js +27 -0
  109. package/server/index.js +21 -0
  110. package/server/middlewares/index.js +2 -2
  111. package/server/{policies → middlewares}/rateLimit.js +3 -7
  112. package/server/register.js +11 -0
  113. package/server/routes/admin/index.js +10 -0
  114. package/server/routes/admin/permissions.js +20 -0
  115. package/server/routes/admin/role.js +79 -0
  116. package/server/routes/admin/settings.js +95 -0
  117. package/server/routes/content-api/auth.js +73 -0
  118. package/server/routes/content-api/index.js +11 -0
  119. package/server/routes/content-api/permissions.js +9 -0
  120. package/server/routes/content-api/role.js +29 -0
  121. package/server/routes/content-api/user.js +61 -0
  122. package/server/routes/index.js +4 -428
  123. package/server/services/index.js +10 -8
  124. package/server/services/jwt.js +9 -17
  125. package/server/services/providers.js +32 -33
  126. package/server/services/role.js +177 -0
  127. package/server/services/user.js +23 -22
  128. package/server/services/users-permissions.js +140 -338
  129. package/server/strategies/users-permissions.js +123 -0
  130. package/server/utils/index.d.ts +2 -0
  131. package/strapi-admin.js +3 -0
  132. package/strapi-server.js +1 -19
  133. package/admin/src/assets/images/logo.svg +0 -1
  134. package/admin/src/components/BaselineAlignement/index.js +0 -33
  135. package/admin/src/components/Bloc/index.js +0 -10
  136. package/admin/src/components/BoundRoute/Components.js +0 -78
  137. package/admin/src/components/ContainerFluid/index.js +0 -13
  138. package/admin/src/components/FormBloc/index.js +0 -61
  139. package/admin/src/components/IntlInput/index.js +0 -38
  140. package/admin/src/components/ListBaselineAlignment/index.js +0 -8
  141. package/admin/src/components/ListRow/Components.js +0 -74
  142. package/admin/src/components/ListRow/index.js +0 -35
  143. package/admin/src/components/ModalForm/Wrapper.js +0 -12
  144. package/admin/src/components/ModalForm/index.js +0 -59
  145. package/admin/src/components/Permissions/ListWrapper.js +0 -9
  146. package/admin/src/components/Permissions/PermissionRow/BaselineAlignment.js +0 -7
  147. package/admin/src/components/Permissions/PermissionRow/RowStyle.js +0 -28
  148. package/admin/src/components/Permissions/PermissionRow/SubCategory/ConditionsButtonWrapper.js +0 -13
  149. package/admin/src/components/Permissions/PermissionRow/SubCategory/PolicyWrapper.js +0 -8
  150. package/admin/src/components/Permissions/PermissionRow/SubCategory/SubCategoryWrapper.js +0 -26
  151. package/admin/src/components/Permissions/PermissionRow/SubCategory/index.js +0 -116
  152. package/admin/src/components/Policies/Components.js +0 -26
  153. package/admin/src/components/PrefixedIcon/index.js +0 -27
  154. package/admin/src/components/Roles/EmptyRole/BaselineAlignment.js +0 -7
  155. package/admin/src/components/Roles/EmptyRole/index.js +0 -27
  156. package/admin/src/components/Roles/RoleListWrapper/index.js +0 -17
  157. package/admin/src/components/Roles/RoleRow/RoleDescription.js +0 -9
  158. package/admin/src/components/Roles/RoleRow/index.js +0 -45
  159. package/admin/src/components/Roles/index.js +0 -3
  160. package/admin/src/components/SizedInput/index.js +0 -24
  161. package/admin/src/pages/AdvancedSettings/reducer.js +0 -65
  162. package/admin/src/pages/AdvancedSettings/utils/form.js +0 -52
  163. package/admin/src/pages/EmailTemplates/CustomTextInput.js +0 -105
  164. package/admin/src/pages/EmailTemplates/Wrapper.js +0 -36
  165. package/admin/src/pages/EmailTemplates/reducer.js +0 -58
  166. package/admin/src/pages/EmailTemplates/utils/forms.js +0 -81
  167. package/admin/src/pages/Roles/ListPage/BaselineAlignment.js +0 -8
  168. package/server/content-types/permission/schema.json +0 -48
  169. package/server/content-types/role/schema.json +0 -46
  170. package/server/content-types/user/schema.json +0 -66
  171. package/server/controllers/user/admin.js +0 -230
  172. package/server/controllers/user/api.js +0 -174
  173. package/server/controllers/users-permissions.js +0 -271
  174. package/server/middlewares/users-permissions.js +0 -44
  175. package/server/policies/index.js +0 -11
  176. package/server/policies/isAuthenticated.js +0 -9
  177. package/server/policies/permissions.js +0 -94
  178. package/server/schema.graphql.js +0 -317
@@ -1,317 +0,0 @@
1
- 'use strict';
2
-
3
- const _ = require('lodash');
4
-
5
- /**
6
- * Throws an ApolloError if context body contains a bad request
7
- * @param contextBody - body of the context object given to the resolver
8
- * @throws ApolloError if the body is a bad request
9
- */
10
- function checkBadRequest(contextBody) {
11
- if (_.get(contextBody, 'statusCode', 200) !== 200) {
12
- const message = _.get(contextBody, 'error', 'Bad Request');
13
- const exception = new Error(message);
14
- exception.code = _.get(contextBody, 'statusCode', 400);
15
- exception.data = contextBody;
16
- throw exception;
17
- }
18
- }
19
-
20
- module.exports = {
21
- type: {
22
- UsersPermissionsPermission: false, // Make this type NOT queriable.
23
- },
24
- definition: /* GraphQL */ `
25
- type UsersPermissionsMe {
26
- id: ID!
27
- username: String!
28
- email: String!
29
- confirmed: Boolean
30
- blocked: Boolean
31
- role: UsersPermissionsMeRole
32
- }
33
-
34
- type UsersPermissionsMeRole {
35
- id: ID!
36
- name: String!
37
- description: String
38
- type: String
39
- }
40
-
41
- input UsersPermissionsRegisterInput {
42
- username: String!
43
- email: String!
44
- password: String!
45
- }
46
-
47
- input UsersPermissionsLoginInput {
48
- identifier: String!
49
- password: String!
50
- provider: String = "local"
51
- }
52
-
53
- type UsersPermissionsLoginPayload {
54
- jwt: String
55
- user: UsersPermissionsMe!
56
- }
57
-
58
- type UserPermissionsPasswordPayload {
59
- ok: Boolean!
60
- }
61
- `,
62
- query: `
63
- me: UsersPermissionsMe
64
- `,
65
- mutation: `
66
- login(input: UsersPermissionsLoginInput!): UsersPermissionsLoginPayload!
67
- register(input: UsersPermissionsRegisterInput!): UsersPermissionsLoginPayload!
68
- forgotPassword(email: String!): UserPermissionsPasswordPayload
69
- resetPassword(password: String!, passwordConfirmation: String!, code: String!): UsersPermissionsLoginPayload
70
- emailConfirmation(confirmation: String!): UsersPermissionsLoginPayload
71
- `,
72
- resolver: {
73
- Query: {
74
- me: {
75
- resolver: 'plugin::users-permissions.user.me',
76
- },
77
- role: {
78
- resolverOf: 'plugin::users-permissions.users-permissions.getRole',
79
- resolver: async (obj, options, { context }) => {
80
- context.params = { ...context.params, ...options.input };
81
-
82
- await strapi
83
- .plugin('users-permissions')
84
- .controller('users-permissions')
85
- .getRole(context);
86
-
87
- return context.body.role;
88
- },
89
- },
90
- roles: {
91
- description: `Retrieve all the existing roles. You can't apply filters on this query.`,
92
- resolverOf: 'plugin::users-permissions.users-permissions.getRoles', // Apply the `getRoles` permissions on the resolver.
93
- resolver: async (obj, options, { context }) => {
94
- context.params = { ...context.params, ...options.input };
95
-
96
- await strapi
97
- .plugin('users-permissions')
98
- .controller('users-permissions')
99
- .getRoles(context);
100
-
101
- return context.body.roles;
102
- },
103
- },
104
- },
105
- Mutation: {
106
- createRole: {
107
- description: 'Create a new role',
108
- resolverOf: 'plugin::users-permissions.users-permissions.createRole',
109
- resolver: async (obj, options, { context }) => {
110
- await strapi
111
- .plugin('users-permissions')
112
- .controller('users-permissions')
113
- .createRole(context);
114
-
115
- return { ok: true };
116
- },
117
- },
118
- updateRole: {
119
- description: 'Update an existing role',
120
- resolverOf: 'plugin::users-permissions.users-permissions.updateRole',
121
- resolver: async (obj, options, { context }) => {
122
- context.params = { ...context.params, ...options.input };
123
- context.params.role = context.params.id;
124
-
125
- await strapi
126
- .plugin('users-permissions')
127
- .controller('users-permissions')
128
- .updateRole(context);
129
-
130
- return { ok: true };
131
- },
132
- },
133
- deleteRole: {
134
- description: 'Delete an existing role',
135
- resolverOf: 'plugin::users-permissions.users-permissions.deleteRole',
136
- resolver: async (obj, options, { context }) => {
137
- context.params = { ...context.params, ...options.input };
138
- context.params.role = context.params.id;
139
-
140
- await strapi
141
- .plugin('users-permissions')
142
- .controller('users-permissions')
143
- .deleteRole(context);
144
-
145
- return { ok: true };
146
- },
147
- },
148
- createUser: {
149
- description: 'Create a new user',
150
- resolverOf: 'plugin::users-permissions.user.create',
151
- resolver: async (obj, options, { context }) => {
152
- context.params = _.toPlainObject(options.input.where);
153
- context.request.body = _.toPlainObject(options.input.data);
154
-
155
- await strapi
156
- .plugin('users-permissions')
157
- .controller('user')
158
- .create(context);
159
-
160
- return {
161
- user: context.body,
162
- };
163
- },
164
- },
165
- updateUser: {
166
- description: 'Update an existing user',
167
- resolverOf: 'plugin::users-permissions.user.update',
168
- resolver: async (obj, options, { context }) => {
169
- context.params = _.toPlainObject(options.input.where);
170
- context.request.body = _.toPlainObject(options.input.data);
171
-
172
- await strapi
173
- .plugin('users-permissions')
174
- .controller('user')
175
- .update(context);
176
-
177
- return {
178
- user: context.body,
179
- };
180
- },
181
- },
182
- deleteUser: {
183
- description: 'Delete an existing user',
184
- resolverOf: 'plugin::users-permissions.user.destroy',
185
- resolver: async (obj, options, { context }) => {
186
- // Set parameters to context.
187
- context.params = _.toPlainObject(options.input.where);
188
- context.request.body = _.toPlainObject(options.input.data);
189
-
190
- // Retrieve user to be able to return it because
191
- // Bookshelf doesn't return the row once deleted.
192
- await strapi
193
- .plugin('users-permissions')
194
- .controller('user')
195
- .findOne(context);
196
- // Assign result to user.
197
- const user = context.body;
198
-
199
- // Run destroy query.
200
- await strapi
201
- .plugin('users-permissions')
202
- .controller('user')
203
- .destroy(context);
204
-
205
- return {
206
- user,
207
- };
208
- },
209
- },
210
- register: {
211
- description: 'Register a user',
212
- resolverOf: 'plugin::users-permissions.auth.register',
213
- resolver: async (obj, options, { context }) => {
214
- context.request.body = _.toPlainObject(options.input);
215
-
216
- await strapi
217
- .plugin('users-permissions')
218
- .controller('auth')
219
- .register(context);
220
-
221
- let output = context.body;
222
-
223
- checkBadRequest(output);
224
- return {
225
- user: output.user || output,
226
- jwt: output.jwt,
227
- };
228
- },
229
- },
230
- login: {
231
- resolverOf: 'plugin::users-permissions.auth.callback',
232
- resolver: async (obj, options, { context }) => {
233
- context.params = {
234
- ...context.params,
235
- provider: options.input.provider,
236
- };
237
- context.request.body = _.toPlainObject(options.input);
238
-
239
- await strapi
240
- .plugin('users-permissions')
241
- .controller('auth')
242
- .callback(context);
243
-
244
- let output = context.body;
245
-
246
- checkBadRequest(output);
247
- return {
248
- user: output.user || output,
249
- jwt: output.jwt,
250
- };
251
- },
252
- },
253
- forgotPassword: {
254
- description: 'Request a reset password token',
255
- resolverOf: 'plugin::users-permissions.auth.forgotPassword',
256
- resolver: async (obj, options, { context }) => {
257
- context.request.body = _.toPlainObject(options);
258
-
259
- await strapi
260
- .plugin('users-permissions')
261
- .controller('auth')
262
- .forgotPassword(context);
263
-
264
- let output = context.body;
265
-
266
- checkBadRequest(output);
267
-
268
- return {
269
- ok: output.ok || output,
270
- };
271
- },
272
- },
273
- resetPassword: {
274
- description: 'Reset user password. Confirm with a code (resetToken from forgotPassword)',
275
- resolverOf: 'plugin::users-permissions.auth.resetPassword',
276
- resolver: async (obj, options, { context }) => {
277
- context.request.body = _.toPlainObject(options);
278
-
279
- await strapi
280
- .plugin('users-permissions')
281
- .controller('auth')
282
- .resetPassword(context);
283
-
284
- let output = context.body;
285
-
286
- checkBadRequest(output);
287
-
288
- return {
289
- user: output.user || output,
290
- jwt: output.jwt,
291
- };
292
- },
293
- },
294
- emailConfirmation: {
295
- description: 'Confirm an email users email address',
296
- resolverOf: 'plugin::users-permissions.auth.emailConfirmation',
297
- resolver: async (obj, options, { context }) => {
298
- context.query = _.toPlainObject(options);
299
-
300
- await strapi
301
- .plugin('users-permissions')
302
- .controller('auth')
303
- .emailConfirmation(context, null, true);
304
-
305
- let output = context.body;
306
-
307
- checkBadRequest(output);
308
-
309
- return {
310
- user: output.user || output,
311
- jwt: output.jwt,
312
- };
313
- },
314
- },
315
- },
316
- },
317
- };