@@ -7,6 +7,7 @@ import { OAuth2Client } from 'google-auth-library';
77import { oauthValues } from '../config' ;
88import { ModelType } from 'dynamoose/dist/General' ;
99import { Item } from 'dynamoose/dist/Item' ;
10+ import { UnregisteredUserType } from '../util/types' ;
1011
1112const router = express . Router ( ) ;
1213
@@ -50,12 +51,14 @@ function getUserType(table: string) {
5051 * @param model - The model to query (Rider, Admin, or Driver).
5152 * @param table - Name of the user table (used to derive userType).
5253 * @param email - The email address to look up.
54+ * @param userInfo - Optional user info from Google OAuth (name, etc.).
5355 */
5456function findUserAndSendToken (
5557 res : express . Response ,
5658 model : ModelType < Item > ,
5759 table : string ,
58- email : string
60+ email : string ,
61+ userInfo ?: Partial < UnregisteredUserType >
5962) {
6063 model . scan ( { email : { eq : email } } ) . exec ( ( err , data ) => {
6164 if ( err ) {
@@ -95,14 +98,35 @@ function findUserAndSendToken(
9598 . status ( 200 )
9699 . send ( { jwt : jwt . sign ( userPayload , process . env . JWT_SECRET ! ) } ) ;
97100 } else {
98- res . status ( 400 ) . send ( { err : 'User not found' } ) ;
101+ const unregisteredUser : UnregisteredUserType = {
102+ email : email ,
103+ name : userInfo ?. name || 'User' ,
104+ } ;
105+ res . status ( 400 ) . send ( {
106+ err : 'User not found' ,
107+ user : unregisteredUser ,
108+ } ) ;
99109 }
100110 } else {
101- res . status ( 400 ) . send ( { err : 'User not found' } ) ;
111+ const unregisteredUser : UnregisteredUserType = {
112+ email : email ,
113+ name : userInfo ?. name || 'User' ,
114+ } ;
115+ res . status ( 400 ) . send ( {
116+ err : 'User not found' ,
117+ user : unregisteredUser ,
118+ } ) ;
102119 }
103120 } ) ;
104121 } else {
105- res . status ( 400 ) . send ( { err : 'User not found' } ) ;
122+ const unregisteredUser : UnregisteredUserType = {
123+ email : email ,
124+ name : userInfo ?. name || 'User' ,
125+ } ;
126+ res . status ( 400 ) . send ( {
127+ err : 'User not found' ,
128+ user : unregisteredUser ,
129+ } ) ;
106130 }
107131 } ) ;
108132}
@@ -131,10 +155,12 @@ router.post('/', async (req, res) => {
131155 } ) ;
132156 const idToken = req . body . idToken || ( await getIdToken ( client , code ) ) ;
133157 const result = await client . verifyIdToken ( { idToken, audience } ) ;
134- const email = result . getPayload ( ) ?. email ;
158+ const payload = result . getPayload ( ) ;
159+ const email = payload ?. email ;
160+ const name = payload ?. name ;
135161 const model = getModel ( table ) ;
136162 if ( model && email ) {
137- findUserAndSendToken ( res , model , table , email ) ;
163+ findUserAndSendToken ( res , model , table , email , { name } ) ;
138164 } else if ( ! model ) {
139165 res . status ( 400 ) . send ( { err : 'Table not found' } ) ;
140166 } else if ( ! email ) {
@@ -154,7 +180,7 @@ if (process.env.NODE_ENV === 'test') {
154180 try {
155181 const model = getModel ( table ) ;
156182 if ( model && email ) {
157- findUserAndSendToken ( res , model , table , email ) ;
183+ findUserAndSendToken ( res , model , table , email , { name : email } ) ;
158184 } else if ( ! model ) {
159185 res . status ( 400 ) . send ( { err : 'Table not found' } ) ;
160186 } else if ( ! email ) {
0 commit comments