👽 Support other auth factors

🐛 Fix redirect url did not work
This commit is contained in:
LittleSheep 2025-02-02 22:31:46 +08:00
parent 7600e3f93d
commit 80d3dac2b0
2 changed files with 13 additions and 10 deletions

View File

@ -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 = [<PasswordIcon key="password-icon" />, <EmailIcon key="email-icon" />]
const factorTypeLabels = ['Password', 'Email verification code']
const factorTypeIcons = [
<PasswordIcon key="password-icon" />,
<EmailIcon key="email-icon" />,
<PinIcon key="pin-icon" />,
<NotificationsActiveIcon key="notification-icon" />,
]
const factorTypeLabels = ['Password', 'Email verification code', 'Time-based OTP', 'In-app verification code']
const [error, setError] = useState<string | null>(null)
const [loading, setLoading] = useState<boolean>(false)

View File

@ -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<number>(0)
@ -14,17 +15,12 @@ export default function Login() {
const [factor, setFactor] = useState<SnAuthFactor | null>(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 {