1
1
import { Controller , Post , Get , Middleware } from '@overnightjs/core' ;
2
2
import { Response , Request } from 'express' ;
3
- import { User } from '@src/models/user' ;
4
3
import AuthService from '@src/services/auth' ;
5
4
import { BaseController } from './index' ;
6
5
import { authMiddleware } from '@src/middlewares/auth' ;
6
+ import { UserRepository } from '@src/repositories' ;
7
7
8
8
@Controller ( 'users' )
9
9
export class UsersController extends BaseController {
10
+ constructor ( private userRepository : UserRepository ) {
11
+ super ( ) ;
12
+ }
13
+
10
14
@Post ( '' )
11
15
public async create ( req : Request , res : Response ) : Promise < void > {
12
16
try {
13
- const user = new User ( req . body ) ;
14
- const newUser = await user . save ( ) ;
17
+ const newUser = await this . userRepository . create ( req . body ) ;
15
18
res . status ( 201 ) . send ( newUser ) ;
16
19
} catch ( error ) {
17
20
this . sendCreateUpdateErrorResponse ( res , error ) ;
@@ -20,7 +23,7 @@ export class UsersController extends BaseController {
20
23
21
24
@Post ( 'authenticate' )
22
25
public async authenticate ( req : Request , res : Response ) : Promise < Response > {
23
- const user = await User . findOne ( { email : req . body . email } ) ;
26
+ const user = await this . userRepository . findOneByEmail ( req . body . email ) ;
24
27
if ( ! user ) {
25
28
return this . sendErrorResponse ( res , {
26
29
code : 401 ,
@@ -38,14 +41,20 @@ export class UsersController extends BaseController {
38
41
}
39
42
const token = AuthService . generateToken ( user . id ) ;
40
43
41
- return res . send ( { ...user . toJSON ( ) , ...{ token } } ) ;
44
+ return res . send ( { ...user , ...{ token } } ) ;
42
45
}
43
46
44
47
@Get ( 'me' )
45
48
@Middleware ( authMiddleware )
46
49
public async me ( req : Request , res : Response ) : Promise < Response > {
47
50
const userId = req . context ?. userId ;
48
- const user = await User . findOne ( { _id : userId } ) ;
51
+ if ( ! userId ) {
52
+ return this . sendErrorResponse ( res , {
53
+ code : 404 ,
54
+ message : 'user id not provided' ,
55
+ } ) ;
56
+ }
57
+ const user = await this . userRepository . findOneById ( userId ) ;
49
58
if ( ! user ) {
50
59
return this . sendErrorResponse ( res , {
51
60
code : 404 ,
0 commit comments