1+ const UserModel = require ( '../models/users.model' ) ;
2+ const crypto = require ( 'crypto' ) ;
3+
4+ exports . insert = ( req , res ) => {
5+ let salt = crypto . randomBytes ( 16 ) . toString ( 'base64' ) ;
6+ let hash = crypto . createHmac ( 'sha512' , salt ) . update ( req . body . password ) . digest ( "base64" ) ;
7+ req . body . password = salt + "$" + hash ;
8+ req . body . permissionLevel = 1 ;
9+ UserModel . createUser ( req . body )
10+ . then ( ( result ) => {
11+ res . status ( 201 ) . send ( { id : result . _id } ) ;
12+ } ) ;
13+ } ;
14+
15+ exports . list = ( req , res ) => {
16+ let limit = req . query . limit && req . query . limit <= 100 ? parseInt ( req . query . limit ) : 10 ;
17+ let page = 0 ;
18+ if ( req . query ) {
19+ if ( req . query . page ) {
20+ req . query . page = parseInt ( req . query . page ) ;
21+ page = Number . isInteger ( req . query . page ) ? req . query . page : 0 ;
22+ }
23+ }
24+ UserModel . list ( limit , page )
25+ . then ( ( result ) => {
26+ res . status ( 200 ) . send ( result ) ;
27+ } )
28+ } ;
29+
30+ exports . getById = ( req , res ) => {
31+ UserModel . findById ( req . params . userId )
32+ . then ( ( result ) => {
33+ res . status ( 200 ) . send ( result ) ;
34+ } ) ;
35+ } ;
36+ exports . patchById = ( req , res ) => {
37+ if ( req . body . password ) {
38+ let salt = crypto . randomBytes ( 16 ) . toString ( 'base64' ) ;
39+ let hash = crypto . createHmac ( 'sha512' , salt ) . update ( req . body . password ) . digest ( "base64" ) ;
40+ req . body . password = salt + "$" + hash ;
41+ }
42+
43+ UserModel . patchUser ( req . params . userId , req . body )
44+ . then ( ( result ) => {
45+ res . status ( 204 ) . send ( { } ) ;
46+ } ) ;
47+
48+ } ;
49+
50+ exports . removeById = ( req , res ) => {
51+ UserModel . removeById ( req . params . userId )
52+ . then ( ( result ) => {
53+ res . status ( 204 ) . send ( { } ) ;
54+ } ) ;
55+ } ;
0 commit comments