66 lines
1.8 KiB
TypeScript
66 lines
1.8 KiB
TypeScript
'use client'
|
||
import {Button} from '@/components/ui/button'
|
||
import {Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger} from '@/components/ui/dialog'
|
||
import {useRouter} from 'next/navigation'
|
||
import {useState} from 'react'
|
||
|
||
interface RealnameAuthDialogProps {
|
||
hasAuthenticated: boolean
|
||
triggerClassName?: string
|
||
open?: boolean
|
||
onOpenChange?: (open: boolean) => void
|
||
onSuccess?: () => void
|
||
}
|
||
|
||
export function RealnameAuthDialog({
|
||
hasAuthenticated,
|
||
triggerClassName,
|
||
open,
|
||
onOpenChange,
|
||
onSuccess,
|
||
}: RealnameAuthDialogProps) {
|
||
const [internalOpen, setInternalOpen] = useState(false)
|
||
const router = useRouter()
|
||
|
||
const actualOpen = open !== undefined ? open : internalOpen
|
||
const actualOnOpenChange = onOpenChange || setInternalOpen
|
||
|
||
if (hasAuthenticated) {
|
||
return null
|
||
}
|
||
|
||
return (
|
||
<Dialog open={actualOpen} onOpenChange={actualOnOpenChange}>
|
||
<DialogTrigger asChild>
|
||
<Button theme="outline" className={triggerClassName || 'w-24'}>
|
||
去认证
|
||
</Button>
|
||
</DialogTrigger>
|
||
<DialogContent>
|
||
<DialogHeader>
|
||
<DialogTitle>实名认证</DialogTitle>
|
||
</DialogHeader>
|
||
<div className="py-4 space-y-4">
|
||
<p>为了保障您的账户安全和正常使用服务,请您尽快完成实名认证</p>
|
||
<div className="flex justify-end gap-2">
|
||
<Button
|
||
theme="outline"
|
||
onClick={() => actualOnOpenChange(false)}
|
||
>
|
||
稍后再说
|
||
</Button>
|
||
<Button
|
||
onClick={() => {
|
||
router.push('/admin/identify')
|
||
onSuccess?.()
|
||
}}
|
||
>
|
||
立即认证
|
||
</Button>
|
||
</div>
|
||
</div>
|
||
</DialogContent>
|
||
</Dialog>
|
||
)
|
||
}
|