From 80d3dac2b05d5996b55bc7d772d8f0334ee7a142 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Sun, 2 Feb 2025 22:31:46 +0800 Subject: [PATCH] :alien: Support other auth factors :bug: Fix redirect url did not work --- src/components/auth/SnLoginRouter.tsx | 11 +++++++++-- src/pages/auth/login.tsx | 12 ++++-------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/components/auth/SnLoginRouter.tsx b/src/components/auth/SnLoginRouter.tsx index fe566ad..784989e 100644 --- a/src/components/auth/SnLoginRouter.tsx +++ b/src/components/auth/SnLoginRouter.tsx @@ -8,6 +8,8 @@ import { useState } from 'react' import ErrorIcon from '@mui/icons-material/Error' import PasswordIcon from '@mui/icons-material/Password' import EmailIcon from '@mui/icons-material/Email' +import PinIcon from '@mui/icons-material/Pin' +import NotificationsActiveIcon from '@mui/icons-material/NotificationsActive' export function SnLoginRouter({ ticket, @@ -18,8 +20,13 @@ export function SnLoginRouter({ factorList: SnAuthFactor[] onNext: (val: SnAuthFactor) => void }) { - const factorTypeIcons = [, ] - const factorTypeLabels = ['Password', 'Email verification code'] + const factorTypeIcons = [ + , + , + , + , + ] + const factorTypeLabels = ['Password', 'Email verification code', 'Time-based OTP', 'In-app verification code'] const [error, setError] = useState(null) const [loading, setLoading] = useState(false) diff --git a/src/pages/auth/login.tsx b/src/pages/auth/login.tsx index b74ca61..f583d64 100644 --- a/src/pages/auth/login.tsx +++ b/src/pages/auth/login.tsx @@ -6,6 +6,7 @@ import { useUserStore } from 'solar-js-sdk' import { Box, Container, Typography } from '@mui/material' import { useRouter } from 'next/router' import { useState } from 'react' +import { useSearchParams } from 'next/navigation' export default function Login() { const [period, setPeriod] = useState(0) @@ -14,17 +15,12 @@ export default function Login() { const [factor, setFactor] = useState(null) const router = useRouter() + const searchParams = useSearchParams() const userStore = useUserStore() function doCallback() { - if (router.query['redirect_url']) { - let redirectUrl: string - if (Array.isArray(router.query['redirect_url'])) { - redirectUrl = router.query['redirect_url'][0] - } else { - redirectUrl = router.query['redirect_url'].toString() - } - + let redirectUrl = searchParams.get('redirect_url') + if (redirectUrl) { if (redirectUrl.startsWith('/')) { router.push(redirectUrl) } else {