1- import { defineEventHandler , sendRedirect , createError , getQuery , setCookie } from 'h3'
1+ import { defineEventHandler , sendRedirect , getQuery , setCookie } from 'h3'
22import type { ModuleOptions } from 'nuxt-users/utils'
33import { useRuntimeConfig } from '#imports'
4- import {
5- createGoogleOAuth2Client ,
6- getGoogleUserFromCode ,
4+ import type { H3Event } from 'h3'
5+ import {
6+ createGoogleOAuth2Client ,
7+ getGoogleUserFromCode ,
78 findOrCreateGoogleUser ,
8- createAuthTokenForUser
9+ createAuthTokenForUser
910} from '../../../../utils/google-oauth'
1011
1112export default defineEventHandler ( async ( event ) => {
@@ -15,7 +16,7 @@ export default defineEventHandler(async (event) => {
1516
1617 // Check if Google OAuth is configured
1718 if ( ! options . auth . google ) {
18- return sendRedirect ( event , options . auth . google ?. errorRedirect || '/login?error=oauth_not_configured' )
19+ return sendRedirect ( event , '/login?error=oauth_not_configured' )
1920 }
2021
2122 // Handle OAuth errors
@@ -47,6 +48,13 @@ export default defineEventHandler(async (event) => {
4748 // Find or create user in database
4849 const user = await findOrCreateGoogleUser ( googleUser , options )
4950
51+ // Check if user was not found and auto-registration is disabled
52+ if ( ! user ) {
53+ console . warn ( `[Nuxt Users] User not registered attempted Google OAuth login: ${ googleUser . email } ` )
54+ const errorRedirect = options . auth . google . errorRedirect || '/login?error=user_not_registered'
55+ return sendRedirect ( event , errorRedirect )
56+ }
57+
5058 // Check if user account is active
5159 if ( ! user . active ) {
5260 console . warn ( `[Nuxt Users] Inactive user attempted Google OAuth login: ${ user . email } ` )
@@ -68,32 +76,23 @@ export default defineEventHandler(async (event) => {
6876
6977 setCookie ( event , 'auth_token' , token , cookieOptions )
7078
71- // Update last login time
72- const { useDb } = await import ( '../../../../utils/db' )
73- const db = await useDb ( options )
74- await db . sql `
75- UPDATE {${ options . tables . users } }
76- SET last_login_at = CURRENT_TIMESTAMP
77- WHERE id = ${ user . id }
78- `
79-
8079 console . log ( `[Nuxt Users] Google OAuth login successful for user: ${ user . email } ` )
8180
8281 // Redirect to success page
8382 const successRedirect = options . auth . google . successRedirect || '/'
8483 return sendRedirect ( event , successRedirect )
85-
86- } catch ( error ) {
84+ }
85+ catch ( error ) {
8786 console . error ( '[Nuxt Users] Google OAuth callback error:' , error )
8887 const errorRedirect = options . auth . google ?. errorRedirect || '/login?error=oauth_failed'
8988 return sendRedirect ( event , errorRedirect )
9089 }
9190} )
9291
9392// Helper function to get request URL
94- function getRequestURL ( event : any ) {
93+ const getRequestURL = ( event : H3Event ) => {
9594 const headers = event . node . req . headers
9695 const host = headers . host || headers [ ':authority' ]
97- const protocol = headers [ 'x-forwarded-proto' ] || ( event . node . req . socket ?. encrypted ? 'https' : 'http' )
96+ const protocol = headers [ 'x-forwarded-proto' ] || 'https'
9897 return new URL ( `${ protocol } ://${ host } ` )
99- }
98+ }
0 commit comments