11import { Controller , Post , Get , Middleware } from '@overnightjs/core' ;
22import { Response , Request } from 'express' ;
3- import { User } from '@src/models/user' ;
43import AuthService from '@src/services/auth' ;
54import { BaseController } from './index' ;
65import { authMiddleware } from '@src/middlewares/auth' ;
6+ import { UserRepository } from '@src/repositories' ;
77
88@Controller ( 'users' )
99export class UsersController extends BaseController {
10+ constructor ( private userRepository : UserRepository ) {
11+ super ( ) ;
12+ }
13+
1014 @Post ( '' )
1115 public async create ( req : Request , res : Response ) : Promise < void > {
1216 try {
13- const user = new User ( req . body ) ;
14- const newUser = await user . save ( ) ;
17+ const newUser = await this . userRepository . create ( req . body ) ;
1518 res . status ( 201 ) . send ( newUser ) ;
1619 } catch ( error ) {
1720 this . sendCreateUpdateErrorResponse ( res , error ) ;
@@ -20,7 +23,7 @@ export class UsersController extends BaseController {
2023
2124 @Post ( 'authenticate' )
2225 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 ) ;
2427 if ( ! user ) {
2528 return this . sendErrorResponse ( res , {
2629 code : 401 ,
@@ -38,14 +41,20 @@ export class UsersController extends BaseController {
3841 }
3942 const token = AuthService . generateToken ( user . id ) ;
4043
41- return res . send ( { ...user . toJSON ( ) , ...{ token } } ) ;
44+ return res . send ( { ...user , ...{ token } } ) ;
4245 }
4346
4447 @Get ( 'me' )
4548 @Middleware ( authMiddleware )
4649 public async me ( req : Request , res : Response ) : Promise < Response > {
4750 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 ) ;
4958 if ( ! user ) {
5059 return this . sendErrorResponse ( res , {
5160 code : 404 ,
0 commit comments