casualroom/apps/fenghuo/web/app/[locale]/auth/oidclogin/page.tsx

64 lines
2.3 KiB
TypeScript
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

'use client';
import { Button } from '@nice/ui/components/button'
import { oidcClient } from '@/lib/auth/oidc-client';
import { useEffect, useState } from 'react';
export default function AuthTestPage() {
const [redirectUri, setRedirectUri] = useState('');
useEffect(() => {
// 设置回调 URI
setRedirectUri(`${window.location.origin}/auth/callback`);
}, []);
const handleLogin = () => {
if (!redirectUri) return;
// 构建授权 URL
const authUrl = oidcClient.buildAuthorizationUrl({
redirectUri,
state: 'test-state',
scope: 'openid profile email',
});
// 保存状态到 sessionStorage用于回调验证
sessionStorage.setItem('oauth_state', 'test-state');
sessionStorage.setItem('oauth_redirect_uri', redirectUri);
// 跳转到授权页面
window.location.href = authUrl;
};
return (
<div className="flex items-center justify-center">
<div className="max-w-md w-full space-y-8">
<div>
<h2 className="mt-6 text-center text-3xl font-extrabold text-gray-900">
</h2>
<p className="mt-2 text-center text-sm text-gray-600">
</p>
</div>
<div className="mt-8 space-y-6">
<Button
onClick={handleLogin}
className="group relative w-full flex justify-center py-3 px-4 border border-transparent text-sm font-medium rounded-md text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500"
disabled={!redirectUri}
>
{!redirectUri ? '正在初始化...' : '统一身份认证登录'}
</Button>
</div>
{redirectUri && (
<div className="mt-4 text-xs text-gray-500 text-center">
<p>: {redirectUri}</p>
</div>
)}
</div>
</div>
);
}