{isLoading &&
- Array.from({ length: OAUTH_PROVIDERS_COUNT }, (_v, i) => (
+ Array.from({ length: CAuth.OAUTH_PROVIDERS_COUNT }, (_v, i) => (
))}
{data?.map((item) => {
- const providerConfig = OAUTH_PROVIDERS[item.value];
-
return (
-
+ provider={item.value}
+ href={getRoute(item.value) as Route}
+ />
);
})}
diff --git a/src/pages/auth/oauth/ui/OAuthPage.tsx b/src/pages/auth/oauth/ui/OAuthPage.tsx
index 960533b..16613be 100644
--- a/src/pages/auth/oauth/ui/OAuthPage.tsx
+++ b/src/pages/auth/oauth/ui/OAuthPage.tsx
@@ -21,6 +21,8 @@ interface Props {
export async function OAuthPage({ searchParams }: Props) {
const { success, message, provider, startOAuth } = await searchParams;
+ // TODO: страница знает API
+
if (provider && startOAuth === 'true') {
redirect(`${env.NEXT_PUBLIC_API_BASE_URL}/auth/oauth/${provider}` as Route);
}
@@ -30,11 +32,13 @@ export async function OAuthPage({ searchParams }: Props) {
}
if (success === 'true') {
- redirect(routes.user.profile());
+ redirect(
+ `${routes.user.profile()}?success=true&message=${encodeURIComponent(message || 'Вход успешен')}`
+ );
}
const errorUrl = message
- ? `${routes.auth.signin()}?oauth_error=1&message=${encodeURIComponent(message)}`
+ ? `${routes.auth.signin()}?success=true&message=${encodeURIComponent(message)}`
: routes.auth.signin();
redirect(errorUrl as Route);
diff --git a/src/pages/auth/signin/model/useAuthRedirectMessage.ts b/src/pages/auth/signin/model/useAuthRedirectMessage.ts
deleted file mode 100644
index 8d64438..0000000
--- a/src/pages/auth/signin/model/useAuthRedirectMessage.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-'use client';
-import { useRouter, useSearchParams } from 'next/navigation';
-import { useEffect } from 'react';
-import { routes } from 'shared/config';
-import { toast } from 'sonner';
-
-export function useAuthRedirectMessage() {
- const params = useSearchParams();
- const router = useRouter();
-
- useEffect(() => {
- const error = params?.get('oauth_error');
- const message = params?.get('message');
-
- if (!error) return;
- toast.error(message ?? 'Authorization failed');
- router.replace(routes.auth.signin());
- }, [params, router]);
-}
diff --git a/src/pages/auth/signin/ui/AuthRedirectHandler.tsx b/src/pages/auth/signin/ui/AuthRedirectHandler.tsx
deleted file mode 100644
index 2b5a8ee..0000000
--- a/src/pages/auth/signin/ui/AuthRedirectHandler.tsx
+++ /dev/null
@@ -1,7 +0,0 @@
-'use client';
-import { useAuthRedirectMessage } from '../model/useAuthRedirectMessage';
-
-export function AuthRedirectHandler() {
- useAuthRedirectMessage();
- return null;
-}
diff --git a/src/pages/auth/signin/ui/SigninPage.tsx b/src/pages/auth/signin/ui/SigninPage.tsx
index 70cbad5..fd6c09b 100644
--- a/src/pages/auth/signin/ui/SigninPage.tsx
+++ b/src/pages/auth/signin/ui/SigninPage.tsx
@@ -6,16 +6,11 @@ import { routes } from 'shared/config';
import { AccessToken } from 'shared/api';
import { toast } from 'sonner';
import { useRouter } from 'next/navigation';
-import { Suspense } from 'react';
-import { AuthRedirectHandler } from './AuthRedirectHandler';
function SigninPage() {
const router = useRouter();
return (
<>
-