@kne/fastify-account 1.0.0-alpha.11 → 1.0.0-alpha.14

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.
@@ -5,6 +5,8 @@ module.exports = fp(async (fastify, options) => {
5
5
  `${options.prefix}/sendEmailCode`,
6
6
  {
7
7
  schema: {
8
+ tags: ['账号'],
9
+ summary: '发送邮箱验证码',
8
10
  body: {
9
11
  type: 'object',
10
12
  required: ['email'],
@@ -39,12 +41,28 @@ module.exports = fp(async (fastify, options) => {
39
41
  `${options.prefix}/sendSMSCode`,
40
42
  {
41
43
  schema: {
44
+ tags: ['账号'],
45
+ summary: '发送短信验证码',
42
46
  body: {
43
47
  type: 'object',
44
48
  required: ['phone'],
45
49
  properties: {
46
50
  phone: { type: 'string', description: '电话' }
47
51
  }
52
+ },
53
+ response: {
54
+ 200: {
55
+ content: {
56
+ 'application/json': {
57
+ schema: {
58
+ type: 'object',
59
+ properties: {
60
+ code: { type: 'string', description: '验证码' }
61
+ }
62
+ }
63
+ }
64
+ }
65
+ }
48
66
  }
49
67
  }
50
68
  },
@@ -59,6 +77,8 @@ module.exports = fp(async (fastify, options) => {
59
77
  `${options.prefix}/validateCode`,
60
78
  {
61
79
  schema: {
80
+ tags: ['账号'],
81
+ summary: '验证码验证',
62
82
  body: {
63
83
  type: 'object',
64
84
  required: ['name', 'type', 'code'],
@@ -67,6 +87,15 @@ module.exports = fp(async (fastify, options) => {
67
87
  type: { type: 'number', description: '0:手机注册,1:邮箱注册,2:手机登录,3:邮箱登录,4:验证租户管理员' },
68
88
  code: { type: 'string', description: '接受到的验证码' }
69
89
  }
90
+ },
91
+ response: {
92
+ 200: {
93
+ content: {
94
+ 'application/json': {
95
+ schema: {}
96
+ }
97
+ }
98
+ }
70
99
  }
71
100
  }
72
101
  },
@@ -88,23 +117,39 @@ module.exports = fp(async (fastify, options) => {
88
117
  `${options.prefix}/accountIsExists`,
89
118
  {
90
119
  schema: {
120
+ tags: ['账号'],
121
+ summary: '账号是否已存在',
91
122
  body: {
92
123
  oneOf: [
93
124
  {
94
125
  type: 'object',
95
126
  required: ['phone'],
96
127
  properties: {
97
- phone: { type: 'string' }
128
+ phone: { type: 'string', description: '电话' }
98
129
  }
99
130
  },
100
131
  {
101
132
  type: 'object',
102
133
  required: ['email'],
103
134
  properties: {
104
- email: { type: 'string' }
135
+ email: { type: 'string', description: '邮箱' }
105
136
  }
106
137
  }
107
138
  ]
139
+ },
140
+ response: {
141
+ 200: {
142
+ content: {
143
+ 'application/json': {
144
+ schema: {
145
+ type: 'object',
146
+ properties: {
147
+ isExists: { type: 'boolean', description: 'true已存在,false不存在' }
148
+ }
149
+ }
150
+ }
151
+ }
152
+ }
108
153
  }
109
154
  }
110
155
  },
@@ -118,39 +163,50 @@ module.exports = fp(async (fastify, options) => {
118
163
  `${options.prefix}/register`,
119
164
  {
120
165
  schema: {
166
+ tags: ['账号'],
167
+ summary: '注册账号',
121
168
  body: {
122
169
  oneOf: [
123
170
  {
124
171
  type: 'object',
125
172
  required: ['phone', 'password', 'code'],
126
173
  properties: {
127
- avatar: { type: 'string' },
128
- phone: { type: 'string' },
129
- code: { type: 'string' },
130
- password: { type: 'string' },
131
- invitationCode: { type: 'string' },
132
- nickname: { type: 'string' },
133
- gender: { type: 'string' },
134
- birthday: { type: 'string', format: 'date' },
135
- description: { type: 'string' }
174
+ avatar: { type: 'string', description: '头像图片id' },
175
+ phone: { type: 'string', description: '电话' },
176
+ code: { type: 'string', description: '验证码' },
177
+ password: { type: 'string', description: '密码(需要md5加密)' },
178
+ invitationCode: { type: 'string', description: '邀请码,用来默认加入租户' },
179
+ nickname: { type: 'string', description: '昵称' },
180
+ gender: { type: 'string', description: '性别' },
181
+ birthday: { type: 'string', format: 'date', description: '出生日期' },
182
+ description: { type: 'string', description: '个人简介' }
136
183
  }
137
184
  },
138
185
  {
139
186
  type: 'object',
140
187
  required: ['email', 'password', 'code'],
141
188
  properties: {
142
- avatar: { type: 'string' },
143
- email: { type: 'string' },
144
- code: { type: 'string' },
145
- password: { type: 'string' },
146
- invitationCode: { type: 'string' },
147
- nickname: { type: 'string' },
148
- gender: { type: 'string' },
149
- birthday: { type: 'string', format: 'date' },
150
- description: { type: 'string' }
189
+ avatar: { type: 'string', description: '头像图片id' },
190
+ email: { type: 'string', description: '邮箱' },
191
+ code: { type: 'string', description: '验证码' },
192
+ password: { type: 'string', description: '密码(需要md5加密)' },
193
+ invitationCode: { type: 'string', description: '邀请码,用来默认加入租户' },
194
+ nickname: { type: 'string', description: '昵称' },
195
+ gender: { type: 'string', description: '性别' },
196
+ birthday: { type: 'string', format: 'date', description: '出生日期' },
197
+ description: { type: 'string', description: '个人简介' }
151
198
  }
152
199
  }
153
200
  ]
201
+ },
202
+ response: {
203
+ 200: {
204
+ content: {
205
+ 'application/json': {
206
+ schema: {}
207
+ }
208
+ }
209
+ }
154
210
  }
155
211
  }
156
212
  },
@@ -164,12 +220,29 @@ module.exports = fp(async (fastify, options) => {
164
220
  `${options.prefix}/login`,
165
221
  {
166
222
  schema: {
223
+ tags: ['账号'],
224
+ summary: '登录',
167
225
  body: {
168
226
  type: 'object',
169
227
  required: ['username', 'password'],
170
228
  properties: {
171
- username: { type: 'string' },
172
- password: { type: 'string' }
229
+ username: { type: 'string', description: '用户名' },
230
+ password: { type: 'string', description: '密码' }
231
+ }
232
+ },
233
+ response: {
234
+ 200: {
235
+ content: {
236
+ 'application/json': {
237
+ schema: {
238
+ type: 'object',
239
+ properties: {
240
+ token: { type: 'string', description: '用户token' },
241
+ currentTenantId: { type: 'string', description: '当前租户id' }
242
+ }
243
+ }
244
+ }
245
+ }
173
246
  }
174
247
  }
175
248
  }
@@ -2,11 +2,15 @@ const fp = require('fastify-plugin');
2
2
 
3
3
  module.exports = fp(async (fastify, options) => {
4
4
  const { authenticate, services } = fastify.account;
5
- // 用于系统初始化时,设置第一个用户,只能使用一次,其他用户由该用户创建
6
5
  fastify.post(
7
6
  `${options.prefix}/initSuperAdmin`,
8
7
  {
9
- onRequest: [authenticate.user]
8
+ onRequest: [authenticate.user],
9
+ schema: {
10
+ tags: ['管理后台'],
11
+ summary: '初始化用户为管理员',
12
+ description: '用于系统初始化时,设置第一个用户,只能使用一次,其他用户由该用户创建'
13
+ }
10
14
  },
11
15
  async request => {
12
16
  await services.admin.initSuperAdmin(request.userInfo);
@@ -17,7 +21,38 @@ module.exports = fp(async (fastify, options) => {
17
21
  fastify.get(
18
22
  `${options.prefix}/admin/getSuperAdminInfo`,
19
23
  {
20
- onRequest: [authenticate.user, authenticate.admin]
24
+ onRequest: [authenticate.user, authenticate.admin],
25
+ schema: {
26
+ tags: ['管理后台'],
27
+ summary: '获取管理员信息',
28
+ response: {
29
+ 200: {
30
+ content: {
31
+ 'application/json': {
32
+ schema: {
33
+ type: 'object',
34
+ properties: {
35
+ userInfo: {
36
+ type: 'object',
37
+ properties: {
38
+ id: { type: 'string', description: '用户id' },
39
+ nickname: { type: 'string', description: '用户昵称' },
40
+ email: { type: 'string', description: '邮箱' },
41
+ phone: { type: 'string', description: '电话' },
42
+ gender: { type: 'string', description: '性别' },
43
+ birthday: { type: 'string', format: 'date', description: '出生日期' },
44
+ description: { type: 'string', description: '个人简介' },
45
+ currentTenantId: { type: 'string', description: '当前租户ID' },
46
+ status: { type: 'number', description: '状态' }
47
+ }
48
+ }
49
+ }
50
+ }
51
+ }
52
+ }
53
+ }
54
+ }
55
+ }
21
56
  },
22
57
  async request => {
23
58
  return { userInfo: request.userInfo };
@@ -29,12 +64,14 @@ module.exports = fp(async (fastify, options) => {
29
64
  {
30
65
  onRequest: [authenticate.user, authenticate.admin],
31
66
  schema: {
67
+ tags: ['管理后台'],
68
+ summary: '设置用户为超级管理员',
32
69
  body: {
33
70
  type: 'object',
34
71
  required: ['status', 'userId'],
35
72
  properties: {
36
- status: { type: 'boolean' },
37
- userId: { type: 'string' }
73
+ status: { type: 'boolean', description: 'true:将用户设置为超级管理员,false:取消用户超级管理员' },
74
+ userId: { type: 'string', description: '用户ID' }
38
75
  }
39
76
  }
40
77
  }
@@ -66,7 +103,10 @@ module.exports = fp(async (fastify, options) => {
66
103
  {
67
104
  onRequest: [authenticate.user, authenticate.admin],
68
105
  schema: {
69
- query: {}
106
+ query: {
107
+ perPage: { type: 'number' },
108
+ currentPage: { type: 'number' }
109
+ }
70
110
  }
71
111
  },
72
112
  async request => {
@@ -7,6 +7,8 @@ module.exports = fp(async (fastify, options) => {
7
7
  {
8
8
  onRequest: [authenticate.user, authenticate.admin],
9
9
  schema: {
10
+ tags: ['管理后台-权限'],
11
+ summary: '添加应用',
10
12
  body: {
11
13
  type: 'object',
12
14
  required: ['name', 'code'],
@@ -12,6 +12,8 @@ module.exports = fp(async (fastify, options) => {
12
12
  required: ['tenantId'],
13
13
  properties: {
14
14
  tenantId: { type: 'string' },
15
+ perPage: { type: 'number' },
16
+ currentPage: { type: 'number' },
15
17
  filter: {
16
18
  type: 'object',
17
19
  properties: {
@@ -201,14 +201,30 @@ module.exports = fp(async (fastify, options) => {
201
201
  query: {
202
202
  type: 'object',
203
203
  properties: {
204
- tenantId: { type: 'string' }
204
+ tenantId: { type: 'string' },
205
+ filter: {
206
+ type: 'object',
207
+ properties: {
208
+ name: { type: 'string' }
209
+ }
210
+ },
211
+ currentPage: { type: 'number' },
212
+ perPage: { type: 'number' }
205
213
  }
206
214
  }
207
215
  }
208
216
  },
209
217
  async request => {
210
- const { tenantId } = request.query;
211
- return await services.tenantUser.getTenantUserList({ tenantId });
218
+ const { filter, tenantId, currentPage, perPage } = Object.assign(
219
+ {},
220
+ {
221
+ filter: {},
222
+ currentPage: 1,
223
+ perPage: 20
224
+ },
225
+ request.query
226
+ );
227
+ return await services.tenantUser.getTenantUserList({ tenantId, filter, currentPage, perPage });
212
228
  }
213
229
  );
214
230
 
@@ -5,7 +5,7 @@ module.exports = fp(async (fastify, options) => {
5
5
  const queryFilter = {};
6
6
  const { count, rows } = await models.tenantToken.findAndCountAll({
7
7
  where: Object.assign({}, queryFilter, { tenantId, type: 10 }),
8
- offset: currentPage * (currentPage - 1),
8
+ offset: perPage * (currentPage - 1),
9
9
  limit: perPage
10
10
  });
11
11
  return { pageData: rows, totalCount: count };
@@ -11,7 +11,7 @@ module.exports = fp(async (fastify, options) => {
11
11
  }
12
12
  const { count, rows } = await models.tenantRole.findAndCountAll({
13
13
  where: Object.assign({}, queryFilter, { tenantId }),
14
- offset: currentPage * (currentPage - 1),
14
+ offset: perPage * (currentPage - 1),
15
15
  limit: perPage
16
16
  });
17
17
 
@@ -471,7 +471,7 @@ module.exports = fp(async (fastify, options) => {
471
471
  const { count, rows } = await fastify.account.models.tenantUser.findAndCountAll({
472
472
  include: [fastify.account.models.tenantRole, fastify.account.models.tenantOrg, fastify.account.models.user],
473
473
  where: Object.assign({}, queryFilter, { tenantId }),
474
- offset: currentPage * (currentPage - 1),
474
+ offset: perPage * (currentPage - 1),
475
475
  limit: perPage
476
476
  });
477
477
 
@@ -98,7 +98,7 @@ module.exports = fp(async (fastify, options) => {
98
98
 
99
99
  const { count, rows } = await models.tenant.findAndCountAll({
100
100
  where: queryFilter,
101
- offset: currentPage * (currentPage - 1),
101
+ offset: perPage * (currentPage - 1),
102
102
  limit: perPage
103
103
  });
104
104
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kne/fastify-account",
3
- "version": "1.0.0-alpha.11",
3
+ "version": "1.0.0-alpha.14",
4
4
  "description": "fastify的用户管理账号等实现",
5
5
  "main": "index.js",
6
6
  "scripts": {