@kne/fastify-account 1.0.0-alpha.9 → 2.0.0-alpha.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 (44) hide show
  1. package/README.md +6 -2046
  2. package/index.js +34 -21
  3. package/libs/controllers/account.js +246 -173
  4. package/libs/controllers/admin-user.js +110 -0
  5. package/libs/controllers/admin.js +55 -146
  6. package/libs/controllers/user.js +7 -24
  7. package/libs/models/example._js +13 -0
  8. package/libs/models/user-account.js +13 -32
  9. package/libs/models/user.js +37 -36
  10. package/libs/models/verification-code.js +16 -21
  11. package/libs/services/account.js +124 -149
  12. package/libs/services/admin.js +21 -73
  13. package/libs/services/user.js +52 -58
  14. package/package.json +24 -28
  15. package/libs/controllers/adminPermission.js +0 -237
  16. package/libs/controllers/adminRole.js +0 -146
  17. package/libs/controllers/adminTenant.js +0 -464
  18. package/libs/controllers/tenant.js +0 -34
  19. package/libs/models/admin-role.js +0 -15
  20. package/libs/models/application.js +0 -42
  21. package/libs/models/login-log.js +0 -11
  22. package/libs/models/permission.js +0 -51
  23. package/libs/models/tenant-application.js +0 -26
  24. package/libs/models/tenant-org.js +0 -26
  25. package/libs/models/tenant-permission.js +0 -26
  26. package/libs/models/tenant-role-application.js +0 -37
  27. package/libs/models/tenant-role-permission.js +0 -34
  28. package/libs/models/tenant-role.js +0 -23
  29. package/libs/models/tenant-share-group-permission.js +0 -18
  30. package/libs/models/tenant-share-group.js +0 -18
  31. package/libs/models/tenant-source-user-share-group.js +0 -18
  32. package/libs/models/tenant-token.js +0 -30
  33. package/libs/models/tenant-user-org.js +0 -23
  34. package/libs/models/tenant-user-role.js +0 -23
  35. package/libs/models/tenant-user-share-group.js +0 -18
  36. package/libs/models/tenant-user.js +0 -75
  37. package/libs/models/tenant.js +0 -46
  38. package/libs/services/application.js +0 -151
  39. package/libs/services/permission.js +0 -367
  40. package/libs/services/tenant-invite.js +0 -62
  41. package/libs/services/tenant-org.js +0 -97
  42. package/libs/services/tenant-role.js +0 -108
  43. package/libs/services/tenant-user.js +0 -555
  44. package/libs/services/tenant.js +0 -132
@@ -1,464 +0,0 @@
1
- const fp = require('fastify-plugin');
2
-
3
- module.exports = fp(async (fastify, options) => {
4
- const { authenticate, services } = fastify.account;
5
- fastify.get(
6
- `${options.prefix}/admin/getAllTenantList`,
7
- {
8
- onRequest: [authenticate.user, authenticate.admin],
9
- schema: {
10
- query: {
11
- type: 'object',
12
- properties: {
13
- name: {
14
- type: 'string'
15
- },
16
- serviceStartTime: {
17
- type: 'string',
18
- format: 'date-time'
19
- },
20
- serviceEndTime: {
21
- type: 'string',
22
- format: 'date-time'
23
- },
24
- perPage: {
25
- type: 'number'
26
- },
27
- currentPage: {
28
- type: 'number'
29
- }
30
- }
31
- }
32
- }
33
- },
34
- async request => {
35
- const { name, perPage, currentPage } = Object.assign(
36
- {
37
- perPage: 20,
38
- currentPage: 1
39
- },
40
- request.query
41
- );
42
- return await services.tenant.getAllTenantList({
43
- filter: { name },
44
- perPage,
45
- currentPage
46
- });
47
- }
48
- );
49
-
50
- fastify.get(
51
- `${options.prefix}/admin/getTenantInfo`,
52
- {
53
- onRequest: [authenticate.user, authenticate.admin],
54
- schema: {
55
- query: {
56
- type: 'object',
57
- properties: {
58
- id: { type: 'string' }
59
- }
60
- }
61
- }
62
- },
63
- async request => {
64
- const { id } = request.query;
65
- return await services.tenant.getTenant({ id });
66
- }
67
- );
68
-
69
- fastify.post(
70
- `${options.prefix}/admin/addTenant`,
71
- {
72
- onRequest: [authenticate.user, authenticate.admin],
73
- schema: {
74
- body: {
75
- type: 'object',
76
- required: ['name', 'accountNumber', 'serviceStartTime', 'serviceEndTime'],
77
- properties: {
78
- name: { type: 'string' },
79
- accountNumber: { type: 'number' },
80
- serviceStartTime: {
81
- type: 'string',
82
- format: 'date-time'
83
- },
84
- serviceEndTime: {
85
- type: 'string',
86
- format: 'date-time'
87
- }
88
- }
89
- }
90
- }
91
- },
92
- async request => {
93
- await services.tenant.addTenant(request.body);
94
- return {};
95
- }
96
- );
97
-
98
- fastify.post(
99
- `${options.prefix}/admin/saveTenant`,
100
- {
101
- onRequest: [authenticate.user, authenticate.admin],
102
- schema: {
103
- body: {
104
- type: 'object',
105
- required: ['id', 'name', 'accountNumber', 'serviceStartTime', 'serviceEndTime'],
106
- properties: {
107
- id: { type: 'string' },
108
- name: { type: 'string' },
109
- accountNumber: { type: 'number' },
110
- serviceStartTime: {
111
- type: 'string',
112
- format: 'date-time'
113
- },
114
- serviceEndTime: {
115
- type: 'string',
116
- format: 'date-time'
117
- }
118
- }
119
- }
120
- }
121
- },
122
- async request => {
123
- await services.tenant.saveTenant(request.body);
124
- return {};
125
- }
126
- );
127
-
128
- fastify.post(
129
- `${options.prefix}/admin/tenant/addOrg`,
130
- {
131
- onRequest: [authenticate.user, authenticate.admin],
132
- required: ['name', 'tenantId', 'pid'],
133
- properties: {
134
- name: { type: 'string' },
135
- tenantId: { type: 'string' },
136
- pid: { type: 'number' }
137
- }
138
- },
139
- async request => {
140
- return await services.tenantOrg.addTenantOrg(request.body);
141
- }
142
- );
143
-
144
- fastify.get(
145
- `${options.prefix}/admin/tenant/orgList`,
146
- {
147
- onRequest: [authenticate.user, authenticate.admin],
148
- schema: {
149
- query: {
150
- type: 'object',
151
- properties: {
152
- id: { type: 'string' }
153
- }
154
- }
155
- }
156
- },
157
- async request => {
158
- const { tenantId } = request.query;
159
- return await services.tenantOrg.getTenantOrgList({ tenantId });
160
- }
161
- );
162
-
163
- fastify.post(
164
- `${options.prefix}/admin/tenant/editOrg`,
165
- {
166
- onRequest: [authenticate.user, authenticate.admin],
167
- required: ['name', 'tenantId', 'pid'],
168
- properties: {
169
- name: { type: 'string' },
170
- tenantId: { type: 'string' },
171
- pid: { type: 'number' }
172
- }
173
- },
174
- async request => {
175
- await services.tenantOrg.saveTenantOrg(request.body);
176
- return {};
177
- }
178
- );
179
-
180
- fastify.post(
181
- `${options.prefix}/admin/tenant/removeOrg`,
182
- {
183
- onRequest: [authenticate.user, authenticate.admin],
184
- required: ['tenantId', 'id'],
185
- properties: {
186
- tenantId: { type: 'string' },
187
- id: { type: 'number' }
188
- }
189
- },
190
- async request => {
191
- await services.tenantOrg.deleteTenantOrg(request.body);
192
- return {};
193
- }
194
- );
195
-
196
- fastify.get(
197
- `${options.prefix}/admin/getTenantUserList`,
198
- {
199
- onRequest: [authenticate.user, authenticate.admin],
200
- schema: {
201
- query: {
202
- type: 'object',
203
- properties: {
204
- tenantId: { type: 'string' }
205
- }
206
- }
207
- }
208
- },
209
- async request => {
210
- const { tenantId } = request.query;
211
- return await services.tenantUser.getTenantUserList({ tenantId });
212
- }
213
- );
214
-
215
- fastify.post(
216
- `${options.prefix}/admin/addTenantUser`,
217
- {
218
- onRequest: [authenticate.user, authenticate.admin],
219
- schema: {
220
- body: {
221
- type: 'object',
222
- required: ['tenantId', 'userId', 'name'],
223
- properties: {
224
- tenantId: { type: 'string' },
225
- roleIds: { type: 'array', items: { type: 'number' }, default: [] },
226
- orgIds: {
227
- type: 'array',
228
- items: { type: 'number' },
229
- default: []
230
- },
231
- userId: { type: 'string' },
232
- name: { type: 'string' },
233
- avatar: { type: 'string' },
234
- phone: { type: 'string' },
235
- email: { type: 'string' },
236
- description: { type: 'string' }
237
- }
238
- }
239
- }
240
- },
241
- async request => {
242
- await services.tenantUser.addTenantUser(request.body);
243
- return {};
244
- }
245
- );
246
-
247
- fastify.post(
248
- `${options.prefix}/admin/saveTenantUser`,
249
- {
250
- onRequest: [authenticate.user, authenticate.admin],
251
- schema: {
252
- body: {
253
- type: 'object',
254
- required: ['tenantId', 'name'],
255
- properties: {
256
- tenantId: { type: 'string' },
257
- roleIds: { type: 'array', items: { type: 'number' }, default: [] },
258
- orgIds: {
259
- type: 'array',
260
- items: { type: 'number' },
261
- default: []
262
- },
263
- name: { type: 'string' },
264
- avatar: { type: 'string' },
265
- phone: { type: 'string' },
266
- email: { type: 'string' },
267
- description: { type: 'string' }
268
- }
269
- }
270
- }
271
- },
272
- async request => {
273
- await services.tenantUser.saveTenantUser(request.body);
274
- return {};
275
- }
276
- );
277
-
278
- fastify.post(
279
- `${options.prefix}/admin/deleteTenantUser`,
280
- {
281
- onRequest: [authenticate.user, authenticate.admin],
282
- schema: {
283
- body: {
284
- type: 'object',
285
- required: ['tenantId', 'tenantUserId'],
286
- properties: {
287
- tenantId: { type: 'string' },
288
- tenantUserId: { type: 'string' }
289
- }
290
- }
291
- }
292
- },
293
- async request => {
294
- const { tenantId, tenantUserId } = request.body;
295
- await services.tenantUser.deleteTenantUser({ tenantId, tenantUserId });
296
- return {};
297
- }
298
- );
299
-
300
- fastify.post(
301
- `${options.prefix}/admin/closeTenant`,
302
- {
303
- onRequest: [authenticate.user, authenticate.admin],
304
- schema: {
305
- body: {
306
- type: 'object',
307
- required: ['tenantId'],
308
- properties: {
309
- tenantId: { type: 'string' }
310
- }
311
- }
312
- }
313
- },
314
- async request => {
315
- const { tenantId } = request.body;
316
- await services.tenant.closeTenant({ tenantId });
317
- return {};
318
- }
319
- );
320
-
321
- fastify.post(
322
- `${options.prefix}/admin/openTenant`,
323
- {
324
- onRequest: [authenticate.user, authenticate.admin],
325
- schema: {
326
- body: {
327
- type: 'object',
328
- required: ['tenantId'],
329
- properties: {
330
- tenantId: { type: 'string' }
331
- }
332
- }
333
- }
334
- },
335
- async request => {
336
- const { tenantId } = request.body;
337
- await services.tenant.openTenant({ tenantId });
338
- return {};
339
- }
340
- );
341
-
342
- fastify.post(
343
- `${options.prefix}/admin/closeTenantUser`,
344
- {
345
- onRequest: [authenticate.user, authenticate.admin],
346
- schema: {
347
- body: {
348
- type: 'object',
349
- required: ['tenantId', 'tenantUserId'],
350
- properties: {
351
- tenantId: { type: 'string' },
352
- tenantUserId: { type: 'string' }
353
- }
354
- }
355
- }
356
- },
357
- async request => {
358
- const { tenantId, tenantUserId } = request.body;
359
- await services.tenantUser.closeTenantUser({ tenantId, tenantUserId });
360
- return {};
361
- }
362
- );
363
-
364
- fastify.post(
365
- `${options.prefix}/admin/openTenantUser`,
366
- {
367
- onRequest: [authenticate.user, authenticate.admin],
368
- schema: {
369
- body: {
370
- type: 'object',
371
- required: ['tenantId', 'tenantUserId'],
372
- properties: {
373
- tenantId: { type: 'string' },
374
- tenantUserId: { type: 'string' }
375
- }
376
- }
377
- }
378
- },
379
- async request => {
380
- const { tenantId, tenantUserId } = request.body;
381
- await services.tenantUser.openTenantUser({ tenantId, tenantUserId });
382
- return {};
383
- }
384
- );
385
-
386
- fastify.get(
387
- `${options.prefix}/admin/getInviteList`,
388
- {
389
- onRequest: [authenticate.user, authenticate.admin],
390
- schema: {
391
- query: {
392
- type: 'object',
393
- required: ['tenantId'],
394
- properties: {
395
- tenantId: { type: 'string' }
396
- }
397
- }
398
- }
399
- },
400
- async request => {
401
- const { filter, perPage, currentPage, tenantId } = Object.assign(
402
- {
403
- perPage: 20,
404
- currentPage: 1
405
- },
406
- request.query
407
- );
408
-
409
- return await services.tenantInvite.getInviteList({ filter, perPage, currentPage, tenantId });
410
- }
411
- );
412
-
413
- fastify.post(
414
- `${options.prefix}/admin/addInviteToken`,
415
- {
416
- onRequest: [authenticate.user, authenticate.admin],
417
- schema: {
418
- body: {
419
- type: 'object',
420
- required: ['tenantId'],
421
- properties: {
422
- tenantId: { type: 'string' },
423
- info: {
424
- type: 'object',
425
- properties: {
426
- roleIds: { type: 'array', items: { type: 'number' }, default: [] },
427
- orgIds: {
428
- type: 'array',
429
- items: { type: 'number' },
430
- default: []
431
- }
432
- }
433
- }
434
- }
435
- }
436
- }
437
- },
438
- async request => {
439
- const { tenantId, info } = request.body;
440
- await services.tenantInvite.addInviteToken({ tenantId, info });
441
- return {};
442
- }
443
- );
444
-
445
- fastify.post(
446
- `${options.prefix}/admin/deleteInviteToken`,
447
- {
448
- onRequest: [authenticate.user, authenticate.admin],
449
- schema: {
450
- body: {
451
- type: 'object',
452
- required: ['id'],
453
- properties: {
454
- id: { type: 'number' }
455
- }
456
- }
457
- }
458
- },
459
- async request => {
460
- await services.tenantInvite.deleteInviteToken({ id: request.body.id });
461
- return {};
462
- }
463
- );
464
- });
@@ -1,34 +0,0 @@
1
- const fp = require('fastify-plugin');
2
- module.exports = fp(async (fastify, options) => {
3
- const { authenticate, services } = fastify.account;
4
- fastify.get(
5
- `${options.prefix}/tenant/getUserTenant`,
6
- {
7
- onRequest: [authenticate.user]
8
- },
9
- async request => {
10
- return await services.tenantUser.getUserTenant(request.authenticatePayload);
11
- }
12
- );
13
-
14
- fastify.get(
15
- `${options.prefix}/tenant/getTenantUserInfo`,
16
- {
17
- onRequest: [authenticate.user, authenticate.tenant]
18
- },
19
- async request => {
20
- return request.tenantInfo;
21
- }
22
- );
23
-
24
- fastify.get(
25
- `${options.prefix}/tenant/orgList`,
26
- {
27
- onRequest: [authenticate.user, authenticate.tenant]
28
- },
29
- async request => {
30
- const { id: tenantId } = request.tenantInfo.tenant;
31
- return await services.tenantOrg.getTenantOrgList({ tenantId });
32
- }
33
- );
34
- });
@@ -1,15 +0,0 @@
1
- module.exports = ({ DataTypes }) => {
2
- return {
3
- model: {
4
- userId: {
5
- type: DataTypes.UUID,
6
- allowNull: false
7
- },
8
- role: {
9
- type: DataTypes.STRING,
10
- allowNull: false
11
- },
12
- target: DataTypes.STRING
13
- }
14
- };
15
- };
@@ -1,42 +0,0 @@
1
- module.exports = ({ DataTypes }) => {
2
- return {
3
- model: {
4
- id: {
5
- type: DataTypes.INTEGER,
6
- autoIncrement: true,
7
- primaryKey: true
8
- },
9
- uuid: {
10
- type: DataTypes.UUID,
11
- defaultValue: DataTypes.UUIDV4
12
- },
13
- avatar: DataTypes.STRING,
14
- name: {
15
- type: DataTypes.STRING,
16
- allowNull: false
17
- },
18
- url: DataTypes.STRING,
19
- code: {
20
- type: DataTypes.STRING,
21
- allowNull: false
22
- },
23
- description: DataTypes.TEXT,
24
- status: {
25
- type: DataTypes.INTEGER,
26
- defaultValue: 0
27
- }
28
- },
29
- options: {
30
- indexes: [
31
- {
32
- unique: true,
33
- fields: ['code', 'deleted_at']
34
- },
35
- {
36
- unique: true,
37
- fields: ['uuid', 'deleted_at']
38
- }
39
- ]
40
- }
41
- };
42
- };
@@ -1,11 +0,0 @@
1
- module.exports = ({ DataTypes }) => {
2
- return {
3
- model: {
4
- userId: {
5
- type: DataTypes.UUID,
6
- allowNull: false
7
- },
8
- ip: DataTypes.STRING
9
- }
10
- };
11
- };
@@ -1,51 +0,0 @@
1
- module.exports = ({ DataTypes }) => {
2
- return {
3
- model: {
4
- applicationId: {
5
- type: DataTypes.UUID,
6
- allowNull: false
7
- },
8
- code: {
9
- type: DataTypes.STRING,
10
- allowNull: false
11
- },
12
- name: {
13
- type: DataTypes.STRING,
14
- allowNull: false
15
- },
16
- isModule: {
17
- type: DataTypes.INTEGER,
18
- defaultValue: 0 //0:操作项,1:模块
19
- },
20
- isMust: {
21
- type: DataTypes.INTEGER,
22
- defaultValue: 0 //0:非必须,1:必须
23
- },
24
- type: {
25
- type: DataTypes.INTEGER,
26
- defaultValue: 0 //0:基础模块,1:扩展模块
27
- },
28
- pid: {
29
- type: DataTypes.INTEGER,
30
- defaultValue: 0
31
- },
32
- paths: {
33
- type: DataTypes.JSON,
34
- defaultValue: []
35
- },
36
- description: DataTypes.TEXT,
37
- status: {
38
- type: DataTypes.INTEGER,
39
- defaultValue: 0
40
- }
41
- },
42
- options: {
43
- indexes: [
44
- {
45
- unique: true,
46
- fields: ['code', 'application_id', 'pid', 'deleted_at']
47
- }
48
- ]
49
- }
50
- };
51
- };
@@ -1,26 +0,0 @@
1
- module.exports = ({ DataTypes }) => {
2
- return {
3
- model: {
4
- tenantId: {
5
- type: DataTypes.UUID,
6
- allowNull: false
7
- },
8
- applicationId: {
9
- type: DataTypes.UUID,
10
- allowNull: false
11
- },
12
- status: {
13
- type: DataTypes.INTEGER,
14
- defaultValue: 0 //0:开启 11:关闭
15
- }
16
- },
17
- options: {
18
- indexes: [
19
- {
20
- unique: true,
21
- fields: ['tenant_id', 'application_id', 'deleted_at']
22
- }
23
- ]
24
- }
25
- };
26
- };
@@ -1,26 +0,0 @@
1
- module.exports = ({ DataTypes }) => {
2
- return {
3
- model: {
4
- tenantId: {
5
- type: DataTypes.UUID,
6
- allowNull: false
7
- },
8
- name: {
9
- type: DataTypes.STRING,
10
- allowNull: false
11
- },
12
- enName: {
13
- type: DataTypes.STRING
14
- },
15
- pid: {
16
- type: DataTypes.INTEGER,
17
- defaultValue: 0,
18
- allowNull: false //0:为根节点
19
- },
20
- status: {
21
- type: DataTypes.INTEGER,
22
- defaultValue: 0
23
- }
24
- }
25
- };
26
- };
@@ -1,26 +0,0 @@
1
- module.exports = ({ DataTypes }) => {
2
- return {
3
- model: {
4
- tenantId: {
5
- type: DataTypes.UUID,
6
- allowNull: false
7
- },
8
- permissionId: {
9
- type: DataTypes.INTEGER,
10
- allowNull: false
11
- },
12
- status: {
13
- type: DataTypes.INTEGER,
14
- defaultValue: 0 //0:开启 11:关闭
15
- }
16
- },
17
- options: {
18
- indexes: [
19
- {
20
- unique: true,
21
- fields: ['tenant_id', 'permission_id', 'deleted_at']
22
- }
23
- ]
24
- }
25
- };
26
- };