👽 Support other auth factors
🐛 Fix redirect url did not work
This commit is contained in:
parent
7600e3f93d
commit
80d3dac2b0
@ -8,6 +8,8 @@ import { useState } from 'react'
|
|||||||
import ErrorIcon from '@mui/icons-material/Error'
|
import ErrorIcon from '@mui/icons-material/Error'
|
||||||
import PasswordIcon from '@mui/icons-material/Password'
|
import PasswordIcon from '@mui/icons-material/Password'
|
||||||
import EmailIcon from '@mui/icons-material/Email'
|
import EmailIcon from '@mui/icons-material/Email'
|
||||||
|
import PinIcon from '@mui/icons-material/Pin'
|
||||||
|
import NotificationsActiveIcon from '@mui/icons-material/NotificationsActive'
|
||||||
|
|
||||||
export function SnLoginRouter({
|
export function SnLoginRouter({
|
||||||
ticket,
|
ticket,
|
||||||
@ -18,8 +20,13 @@ export function SnLoginRouter({
|
|||||||
factorList: SnAuthFactor[]
|
factorList: SnAuthFactor[]
|
||||||
onNext: (val: SnAuthFactor) => void
|
onNext: (val: SnAuthFactor) => void
|
||||||
}) {
|
}) {
|
||||||
const factorTypeIcons = [<PasswordIcon key="password-icon" />, <EmailIcon key="email-icon" />]
|
const factorTypeIcons = [
|
||||||
const factorTypeLabels = ['Password', 'Email verification code']
|
<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 [error, setError] = useState<string | null>(null)
|
||||||
const [loading, setLoading] = useState<boolean>(false)
|
const [loading, setLoading] = useState<boolean>(false)
|
||||||
|
@ -6,6 +6,7 @@ import { useUserStore } from 'solar-js-sdk'
|
|||||||
import { Box, Container, Typography } from '@mui/material'
|
import { Box, Container, Typography } from '@mui/material'
|
||||||
import { useRouter } from 'next/router'
|
import { useRouter } from 'next/router'
|
||||||
import { useState } from 'react'
|
import { useState } from 'react'
|
||||||
|
import { useSearchParams } from 'next/navigation'
|
||||||
|
|
||||||
export default function Login() {
|
export default function Login() {
|
||||||
const [period, setPeriod] = useState<number>(0)
|
const [period, setPeriod] = useState<number>(0)
|
||||||
@ -14,17 +15,12 @@ export default function Login() {
|
|||||||
const [factor, setFactor] = useState<SnAuthFactor | null>(null)
|
const [factor, setFactor] = useState<SnAuthFactor | null>(null)
|
||||||
|
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
|
const searchParams = useSearchParams()
|
||||||
const userStore = useUserStore()
|
const userStore = useUserStore()
|
||||||
|
|
||||||
function doCallback() {
|
function doCallback() {
|
||||||
if (router.query['redirect_url']) {
|
let redirectUrl = searchParams.get('redirect_url')
|
||||||
let redirectUrl: string
|
if (redirectUrl) {
|
||||||
if (Array.isArray(router.query['redirect_url'])) {
|
|
||||||
redirectUrl = router.query['redirect_url'][0]
|
|
||||||
} else {
|
|
||||||
redirectUrl = router.query['redirect_url'].toString()
|
|
||||||
}
|
|
||||||
|
|
||||||
if (redirectUrl.startsWith('/')) {
|
if (redirectUrl.startsWith('/')) {
|
||||||
router.push(redirectUrl)
|
router.push(redirectUrl)
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user