diff --git a/src/routes/oauth/+server.ts b/src/routes/oauth/+server.ts index 5a43a302..d5055bfc 100644 --- a/src/routes/oauth/+server.ts +++ b/src/routes/oauth/+server.ts @@ -1,60 +1,60 @@ -import { redirect } from '@sveltejs/kit'; - +import { redirect } from "@sveltejs/kit"; export const config = { - runtime: 'nodejs20.x', - }; + runtime: "nodejs20.x", +}; -export const GET = async ({locals, url, cookies}) => { - //console.log(url.searchParams); - const redirectURL = `${url.origin}/oauth`; - //const expectedState = cookies.get('state'); - //const expectedVerifier = cookies.get('verifier'); - let newUser; +export const GET = async ({ locals, url, cookies }) => { + //console.log(url.searchParams); + const redirectURL = `${url.origin}/oauth`; + //const expectedState = cookies.get('state'); + //const expectedVerifier = cookies.get('verifier'); + let newUser; - let expectedState = cookies?.get('state'); - let expectedVerifier = cookies?.get('verifier'); - let providerSelected = cookies?.get('provider'); + let expectedState = cookies?.get("state"); + let expectedVerifier = cookies?.get("verifier"); + let providerSelected = cookies?.get("provider"); + const state = await url.searchParams.get("state"); + const code = await url.searchParams.get("code"); - const state = await url.searchParams.get('state'); - const code = await url.searchParams.get('code'); + //console.log('returned state',state) + //console.log('returned code',code) - //console.log('returned state',state) - //console.log('returned code',code) + //as a side effect this will generate a new code verifier, hence why we need to pass the verifier back in through the cookie + const authMethods = await locals.pb?.collection("users")?.listAuthMethods(); - //as a side effect this will generate a new code verifier, hence why we need to pass the verifier back in through the cookie - const authMethods = await locals.pb?.collection('users')?.listAuthMethods(); + if (!authMethods?.authProviders) { + console.log("No Auth Providers"); + redirect(301, "/register"); + } - - if (!authMethods?.authProviders) { - console.log('No Auth Providers'); - redirect(301, '/register'); - } + const targetItem = authMethods.authProviders.findIndex( + (item) => item.name === providerSelected + ); + const provider = authMethods.authProviders[targetItem]; - const targetItem = authMethods.authProviders.findIndex(item => item.name === providerSelected); - const provider = authMethods.authProviders[targetItem]; + if (!provider) { + console.log("Provider Not Found"); + redirect(301, "/register"); + } - if (!provider) { - console.log('Provider Not Found'); - redirect(301, '/register'); - } + if (expectedState !== state) { + console.log("Returned State Does not Match Expected", expectedState, state); + redirect(301, "/register"); + } - if (expectedState !== state) { - console.log('Returned State Does not Match Expected', expectedState, state); - redirect(301, '/register'); - } + try { + //console.log(provider) - try { - //console.log(provider) - - newUser = await locals.pb?.collection('users') - .authWithOAuth2Code(provider.name, code, expectedVerifier, redirectURL); - + newUser = await locals.pb + ?.collection("users") + .authWithOAuth2Code(provider.name, code, expectedVerifier, redirectURL); - //oauthUsername = generateUsername(newUser['meta']['name'].split(' ').join('')).toLowerCase(); - - // Check if user was created or existed already + //oauthUsername = generateUsername(newUser['meta']['name'].split(' ').join('')).toLowerCase(); + + // Check if user was created or existed already + /* if(newUser?.meta?.isNew === true) { await locals.pb?.collection('users').update( newUser['record']['id'], { @@ -62,25 +62,20 @@ export const GET = async ({locals, url, cookies}) => { 'tier': 'Pro', //Give new users a free trial for the Pro Subscription }); } - - + */ + } catch (err) { + console.log("Error logging in with OAuth2 user", err); + redirect(302, "/register"); + } - } catch (err) { - console.log('Error logging in with OAuth2 user', err); - redirect(302, "/register"); + if (cookies?.get("path")) { + redirect(301, cookies?.get("path")); + } else { + redirect(301, "/"); + } - } + //Login user automatically - if(cookies?.get('path')) { - redirect(301, cookies?.get('path')); - } else { - redirect(301,"/"); - } - - //Login user automatically - - //const avatarUrl = newUser['meta']['avatarUrl']; - //console.log(avatarUrl); - - -}; \ No newline at end of file + //const avatarUrl = newUser['meta']['avatarUrl']; + //console.log(avatarUrl); +};