@@ -101,11 +101,13 @@ def post(self):
101
101
email = request .values .get ('email' , None )
102
102
password = request .values .get ('password' , None )
103
103
_secret = current_app .config .get ('SECRET_KEY' )
104
+ print ("identfied" , email , password )
104
105
105
106
with current_app .test_client () as c :
106
107
resp = c .post ('/auth' , headers = {'Content-Type' : 'application/json' },
107
108
data = json .dumps ({"username" : email , "password" : password }))
108
109
data = json .loads (resp .data .decode ('utf8' ))
110
+ print ("auth" , data )
109
111
if data .get ('error' ):
110
112
raise ErrorCode (451 , data .get ('description' , "Bad Request" ))
111
113
@@ -120,7 +122,10 @@ def post(self):
120
122
logging .error ("get token error: %s." % str (e ))
121
123
state = isinstance (e , ErrorCode ) and e or ErrorCode (451 , "unknown error:" + str (e ))
122
124
123
- return {'result' : {'username' : email , 'token' : token , 'exp' : exp }, 'state' : state .message }, state .eid
125
+ return {'result' : {'username' : email ,
126
+ 'token' : token ,
127
+ 'exp' : exp ,
128
+ 'permission' : Permission .PERMISSION_MAP }, 'state' : state .message }, state .eid
124
129
125
130
126
131
class Users (Resource ):
@@ -129,6 +134,9 @@ def __init__(self):
129
134
self .parser .add_argument ('user' , type = str , required = True , location = 'form' )
130
135
self .parser .add_argument ('passwd' , type = str , required = True , location = 'form' )
131
136
137
+ self .parser_post = reqparse .RequestParser ()
138
+ self .parser_post .add_argument ('roles' , type = list , action = 'append' , location = ['form' , 'values' , 'json' ])
139
+
132
140
self .parser_get = reqparse .RequestParser ()
133
141
self .parser_get .add_argument ('user' , type = str , required = False , location = 'args' )
134
142
super (Users , self ).__init__ ()
@@ -149,14 +157,14 @@ def get(self):
149
157
description: "JWT <token>"
150
158
- in: query
151
159
name: gid
152
- type: string
160
+ type: integer
153
161
- in: query
154
162
name: page
155
- type: string
163
+ type: integer
156
164
description: 当前页
157
165
- in: query
158
166
name: pageSize
159
- type: string
167
+ type: integer
160
168
description: 每页显示量
161
169
responses:
162
170
200:
@@ -171,19 +179,16 @@ def get(self):
171
179
page_size = int (request .values .get ('pageSize' , 10 ))
172
180
keyword = request .values .get ('keyword' , "" )
173
181
174
- print (1 , page_size )
175
182
# 如果是超级管理员可获取所有用户信息
176
- if self .gid == 2 :
177
- print (2 , page_size )
183
+ if self .gid == 0 :
178
184
users_class = User .query .filter (or_ (User .username .like ("%" + keyword + "%" ),
179
185
User .email .like ("%" + keyword + "%" ),
180
186
User .phone .like ("%" + keyword + "%" ),
181
187
User .job .like ("%" + keyword + "%" ),)
182
- ).order_by (User .id .desc ()).paginate (page , page_size , error_out = False )
188
+ ).order_by (User .id .desc ()).paginate (page , page_size , error_out = True )
183
189
184
190
# 否则获取指定项目下的所有用户
185
191
else :
186
- print (page_size )
187
192
users_class = User .query .join (User .roles ).filter (
188
193
and_ (Role .groups_id == self .gid ,
189
194
or_ (User .email .like ("%" + keyword + "%" ),
@@ -194,9 +199,8 @@ def get(self):
194
199
195
200
users = users_class .items
196
201
users_total = users_class .total
197
- print ("user:" , users )
198
202
199
- doc = [u .to_json () for u in users ]
203
+ doc = [u .to_json (self . gid ) for u in users ]
200
204
201
205
except Exception as e :
202
206
logging .error ("get user info error: %s." % str (e ))
@@ -205,9 +209,10 @@ def get(self):
205
209
return {'result' : {'doc' : doc , 'total' : users_total }, 'state' : state .message }, state .eid
206
210
207
211
@jwt_required ()
212
+ @permission_required (Permission .VIEW )
208
213
def post (self ):
209
214
"""
210
- 员工信息修改接口
215
+ 用户添加修改
211
216
---
212
217
tags:
213
218
- USER
@@ -217,6 +222,18 @@ def post(self):
217
222
type: string
218
223
required: true
219
224
description: "JWT <token>"
225
+ - in: formData
226
+ name: id
227
+ type: integer
228
+ description: "用户ID"
229
+ - in: formData
230
+ name: username
231
+ type: string
232
+ description: "用户名"
233
+ - in: formData
234
+ name: job
235
+ type: string
236
+ description: "职位"
220
237
- in: formData
221
238
name: phone
222
239
type: string
@@ -225,6 +242,14 @@ def post(self):
225
242
name: email
226
243
type: string
227
244
description: "邮箱"
245
+ - in: formData
246
+ name: active
247
+ type: string
248
+ description: "是否激活"
249
+ - in: formData
250
+ name: roles
251
+ type: array
252
+ description: "角色"
228
253
responses:
229
254
200:
230
255
description: 员工信息修改接口
@@ -233,24 +258,52 @@ def post(self):
233
258
state = STATE_OK
234
259
rs = False
235
260
try :
236
- uid = current_identity .__dict__ .get ('id' )
261
+ request_param = dict (request .values .items ())
262
+ print ("user post:" , request_param )
263
+ uid = request .values .get ("id" , None )
264
+ username = request .values .get ("username" , None )
237
265
phone = request .values .get ("phone" , None )
238
266
email = request .values .get ("email" , None )
239
- user = User .query .get (int (uid ))
240
- if phone or email :
241
- if phone :
242
- user .phone = phone
267
+ job = request .values .get ("job" , None )
268
+ roles = request .values .get ("roles" , "" ).split (',' )
269
+ print (roles , type (roles ))
243
270
244
- if email :
245
- user . email = email
271
+ if not username and not email :
272
+ raise STATE_PARAM_ERR
246
273
247
- db .session .add (user )
248
- db .session .commit ()
274
+ if not uid :
275
+ user = User (username = username ,
276
+ email = email ,
277
+ phone = phone ,
278
+ job = job ,
279
+ active = True )
249
280
250
- rs = True
281
+ password = current_app .config .get ('PASSWORD_KEY' )
282
+ user .password = password
251
283
252
284
else :
253
- raise STATE_PARAM_ERR
285
+ user = User .query .get (int (uid ))
286
+ user .username = username ,
287
+ user .email = email ,
288
+ user .phone = phone ,
289
+ user .job = job
290
+ user .active = True
291
+
292
+ if roles :
293
+ print ("roles" , roles )
294
+ for r in roles :
295
+ role = Role .query .filter_by (groups_id = self .gid , permissions = int (r )).first ()
296
+ print ("role s" , role )
297
+ if role not in user .roles :
298
+ print ("not role s" )
299
+ user .roles .append (role )
300
+
301
+ # user.roles
302
+ print ("db sssss" )
303
+ db .session .add (user )
304
+ db .session .commit ()
305
+
306
+ rs = True
254
307
255
308
except Exception as e :
256
309
logging .error ("get user info error: %s." % str (e ))
@@ -305,7 +358,7 @@ def get(self):
305
358
page_size = int (request .values .get ('pageSize' , 10 ))
306
359
keyword = request .values .get ('keyword' , "" )
307
360
308
- if self .gid == 2 :
361
+ if self .gid == 2 and [ r for r in self . user . roles if r . groups_id == 2 ] :
309
362
groups_class = Groups .query .filter (Groups .name .like ('%{0}%' .format (keyword ))).order_by (
310
363
Groups .id .desc ()).paginate (page , page_size , error_out = False )
311
364
0 commit comments