mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-08-28 05:27:24 +00:00
Pass state param through auth process
This commit is contained in:
parent
1acc88c0a2
commit
331c26afec
4 changed files with 30 additions and 8 deletions
|
|
@ -9,19 +9,19 @@ import { DeepLink } from './DeepLink';
|
|||
export default async function Page(params: {
|
||||
searchParams: { state?: string };
|
||||
}) {
|
||||
const { userId } = await auth();
|
||||
const { state } = await params.searchParams;
|
||||
|
||||
if (!userId) {
|
||||
redirect('/sign-in');
|
||||
if (!state) {
|
||||
redirect(`/sign-in`);
|
||||
}
|
||||
|
||||
const code = await getSignInToken(userId);
|
||||
const { userId } = await auth();
|
||||
const code = userId ? await getSignInToken(userId) : undefined;
|
||||
|
||||
if (!code) {
|
||||
redirect('/sign-in');
|
||||
redirect(`/sign-in?state=${state}`);
|
||||
}
|
||||
|
||||
const { state = '' } = await params.searchParams;
|
||||
const searchParams = new URLSearchParams({ state, code });
|
||||
const path = `/auth/clerk/callback?${searchParams.toString()}`;
|
||||
const vsCodeUrl = new URL(path, Env.VSCODE_EXTENSION_BASE_URL);
|
||||
|
|
@ -1,5 +1,7 @@
|
|||
'use client';
|
||||
|
||||
import { useMemo } from 'react';
|
||||
import { useSearchParams } from 'next/navigation';
|
||||
import Link from 'next/link';
|
||||
import { useTheme } from 'next-themes';
|
||||
import { dark } from '@clerk/themes';
|
||||
|
|
@ -10,13 +12,22 @@ import { Logo } from '@/components/layout';
|
|||
export const SignIn = () => {
|
||||
const { resolvedTheme } = useTheme();
|
||||
const baseTheme = resolvedTheme === 'dark' ? dark : undefined;
|
||||
const searchParams = useSearchParams();
|
||||
|
||||
const forceRedirectUrl = useMemo(() => {
|
||||
const state = searchParams.get('state');
|
||||
return state ? `/extension/sign-in?state=${state}` : undefined;
|
||||
}, [searchParams]);
|
||||
|
||||
return (
|
||||
<div className="flex flex-col gap-8 h-screen w-full items-center justify-center">
|
||||
<Link href="/">
|
||||
<Logo />
|
||||
</Link>
|
||||
<ClerkSignIn appearance={{ baseTheme }} />
|
||||
<ClerkSignIn
|
||||
appearance={{ baseTheme }}
|
||||
forceRedirectUrl={forceRedirectUrl}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
'use client';
|
||||
|
||||
import { useMemo } from 'react';
|
||||
import { useSearchParams } from 'next/navigation';
|
||||
import Link from 'next/link';
|
||||
import { useTheme } from 'next-themes';
|
||||
import { dark } from '@clerk/themes';
|
||||
|
|
@ -10,13 +12,22 @@ import { Logo } from '@/components/layout';
|
|||
export const SignUp = () => {
|
||||
const { resolvedTheme } = useTheme();
|
||||
const baseTheme = resolvedTheme === 'dark' ? dark : undefined;
|
||||
const searchParams = useSearchParams();
|
||||
|
||||
const forceRedirectUrl = useMemo(() => {
|
||||
const state = searchParams.get('state');
|
||||
return state ? `/extension/sign-in?state=${state}` : undefined;
|
||||
}, [searchParams]);
|
||||
|
||||
return (
|
||||
<div className="flex flex-col gap-8 h-screen w-full items-center justify-center">
|
||||
<Link href="/">
|
||||
<Logo />
|
||||
</Link>
|
||||
<ClerkSignUp appearance={{ baseTheme }} />
|
||||
<ClerkSignUp
|
||||
appearance={{ baseTheme }}
|
||||
forceRedirectUrl={forceRedirectUrl}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue