@strapi/plugin-users-permissions 4.0.0-next.6 → 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 (196) 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 +29 -34
  19. package/admin/src/pages/AdvancedSettings/index.js +210 -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 +125 -198
  26. package/admin/src/pages/EmailTemplates/utils/api.js +13 -0
  27. package/admin/src/pages/Providers/index.js +208 -216
  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/pages/Roles/index.js +14 -8
  36. package/admin/src/permissions.js +12 -14
  37. package/admin/src/translations/ar.json +0 -8
  38. package/admin/src/translations/cs.json +0 -8
  39. package/admin/src/translations/de.json +0 -8
  40. package/admin/src/translations/dk.json +0 -8
  41. package/admin/src/translations/en.json +33 -12
  42. package/admin/src/translations/es.json +0 -8
  43. package/admin/src/translations/fr.json +0 -8
  44. package/admin/src/translations/id.json +0 -8
  45. package/admin/src/translations/it.json +0 -8
  46. package/admin/src/translations/ja.json +0 -8
  47. package/admin/src/translations/ko.json +0 -8
  48. package/admin/src/translations/ms.json +0 -8
  49. package/admin/src/translations/nl.json +0 -8
  50. package/admin/src/translations/pl.json +0 -8
  51. package/admin/src/translations/pt-BR.json +0 -8
  52. package/admin/src/translations/pt.json +0 -8
  53. package/admin/src/translations/ru.json +0 -8
  54. package/admin/src/translations/sk.json +0 -8
  55. package/admin/src/translations/sv.json +0 -8
  56. package/admin/src/translations/th.json +0 -8
  57. package/admin/src/translations/tr.json +0 -8
  58. package/admin/src/translations/uk.json +0 -8
  59. package/admin/src/translations/vi.json +0 -8
  60. package/admin/src/translations/zh-Hans.json +5 -14
  61. package/admin/src/translations/zh.json +0 -8
  62. package/admin/src/utils/axiosInstance.js +36 -0
  63. package/admin/src/utils/formatPluginName.js +26 -0
  64. package/admin/src/utils/index.js +1 -0
  65. package/documentation/1.0.0/overrides/users-permissions-Role.json +6 -6
  66. package/documentation/1.0.0/overrides/users-permissions-User.json +7 -7
  67. package/package.json +30 -29
  68. package/{config/functions/bootstrap.js → server/bootstrap/index.js} +26 -33
  69. package/{config → server/bootstrap}/users-permissions-actions.js +0 -0
  70. package/server/config.js +23 -0
  71. package/server/content-types/index.js +11 -0
  72. package/server/content-types/permission/index.js +34 -0
  73. package/server/content-types/role/index.js +51 -0
  74. package/server/content-types/user/index.js +72 -0
  75. package/{models/User.config.js → server/content-types/user/schema-config.js} +0 -0
  76. package/server/controllers/auth.js +440 -0
  77. package/server/controllers/content-manager-user.js +183 -0
  78. package/server/controllers/index.js +17 -0
  79. package/server/controllers/permissions.js +26 -0
  80. package/server/controllers/role.js +77 -0
  81. package/server/controllers/settings.js +85 -0
  82. package/server/controllers/user.js +191 -0
  83. package/server/controllers/validation/auth.js +29 -0
  84. package/{controllers → server/controllers}/validation/email-template.js +0 -0
  85. package/server/controllers/validation/user.js +38 -0
  86. package/server/graphql/index.js +44 -0
  87. package/server/graphql/mutations/auth/email-confirmation.js +39 -0
  88. package/server/graphql/mutations/auth/forgot-password.js +38 -0
  89. package/server/graphql/mutations/auth/login.js +38 -0
  90. package/server/graphql/mutations/auth/register.js +39 -0
  91. package/server/graphql/mutations/auth/reset-password.js +41 -0
  92. package/server/graphql/mutations/crud/role/create-role.js +37 -0
  93. package/server/graphql/mutations/crud/role/delete-role.js +28 -0
  94. package/server/graphql/mutations/crud/role/update-role.js +38 -0
  95. package/server/graphql/mutations/crud/user/create-user.js +48 -0
  96. package/server/graphql/mutations/crud/user/delete-user.js +42 -0
  97. package/server/graphql/mutations/crud/user/update-user.js +49 -0
  98. package/server/graphql/mutations/index.js +42 -0
  99. package/server/graphql/queries/index.js +13 -0
  100. package/server/graphql/queries/me.js +17 -0
  101. package/server/graphql/resolvers-configs.js +37 -0
  102. package/server/graphql/types/create-role-payload.js +11 -0
  103. package/server/graphql/types/delete-role-payload.js +11 -0
  104. package/server/graphql/types/index.js +21 -0
  105. package/server/graphql/types/login-input.js +13 -0
  106. package/server/graphql/types/login-payload.js +12 -0
  107. package/server/graphql/types/me-role.js +14 -0
  108. package/server/graphql/types/me.js +16 -0
  109. package/server/graphql/types/password-payload.js +11 -0
  110. package/server/graphql/types/register-input.js +13 -0
  111. package/server/graphql/types/update-role-payload.js +11 -0
  112. package/server/graphql/utils.js +27 -0
  113. package/server/index.js +21 -0
  114. package/server/middlewares/index.js +7 -0
  115. package/{config/policies → server/middlewares}/rateLimit.js +4 -8
  116. package/server/register.js +11 -0
  117. package/server/routes/admin/index.js +10 -0
  118. package/server/routes/admin/permissions.js +20 -0
  119. package/server/routes/admin/role.js +79 -0
  120. package/server/routes/admin/settings.js +95 -0
  121. package/server/routes/content-api/auth.js +73 -0
  122. package/server/routes/content-api/index.js +11 -0
  123. package/server/routes/content-api/permissions.js +9 -0
  124. package/server/routes/content-api/role.js +29 -0
  125. package/server/routes/content-api/user.js +61 -0
  126. package/server/routes/index.js +6 -0
  127. package/server/services/index.js +15 -0
  128. package/server/services/jwt.js +55 -0
  129. package/server/services/providers.js +599 -0
  130. package/server/services/role.js +177 -0
  131. package/{services → server/services}/user.js +32 -35
  132. package/server/services/users-permissions.js +233 -0
  133. package/server/strategies/users-permissions.js +123 -0
  134. package/{utils → server/utils}/index.d.ts +6 -1
  135. package/server/utils/index.js +9 -0
  136. package/strapi-admin.js +3 -0
  137. package/strapi-server.js +3 -0
  138. package/admin/src/assets/images/logo.svg +0 -1
  139. package/admin/src/components/BaselineAlignement/index.js +0 -33
  140. package/admin/src/components/Bloc/index.js +0 -10
  141. package/admin/src/components/BoundRoute/Components.js +0 -78
  142. package/admin/src/components/ContainerFluid/index.js +0 -13
  143. package/admin/src/components/FormBloc/index.js +0 -61
  144. package/admin/src/components/IntlInput/index.js +0 -38
  145. package/admin/src/components/ListBaselineAlignment/index.js +0 -8
  146. package/admin/src/components/ListRow/Components.js +0 -74
  147. package/admin/src/components/ListRow/index.js +0 -35
  148. package/admin/src/components/ModalForm/Wrapper.js +0 -12
  149. package/admin/src/components/ModalForm/index.js +0 -59
  150. package/admin/src/components/Permissions/ListWrapper.js +0 -9
  151. package/admin/src/components/Permissions/PermissionRow/BaselineAlignment.js +0 -7
  152. package/admin/src/components/Permissions/PermissionRow/RowStyle.js +0 -28
  153. package/admin/src/components/Permissions/PermissionRow/SubCategory/ConditionsButtonWrapper.js +0 -13
  154. package/admin/src/components/Permissions/PermissionRow/SubCategory/PolicyWrapper.js +0 -8
  155. package/admin/src/components/Permissions/PermissionRow/SubCategory/SubCategoryWrapper.js +0 -26
  156. package/admin/src/components/Permissions/PermissionRow/SubCategory/index.js +0 -116
  157. package/admin/src/components/Policies/Components.js +0 -26
  158. package/admin/src/components/PrefixedIcon/index.js +0 -27
  159. package/admin/src/components/Roles/EmptyRole/BaselineAlignment.js +0 -7
  160. package/admin/src/components/Roles/EmptyRole/index.js +0 -27
  161. package/admin/src/components/Roles/RoleListWrapper/index.js +0 -17
  162. package/admin/src/components/Roles/RoleRow/RoleDescription.js +0 -9
  163. package/admin/src/components/Roles/RoleRow/index.js +0 -45
  164. package/admin/src/components/Roles/index.js +0 -3
  165. package/admin/src/components/SizedInput/index.js +0 -24
  166. package/admin/src/pages/AdvancedSettings/reducer.js +0 -65
  167. package/admin/src/pages/AdvancedSettings/utils/form.js +0 -52
  168. package/admin/src/pages/EmailTemplates/CustomTextInput.js +0 -105
  169. package/admin/src/pages/EmailTemplates/Wrapper.js +0 -36
  170. package/admin/src/pages/EmailTemplates/reducer.js +0 -58
  171. package/admin/src/pages/EmailTemplates/utils/forms.js +0 -81
  172. package/admin/src/pages/Roles/ListPage/BaselineAlignment.js +0 -8
  173. package/config/layout.js +0 -10
  174. package/config/policies/isAuthenticated.js +0 -9
  175. package/config/policies/permissions.js +0 -94
  176. package/config/request.json +0 -6
  177. package/config/routes.json +0 -381
  178. package/config/schema.graphql.js +0 -284
  179. package/config/security.json +0 -5
  180. package/controllers/auth.js +0 -596
  181. package/controllers/user/admin.js +0 -230
  182. package/controllers/user/api.js +0 -174
  183. package/controllers/user.js +0 -117
  184. package/controllers/users-permissions.js +0 -271
  185. package/middlewares/users-permissions/defaults.json +0 -5
  186. package/middlewares/users-permissions/index.js +0 -40
  187. package/models/Permission.js +0 -7
  188. package/models/Permission.settings.json +0 -45
  189. package/models/Role.js +0 -7
  190. package/models/Role.settings.json +0 -43
  191. package/models/User.js +0 -7
  192. package/models/User.settings.json +0 -63
  193. package/services/jwt.js +0 -65
  194. package/services/providers.js +0 -598
  195. package/services/users-permissions.js +0 -429
  196. package/utils/index.js +0 -11
package/package.json CHANGED
@@ -1,21 +1,32 @@
1
1
  {
2
2
  "name": "@strapi/plugin-users-permissions",
3
- "version": "4.0.0-next.6",
3
+ "version": "4.0.0",
4
4
  "description": "Protect your API with a full-authentication process based on JWT",
5
- "strapi": {
6
- "name": "Roles & Permissions",
7
- "icon": "users",
8
- "description": "users-permissions.plugin.description",
9
- "required": true
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git://github.com/strapi/strapi.git"
8
+ },
9
+ "license": "SEE LICENSE IN LICENSE",
10
+ "author": {
11
+ "name": "Strapi Solutions SAS",
12
+ "email": "hi@strapi.io",
13
+ "url": "https://strapi.io"
10
14
  },
15
+ "maintainers": [
16
+ {
17
+ "name": "Strapi Solutions SAS",
18
+ "email": "hi@strapi.io",
19
+ "url": "https://strapi.io"
20
+ }
21
+ ],
11
22
  "scripts": {
12
23
  "test": "echo \"no tests yet\""
13
24
  },
14
25
  "dependencies": {
15
26
  "@purest/providers": "^1.0.2",
16
- "@strapi/helper-plugin": "4.0.0-next.6",
17
- "@strapi/utils": "4.0.0-next.6",
18
- "bcryptjs": "^2.4.3",
27
+ "@strapi/helper-plugin": "4.0.0",
28
+ "@strapi/utils": "4.0.0",
29
+ "bcryptjs": "2.4.3",
19
30
  "grant-koa": "5.4.8",
20
31
  "jsonwebtoken": "^8.1.0",
21
32
  "koa2-ratelimit": "^0.9.0",
@@ -26,35 +37,25 @@
26
37
  "react-intl": "5.20.2",
27
38
  "react-redux": "7.2.3",
28
39
  "react-router": "^5.2.0",
29
- "react-router-dom": "^5.0.0",
30
- "reactstrap": "8.4.1",
40
+ "react-router-dom": "5.2.0",
31
41
  "redux-saga": "^0.16.0",
32
42
  "request": "^2.83.0",
43
+ "url-join": "4.0.1",
33
44
  "uuid": "^3.1.0"
34
45
  },
35
46
  "devDependencies": {
36
47
  "koa": "^2.13.1"
37
48
  },
38
- "author": {
39
- "name": "Strapi team",
40
- "email": "hi@strapi.io",
41
- "url": "https://strapi.io"
42
- },
43
- "maintainers": [
44
- {
45
- "name": "Strapi team",
46
- "email": "hi@strapi.io",
47
- "url": "https://strapi.io"
48
- }
49
- ],
50
- "repository": {
51
- "type": "git",
52
- "url": "git://github.com/strapi/strapi.git"
53
- },
54
49
  "engines": {
55
50
  "node": ">=12.x.x <=16.x.x",
56
51
  "npm": ">=6.0.0"
57
52
  },
58
- "license": "SEE LICENSE IN LICENSE",
59
- "gitHead": "f528a865cb9c4234f2cda4f0df5b40e7c427ff9a"
53
+ "strapi": {
54
+ "displayName": "Roles & Permissions",
55
+ "name": "users-permissions",
56
+ "description": "Protect your API with a full authentication process based on JWT. This plugin comes also with an ACL strategy that allows you to manage the permissions between the groups of users.",
57
+ "required": true,
58
+ "kind": "plugin"
59
+ },
60
+ "gitHead": "b181702f0202b2c6d645d42b195a831f25cd0b03"
60
61
  }
@@ -9,16 +9,12 @@
9
9
  */
10
10
  const _ = require('lodash');
11
11
  const uuid = require('uuid/v4');
12
- const { getService } = require('../../utils');
12
+ const { getService } = require('../utils');
13
13
 
14
- const usersPermissionsActions = require('../users-permissions-actions');
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,23 +26,20 @@ module.exports = async () => {
30
26
 
31
27
  await getService('users-permissions').initialize();
32
28
 
33
- if (!_.get(strapi.plugins['users-permissions'], 'config.jwtSecret')) {
29
+ if (!strapi.config.get('plugin.users-permissions.jwtSecret')) {
34
30
  const jwtSecret = uuid();
35
- _.set(strapi.plugins['users-permissions'], 'config.jwtSecret', jwtSecret);
31
+ strapi.config.set('plugin.users-permissions.jwtSecret', jwtSecret);
36
32
 
37
- strapi.reload.isWatching = false;
38
-
39
- await strapi.fs.writePluginFile(
40
- 'users-permissions',
41
- 'config/jwt.js',
42
- `module.exports = {\n jwtSecret: process.env.JWT_SECRET || '${jwtSecret}'\n};`
43
- );
44
-
45
- strapi.reload.isWatching = true;
33
+ if (!process.env.JWT_SECRET) {
34
+ strapi.fs.appendFile('.env', `JWT_SECRET=${jwtSecret}\n`);
35
+ }
46
36
  }
47
37
  };
48
38
 
49
39
  const initGrant = async pluginStore => {
40
+ const apiPrefix = strapi.config.get('api.rest.prefix');
41
+ const baseURL = `${strapi.config.server.url}/${apiPrefix}/auth`;
42
+
50
43
  const grantConfig = {
51
44
  email: {
52
45
  enabled: true,
@@ -57,7 +50,7 @@ const initGrant = async pluginStore => {
57
50
  icon: 'discord',
58
51
  key: '',
59
52
  secret: '',
60
- callback: `${strapi.config.server.url}/auth/discord/callback`,
53
+ callback: `${baseURL}/discord/callback`,
61
54
  scope: ['identify', 'email'],
62
55
  },
63
56
  facebook: {
@@ -65,7 +58,7 @@ const initGrant = async pluginStore => {
65
58
  icon: 'facebook-square',
66
59
  key: '',
67
60
  secret: '',
68
- callback: `${strapi.config.server.url}/auth/facebook/callback`,
61
+ callback: `${baseURL}/facebook/callback`,
69
62
  scope: ['email'],
70
63
  },
71
64
  google: {
@@ -73,7 +66,7 @@ const initGrant = async pluginStore => {
73
66
  icon: 'google',
74
67
  key: '',
75
68
  secret: '',
76
- callback: `${strapi.config.server.url}/auth/google/callback`,
69
+ callback: `${baseURL}/google/callback`,
77
70
  scope: ['email'],
78
71
  },
79
72
  github: {
@@ -81,7 +74,7 @@ const initGrant = async pluginStore => {
81
74
  icon: 'github',
82
75
  key: '',
83
76
  secret: '',
84
- callback: `${strapi.config.server.url}/auth/github/callback`,
77
+ callback: `${baseURL}/github/callback`,
85
78
  scope: ['user', 'user:email'],
86
79
  },
87
80
  microsoft: {
@@ -89,7 +82,7 @@ const initGrant = async pluginStore => {
89
82
  icon: 'windows',
90
83
  key: '',
91
84
  secret: '',
92
- callback: `${strapi.config.server.url}/auth/microsoft/callback`,
85
+ callback: `${baseURL}/microsoft/callback`,
93
86
  scope: ['user.read'],
94
87
  },
95
88
  twitter: {
@@ -97,14 +90,14 @@ const initGrant = async pluginStore => {
97
90
  icon: 'twitter',
98
91
  key: '',
99
92
  secret: '',
100
- callback: `${strapi.config.server.url}/auth/twitter/callback`,
93
+ callback: `${baseURL}/twitter/callback`,
101
94
  },
102
95
  instagram: {
103
96
  enabled: false,
104
97
  icon: 'instagram',
105
98
  key: '',
106
99
  secret: '',
107
- callback: `${strapi.config.server.url}/auth/instagram/callback`,
100
+ callback: `${baseURL}/instagram/callback`,
108
101
  scope: ['user_profile'],
109
102
  },
110
103
  vk: {
@@ -112,7 +105,7 @@ const initGrant = async pluginStore => {
112
105
  icon: 'vk',
113
106
  key: '',
114
107
  secret: '',
115
- callback: `${strapi.config.server.url}/auth/vk/callback`,
108
+ callback: `${baseURL}/vk/callback`,
116
109
  scope: ['email'],
117
110
  },
118
111
  twitch: {
@@ -120,7 +113,7 @@ const initGrant = async pluginStore => {
120
113
  icon: 'twitch',
121
114
  key: '',
122
115
  secret: '',
123
- callback: `${strapi.config.server.url}/auth/twitch/callback`,
116
+ callback: `${baseURL}/twitch/callback`,
124
117
  scope: ['user:read:email'],
125
118
  },
126
119
  linkedin: {
@@ -128,7 +121,7 @@ const initGrant = async pluginStore => {
128
121
  icon: 'linkedin',
129
122
  key: '',
130
123
  secret: '',
131
- callback: `${strapi.config.server.url}/auth/linkedin/callback`,
124
+ callback: `${baseURL}/linkedin/callback`,
132
125
  scope: ['r_liteprofile', 'r_emailaddress'],
133
126
  },
134
127
  cognito: {
@@ -137,7 +130,7 @@ const initGrant = async pluginStore => {
137
130
  key: '',
138
131
  secret: '',
139
132
  subdomain: 'my.subdomain.com',
140
- callback: `${strapi.config.server.url}/auth/cognito/callback`,
133
+ callback: `${baseURL}/cognito/callback`,
141
134
  scope: ['email', 'openid', 'profile'],
142
135
  },
143
136
  reddit: {
@@ -146,7 +139,7 @@ const initGrant = async pluginStore => {
146
139
  key: '',
147
140
  secret: '',
148
141
  state: true,
149
- callback: `${strapi.config.server.url}/auth/reddit/callback`,
142
+ callback: `${baseURL}/reddit/callback`,
150
143
  scope: ['identity'],
151
144
  },
152
145
  auth0: {
@@ -155,7 +148,7 @@ const initGrant = async pluginStore => {
155
148
  key: '',
156
149
  secret: '',
157
150
  subdomain: 'my-tenant.eu',
158
- callback: `${strapi.config.server.url}/auth/auth0/callback`,
151
+ callback: `${baseURL}/auth0/callback`,
159
152
  scope: ['openid', 'email', 'profile'],
160
153
  },
161
154
  cas: {
@@ -163,7 +156,7 @@ const initGrant = async pluginStore => {
163
156
  icon: 'book',
164
157
  key: '',
165
158
  secret: '',
166
- callback: `${strapi.config.server.url}/auth/cas/callback`,
159
+ callback: `${baseURL}/cas/callback`,
167
160
  scope: ['openid email'], // scopes should be space delimited
168
161
  subdomain: 'my.subdomain.com/cas',
169
162
  },
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ module.exports = {
4
+ default: ({ env }) => ({
5
+ jwtSecret: env('JWT_SECRET'),
6
+ jwt: {
7
+ expiresIn: '30d',
8
+ },
9
+ ratelimit: {
10
+ interval: 60000,
11
+ max: 10,
12
+ },
13
+ layout: {
14
+ user: {
15
+ actions: {
16
+ create: 'contentManagerUser.create', // Use the User plugin's controller.
17
+ update: 'contentManagerUser.update',
18
+ },
19
+ },
20
+ },
21
+ }),
22
+ validator() {},
23
+ };
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ const permission = require('./permission');
4
+ const role = require('./role');
5
+ const user = require('./user');
6
+
7
+ module.exports = {
8
+ permission: { schema: permission },
9
+ role: { schema: role },
10
+ user: { schema: user },
11
+ };
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+
3
+ module.exports = {
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
+ },
34
+ };
@@ -0,0 +1,51 @@
1
+ 'use strict';
2
+
3
+ module.exports = {
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
+ },
51
+ };
@@ -0,0 +1,72 @@
1
+ 'use strict';
2
+
3
+ const schemaConfig = require('./schema-config');
4
+
5
+ module.exports = {
6
+ collectionName: 'up_users',
7
+ info: {
8
+ name: 'user',
9
+ description: '',
10
+ singularName: 'user',
11
+ pluralName: 'users',
12
+ displayName: 'User',
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
72
+ };