@@ -2,20 +2,105 @@ import { Router } from "express";
22import passport from "passport" ;
33import cookieConfig from "../config/cookie.config" ;
44import createToken from "../utils/token.utils" ;
5+ import {
6+ KAKAO_CALLBACK_URL ,
7+ KAKAO_CLIENT_ID ,
8+ NAVER_CLIENT_ID ,
9+ NAVER_REDIRECT_URI ,
10+ } from "../env" ;
511
612const router = Router ( ) ;
713
14+ // router.get(
15+ // "/naver",
16+ // passport.authenticate("naver", {
17+ // scope: ["email"],
18+ // prompt: "consent",
19+ // })
20+ // );
21+
22+ router . get ( "/naver" , ( req , res ) => {
23+ const baseURL = "https://nid.naver.com/oauth2.0/authorize" ;
24+ const query = new URLSearchParams ( {
25+ scope : "email" ,
26+ response_type : "code" ,
27+ client_id : NAVER_CLIENT_ID ! ,
28+ redirect_uri : NAVER_REDIRECT_URI ! ,
29+ auth_type : "reprompt" ,
30+ } ) ;
31+
32+ res . redirect ( `${ baseURL } ?${ query . toString ( ) } ` ) ;
33+ } ) ;
34+
35+ router . get (
36+ "/naver/callback" ,
37+ passport . authenticate ( "naver" , { failureRedirect : "/login" } ) ,
38+ ( req , res ) => {
39+ if ( ! req . user ) {
40+ return res . redirect ( "/login" ) ;
41+ }
42+ const user = req . user as any ;
43+
44+ const accessToken = createToken ( user , "access" ) ;
45+ const refreshToken = createToken ( user , "refresh" ) ;
46+
47+ res . cookie ( "accessToken" , accessToken , cookieConfig . accessTokenOption ) ;
48+ res . cookie ( "refreshToken" , refreshToken , cookieConfig . refreshTokenOption ) ;
49+
50+ res . redirect ( process . env . FRONTEND_URL || "http://localhost:3000" ) ;
51+ }
52+ ) ;
53+
54+ // router.get(
55+ // "/kakao",
56+ // passport.authenticate("kakao", {
57+ // scope: ["account_email"],
58+ // })
59+ // );
60+
61+ router . get ( "/kakao" , ( req , res ) => {
62+ const baseURL = "https://kauth.kakao.com/oauth/authorize" ;
63+
64+ const query = new URLSearchParams ( {
65+ client_id : KAKAO_CLIENT_ID ! ,
66+ redirect_uri : KAKAO_CALLBACK_URL ! ,
67+ response_type : "code" ,
68+ scope : "account_email" ,
69+ prompt : "login" ,
70+ } ) ;
71+
72+ res . redirect ( `${ baseURL } ?${ query . toString ( ) } ` ) ;
73+ } ) ;
74+
875router . get (
9- "/naver" ,
10- passport . authenticate ( "naver" , {
11- scope : [ "email" ] ,
12- prompt : "consent" ,
76+ "/kakao/callback" ,
77+ passport . authenticate ( "kakao" , { failureRedirect : "/login" } ) ,
78+ ( req , res ) => {
79+ if ( ! req . user ) {
80+ return res . redirect ( "/login" ) ;
81+ }
82+ const user = req . user as any ;
83+
84+ const accessToken = createToken ( user , "access" ) ;
85+ const refreshToken = createToken ( user , "refresh" ) ;
86+
87+ res . cookie ( "accessToken" , accessToken , cookieConfig . accessTokenOption ) ;
88+ res . cookie ( "refreshToken" , refreshToken , cookieConfig . refreshTokenOption ) ;
89+
90+ res . redirect ( process . env . FRONTEND_URL || "http://localhost:3000" ) ;
91+ }
92+ ) ;
93+
94+ router . get (
95+ "/google" ,
96+ passport . authenticate ( "google" , {
97+ scope : [ "profile" , "email" ] ,
1398 } )
1499) ;
15100
16101router . get (
17- "/naver /callback" ,
18- passport . authenticate ( "naver " , { failureRedirect : "/login" } ) ,
102+ "/google /callback" ,
103+ passport . authenticate ( "google " , { failureRedirect : "/login" } ) ,
19104 ( req , res ) => {
20105 if ( ! req . user ) {
21106 return res . redirect ( "/login" ) ;
@@ -32,4 +117,10 @@ router.get(
32117 }
33118) ;
34119
120+ router . get ( "/kakao/signout" , ( req , res ) => {
121+ res . clearCookie ( "accessToken" ) ;
122+ res . clearCookie ( "refreshToken" ) ;
123+ res . redirect ( process . env . FRONTEND_URL || "http://localhost:3000" ) ;
124+ } ) ;
125+
35126export default router ;
0 commit comments