1- import { Router } from "express" ;
1+ import { RequestHandler , Router } from "express" ;
22import passport from "passport" ;
33import cookieConfig from "../config/cookie.config" ;
44import createToken from "../utils/token.utils" ;
55import {
6+ FRONTEND_URL ,
67 KAKAO_CALLBACK_URL ,
78 KAKAO_CLIENT_ID ,
89 NAVER_CLIENT_ID ,
@@ -11,54 +12,50 @@ import {
1112
1213const router = Router ( ) ;
1314
14- // router.get(
15- // "/naver",
16- // passport.authenticate("naver", {
17- // scope: ["email"],
18- // prompt: "consent",
19- // })
20- // );
21-
22- router . get ( "/naver" , ( req , res ) => {
15+ router . get ( "/naver/customer" , ( req , res ) => {
2316 const baseURL = "https://nid.naver.com/oauth2.0/authorize" ;
2417 const query = new URLSearchParams ( {
2518 scope : "email" ,
2619 response_type : "code" ,
2720 client_id : NAVER_CLIENT_ID ! ,
2821 redirect_uri : NAVER_REDIRECT_URI ! ,
2922 auth_type : "reprompt" ,
23+ state : "customer" ,
3024 } ) ;
3125
3226 res . redirect ( `${ baseURL } ?${ query . toString ( ) } ` ) ;
3327} ) ;
3428
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 ;
29+ router . get ( "/naver/mover" , ( req , res ) => {
30+ const baseURL = "https://nid.naver.com/oauth2.0/authorize" ;
31+ const query = new URLSearchParams ( {
32+ scope : "email" ,
33+ response_type : "code" ,
34+ client_id : NAVER_CLIENT_ID ! ,
35+ redirect_uri : NAVER_REDIRECT_URI ! ,
36+ auth_type : "reprompt" ,
37+ state : "mover" ,
38+ } ) ;
4339
44- const accessToken = createToken ( user , "access" ) ;
45- const refreshToken = createToken ( user , "refresh" ) ;
40+ res . redirect ( ` ${ baseURL } ? ${ query . toString ( ) } ` ) ;
41+ } ) ;
4642
47- res . cookie ( "accessToken ", accessToken , cookieConfig . accessTokenOption ) ;
48- res . cookie ( "refreshToken" , refreshToken , cookieConfig . refreshTokenOption ) ;
43+ router . get ( "/kakao/customer ", ( req , res ) => {
44+ const baseURL = "https://kauth.kakao.com/oauth/authorize" ;
4945
50- res . redirect ( process . env . FRONTEND_URL || "http://localhost:3001" ) ;
51- }
52- ) ;
46+ const query = new URLSearchParams ( {
47+ client_id : KAKAO_CLIENT_ID ! ,
48+ redirect_uri : KAKAO_CALLBACK_URL ! ,
49+ response_type : "code" ,
50+ scope : "account_email" ,
51+ prompt : "login" ,
52+ state : "customer" ,
53+ } ) ;
5354
54- // router.get(
55- // "/kakao",
56- // passport.authenticate("kakao", {
57- // scope: ["account_email"],
58- // })
59- // );
55+ res . redirect ( `${ baseURL } ?${ query . toString ( ) } ` ) ;
56+ } ) ;
6057
61- router . get ( "/kakao" , ( req , res ) => {
58+ router . get ( "/kakao/mover " , ( req , res ) => {
6259 const baseURL = "https://kauth.kakao.com/oauth/authorize" ;
6360
6461 const query = new URLSearchParams ( {
@@ -67,60 +64,74 @@ router.get("/kakao", (req, res) => {
6764 response_type : "code" ,
6865 scope : "account_email" ,
6966 prompt : "login" ,
67+ state : "mover" ,
7068 } ) ;
7169
7270 res . redirect ( `${ baseURL } ?${ query . toString ( ) } ` ) ;
7371} ) ;
7472
7573router . get (
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:3001" ) ;
91- }
74+ "/google/customer" ,
75+ passport . authenticate ( "google" , {
76+ scope : [ "profile" , "email" ] ,
77+ state : "customer" ,
78+ } )
9279) ;
9380
9481router . get (
95- "/google" ,
82+ "/google/mover " ,
9683 passport . authenticate ( "google" , {
9784 scope : [ "profile" , "email" ] ,
85+ state : "mover" ,
9886 } )
9987) ;
10088
101- router . get (
102- "/google/callback" ,
103- passport . authenticate ( "google" , { failureRedirect : "/login" } ) ,
104- ( req , res ) => {
105- if ( ! req . user ) {
106- return res . redirect ( "/login" ) ;
107- }
108- const user = req . user as any ;
89+ const handleOAuthCallback : RequestHandler = ( req , res ) => {
90+ if ( ! req . user ) {
91+ return res . redirect ( "/login" ) ;
92+ }
93+ const user = req . user as any ;
94+ const userType = req . query . state as string ;
10995
110- const accessToken = createToken ( user , "access" ) ;
111- const refreshToken = createToken ( user , "refresh" ) ;
96+ const accessToken = createToken ( user , "access" ) ;
97+ const refreshToken = createToken ( user , "refresh" ) ;
11298
113- res . cookie ( "accessToken" , accessToken , cookieConfig . accessTokenOption ) ;
114- res . cookie ( "refreshToken" , refreshToken , cookieConfig . refreshTokenOption ) ;
99+ res . cookie ( "accessToken" , accessToken , cookieConfig . accessTokenOption ) ;
100+ res . cookie ( "refreshToken" , refreshToken , cookieConfig . refreshTokenOption ) ;
115101
116- res . redirect ( process . env . FRONTEND_URL || "http://localhost:3001" ) ;
117- }
102+ const messages : Record < string , string > = {
103+ customer : "고객 프로필을 등록해주세요." ,
104+ mover : "기사 프로필을 등록해주세요." ,
105+ } ;
106+
107+ const redirectUrls : Record < string , string > = {
108+ customer : "/me/profile" ,
109+ mover : "/mover/profile" ,
110+ } ;
111+
112+ res . status ( 204 ) . send ( {
113+ message : messages [ userType ] || "프로필을 등록해주세요." ,
114+ redirectUrl : FRONTEND_URL + redirectUrls [ userType ] ,
115+ redirect : true ,
116+ } ) ;
117+ } ;
118+
119+ router . get (
120+ "/naver/callback" ,
121+ passport . authenticate ( "naver" , { failureRedirect : "/login" } ) ,
122+ handleOAuthCallback
118123) ;
119124
120- router . get ( "/kakao/signout" , ( req , res ) => {
121- res . clearCookie ( "accessToken" ) ;
122- res . clearCookie ( "refreshToken" ) ;
123- res . redirect ( process . env . FRONTEND_URL || "http://localhost:3001" ) ;
124- } ) ;
125+ router . get (
126+ "/kakao/callback" ,
127+ passport . authenticate ( "kakao" , { failureRedirect : "/login" } ) ,
128+ handleOAuthCallback
129+ ) ;
130+
131+ router . get (
132+ "/google/callback" ,
133+ passport . authenticate ( "google" , { failureRedirect : "/login" } ) ,
134+ handleOAuthCallback
135+ ) ;
125136
126137export default router ;
0 commit comments