@@ -9,6 +9,38 @@ router.get('/api/v1/user', SessionMiddleware, async (ctx) => {
99 ctx . body = { data : ctx . session . user } ;
1010} ) ;
1111
12+ router . put ( '/api/v1/user' , SessionMiddleware , async ( ctx ) => {
13+ const { body } = ctx . request ;
14+
15+ const user = await User . findByPk ( ctx . session . user . id ) ;
16+ if ( ! user ) {
17+ ctx . status = 404 ;
18+ ctx . body = {
19+ error : 'User not found' ,
20+ } ;
21+ return ;
22+ }
23+
24+ const fields = [ 'password' , 'name' , 'tel' , 'email' , 'avatar' , 'is_admin' ] . reduce ( ( total , current ) => {
25+ const value = body [ current ] ;
26+ if ( value ) {
27+ total [ current ] = current === 'password' ? encrypt ( value ) : value ;
28+ }
29+ return total ;
30+ } , { } ) ;
31+
32+ await user . update ( fields ) ;
33+ ctx . session . user = {
34+ id : user . id ,
35+ username : user . username ,
36+ name : user . name ,
37+ tel : user . tel ,
38+ is_admin : user . is_admin ,
39+ } ;
40+ ctx . session . manuallyCommit ( ) ;
41+ ctx . body = { data : user } ;
42+ } ) ;
43+
1244router . get ( '/api/v1/users' , SessionMiddleware , AdminMiddleware , async ( ctx ) => {
1345 const data = await User . findAll ( { paranoid : false } ) ;
1446 ctx . body = { data } ;
@@ -77,6 +109,18 @@ router.put('/api/v1/users/:id', SessionMiddleware, AdminMiddleware, async (ctx)
77109 } , { } ) ;
78110
79111 await user . update ( fields ) ;
112+
113+ if ( user . id === ctx . session . user . id ) {
114+ ctx . session . user = {
115+ id : user . id ,
116+ username : user . username ,
117+ name : user . name ,
118+ tel : user . tel ,
119+ is_admin : user . is_admin ,
120+ } ;
121+ ctx . session . manuallyCommit ( ) ;
122+ }
123+
80124 ctx . body = { data : user } ;
81125} ) ;
82126
0 commit comments