1
1
const queryString = require ( 'query-string' ) ;
2
- // npm install query-string
3
2
const axios = require ( 'axios' ) ;
4
- // npm install axios
5
3
const { v4 } = require ( 'uuid' ) ;
6
4
7
- const { User } = require ( '../../models/user' ) ;
8
5
const bcrypt = require ( 'bcryptjs' ) ;
9
6
const jwt = require ( 'jsonwebtoken' ) ;
7
+
8
+ const { User } = require ( '../../models/user' ) ;
10
9
const { SECRET_KEY } = process . env ;
11
10
11
+ // GOOGLE ************************************************
12
12
const googleAuth = async ( req , res ) => {
13
13
const stringifiedParams = queryString . stringify ( {
14
14
client_id : process . env . GOOGLE_CLIENT_ID ,
15
- redirect_uri : `${ process . env . BASE_URL } /api/auth /google-redirect` ,
15
+ redirect_uri : `${ process . env . BASE_URL } /api/users /google-redirect` ,
16
16
scope : [
17
17
"https://www.googleapis.com/auth/userinfo.email" ,
18
18
"https://www.googleapis.com/auth/userinfo.profile" ,
@@ -21,91 +21,69 @@ const googleAuth = async (req, res) => {
21
21
access_type : "offline" ,
22
22
prompt : "consent"
23
23
} ) ;
24
- console . log ( '1' ) ;
25
24
return res . redirect (
26
25
`https://accounts.google.com/o/oauth2/v2/auth?${ stringifiedParams } `
27
26
)
28
27
} ;
29
28
30
29
const googleRedirect = async ( req , res ) => {
31
- console . log ( '2 ' ) ;
30
+ // console.log('googleRedirect ');
32
31
const fullUrl = `${ req . protocol } ://${ req . get ( "host" ) } ${ req . originalUrl } ` ;
33
-
34
32
const urlObj = new URL ( fullUrl ) ;
35
33
const urlParams = queryString . parse ( urlObj . search ) ;
36
-
37
34
const code = urlParams . code ;
38
- console . log ( `code: ${ code } ` ) ;
39
-
35
+ // console.log(`code: ${code}`);
40
36
const tokenData = await axios ( {
41
37
url : `https://oauth2.googleapis.com/token` ,
42
38
method : "post" ,
43
39
data : {
44
40
client_id : process . env . GOOGLE_CLIENT_ID ,
45
41
client_secret : process . env . GOOGLE_CLIENT_SECRET ,
46
- redirect_uri : `${ process . env . BASE_URL } /api/auth /google-redirect` ,
42
+ redirect_uri : `${ process . env . BASE_URL } /api/users /google-redirect` ,
47
43
grant_type : "authorization_code" ,
48
44
code,
49
45
} ,
50
46
} ) ;
51
- console . log ( '3' ) ;
52
-
53
47
const userData = await axios ( {
54
48
url : "https://www.googleapis.com/oauth2/v2/userinfo" ,
55
49
method : "get" ,
56
- headers : {
57
- Authorization : `Bearer ${ tokenData . data . access_token } ` ,
58
- } ,
50
+ headers : { Authorization : `Bearer ${ tokenData . data . access_token } ` } ,
59
51
} ) ;
60
- console . log ( `userData.email ${ userData . data . email } ` ) ;
61
- console . log ( `userData.name ${ userData . data . name } ` ) ;
52
+ // console.log(`userData.email ${userData.data.email}`);
53
+ // console.log(`userData.name ${userData.data.name}`);
62
54
// GOOGLE END********************************************
63
55
64
56
// SINGUP *********************************************
65
- const googleEmail = userData . data . email ;
66
- const googleName = userData . data . name ;
67
- const email = googleEmail ;
68
- const name = googleName
69
- // const checkUser = await User.findOne({ googleEmail });
70
-
71
- const user = await User . findOne ( { email } ) ;
72
- console . log ( '4/1' )
73
- if ( user ) {
74
- console . log ( `user: ${ user . name } found! ` )
57
+ const email = userData . data . email ;
58
+ const name = userData . data . name ;
59
+ let user = await User . findOne ( { email } ) ;
60
+ if ( ! user ) {
61
+ // console.log(`user not found!`)
62
+ // const password = "111111";
63
+ const password = v4 ( ) ;
64
+ const hashPassword = await bcrypt . hash ( password , 10 ) ;
65
+ await User . create ( { name , email , password : hashPassword } ) ;
66
+ console . log ( `User was created ` )
75
67
}
76
-
77
- // const password = "111111";
78
- const password = v4 ( ) ;
79
- // const hashPassword = await bcrypt.hash(password, 10);
80
- await User . create ( { name, email, password } ) ;
81
- console . log ( '4' )
82
- // }
83
68
// ***************************************************
84
69
85
70
// LOGIN *********************************************
86
- // const user = await User.findOne({ email });
87
- console . log ( 'user' , user )
88
-
89
- const peyload = {
90
- id : user . _id
91
- }
92
- console . log ( 'peyload' , peyload )
71
+ user = await User . findOne ( { email } ) ; ;
72
+ const peyload = { id : user . _id } ;
93
73
const token = jwt . sign ( peyload , SECRET_KEY , { expiresIn : "24h" } ) ;
94
- console . log ( 'token' , token )
95
- await User . findByIdAndUpdate ( user . _id , { token } ) ;
96
- // res.json({
97
- // token,
98
- // });
99
- console . log ( '5' ) ;
74
+ await User . findByIdAndUpdate ( user . _id , { token } ) ;
75
+ res . json ( {
76
+ token,
77
+ } ) ;
78
+ console . log ( 'Login is successful' ) ;
100
79
// ***************************************************
101
-
102
- return res . redirect (
103
- `${ process . env . FRONTEND_URL } ?email =${ userData . data . email } &name= ${ userData . data . name } `
104
- )
80
+ // return res.redirect(
81
+ // `${process.env.FRONTEND_URL}?email=${userData.data.email}`
82
+ // // `${process.env.FRONTEND_URL}?token =${token }`
83
+ // )
105
84
}
106
85
107
86
module . exports = {
108
87
googleAuth,
109
88
googleRedirect,
110
- } ;
111
-
89
+ } ;
0 commit comments