1
- import { validateUser , User } from " ../entity/User/User" ;
1
+ import { validateUser , User } from ' ../entity/User/User' ;
2
2
import {
3
3
Resolver ,
4
4
Query ,
5
5
Mutation ,
6
6
Arg ,
7
7
Ctx ,
8
8
UseMiddleware ,
9
- } from " type-graphql" ;
10
- import argon2 , { hash } from " argon2" ;
11
- import makeUserManager from " ../entity/User/makeUserManager" ;
12
- import { LoginResponse } from " ../entity/User/responses" ;
13
- import { MyContext } from " ../types/MyContext" ;
14
- import { createRefreshToken , createAccessToken } from " ../helpers/auth" ;
9
+ } from ' type-graphql' ;
10
+ import argon2 from ' argon2' ;
11
+ import makeUserManager from ' ../entity/User/makeUserManager' ;
12
+ import { LoginResponse } from ' ../entity/User/responses' ;
13
+ import { MyContext } from ' ../types/MyContext' ;
14
+ import { createRefreshToken , createAccessToken } from ' ../helpers/auth' ;
15
15
import {
16
16
makeLoginError ,
17
17
serverError ,
18
18
makeUserInputError ,
19
- } from " ../helpers/errors/errors" ;
20
- import { isAuth } from " ../middleware/isAuth" ;
19
+ } from ' ../helpers/errors/errors' ;
20
+ import { isAuth } from ' ../middleware/isAuth' ;
21
21
22
22
// require("dotenv-safe").config();
23
23
@@ -27,28 +27,30 @@ const UserManager = makeUserManager();
27
27
export class UserResolver {
28
28
@Query ( ( ) => User , { nullable : true } )
29
29
@UseMiddleware ( isAuth )
30
- async user ( @Ctx ( ) { jwtPayload } : MyContext ) {
31
- const user = await UserManager . findByEmail ( jwtPayload ! . email ) ;
30
+ async user ( @Ctx ( ) { jwtPayload } : MyContext ) : Promise < User | null > {
31
+ if ( ! jwtPayload ) return null ;
32
+ const user = await UserManager . findByEmail ( jwtPayload . email ) ;
32
33
if ( ! user ) return null ;
33
34
return user ;
34
35
}
35
36
36
37
@Mutation ( ( ) => Boolean )
37
38
async register (
38
- @Arg ( " email" ) email : string ,
39
- @Arg ( " password" ) password : string
40
- ) {
39
+ @Arg ( ' email' ) email : string ,
40
+ @Arg ( ' password' ) password : string
41
+ ) : Promise < boolean > {
41
42
const user = await validateUser ( new User ( email , password ) ) . catch ( ( err ) => {
42
43
throw makeUserInputError ( err ) ;
43
44
} ) ;
44
45
45
46
const existingUser = await UserManager . findByEmail ( email ) . catch ( ( err ) => {
47
+ console . log ( err ) ;
46
48
throw serverError ;
47
49
} ) ;
48
50
49
51
if ( existingUser ) {
50
52
throw makeUserInputError ( {
51
- email : " Account with this Email already exists" ,
53
+ email : ' Account with this Email already exists' ,
52
54
} ) ;
53
55
}
54
56
@@ -64,9 +66,9 @@ export class UserResolver {
64
66
65
67
@Mutation ( ( ) => LoginResponse )
66
68
async login (
67
- @Arg ( " email" ) email : string ,
68
- @Arg ( " password" ) password : string ,
69
- @Ctx ( ) { req , res } : MyContext
69
+ @Arg ( ' email' ) email : string ,
70
+ @Arg ( ' password' ) password : string ,
71
+ @Ctx ( ) { res } : MyContext
70
72
) : Promise < LoginResponse > {
71
73
let user = null ;
72
74
@@ -86,7 +88,7 @@ export class UserResolver {
86
88
try {
87
89
if ( await argon2 . verify ( user . password , password ) ) {
88
90
const token = createAccessToken ( user ) ;
89
- res . cookie ( "jt" , createRefreshToken ( user ) , { httpOnly : true } ) ;
91
+ res . cookie ( 'jt' , createRefreshToken ( user ) , { httpOnly : true } ) ;
90
92
return { accessToken : token } ;
91
93
} else {
92
94
throw makeLoginError ( ) ;
0 commit comments