feat(web): 增加单点登录分流与本地应急入口
开启统一认证后,正常登录入口直接跳转认证中心,并将本地账号入口收敛到 /login 应急页;未开启统一认证时继续保留工作台内原有登录方式。 影响范围仅限 Web 登录路由、认证入口展示和相关测试,不修改认证接口或 OpenAPI。风险主要在运行时身份状态判断,已通过 141 项前端测试、生产构建、无缓存类型检查及浏览器分支验证。
This commit is contained in:
@@ -25,8 +25,6 @@ export function AuthPanel(props: {
|
||||
oidcEnabled: boolean;
|
||||
onOIDCLogin: () => void;
|
||||
}) {
|
||||
const visibleTabs = props.oidcEnabled ? tabs.filter((tab) => tab.value !== 'register') : tabs;
|
||||
const visibleMode = props.oidcEnabled && props.authMode === 'register' ? 'login' : props.authMode;
|
||||
return (
|
||||
<section className="authShell" aria-label="登录">
|
||||
<Card className="authCard">
|
||||
@@ -37,23 +35,26 @@ export function AuthPanel(props: {
|
||||
</div>
|
||||
</CardHeader>
|
||||
<CardContent className="authContent">
|
||||
{props.oidcEnabled && (
|
||||
{props.oidcEnabled ? (
|
||||
<Button type="button" disabled={props.state === 'loading'} onClick={props.onOIDCLogin}>
|
||||
<LogIn size={15} />
|
||||
使用统一认证中心登录
|
||||
</Button>
|
||||
) : (
|
||||
<>
|
||||
<Tabs value={props.authMode} tabs={tabs} onValueChange={props.onAuthModeChange} />
|
||||
{props.authMode === 'login' && <LocalLoginForm {...props} />}
|
||||
{props.authMode === 'register' && <RegisterFormView {...props} />}
|
||||
{props.authMode === 'external' && <ExternalTokenForm {...props} />}
|
||||
</>
|
||||
)}
|
||||
<Tabs value={visibleMode} tabs={visibleTabs} onValueChange={props.onAuthModeChange} />
|
||||
{visibleMode === 'login' && <LoginFormView {...props} />}
|
||||
{visibleMode === 'register' && <RegisterFormView {...props} />}
|
||||
{visibleMode === 'external' && <ExternalTokenForm {...props} />}
|
||||
</CardContent>
|
||||
</Card>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
function LoginFormView(props: {
|
||||
export function LocalLoginForm(props: {
|
||||
loginForm: LoginForm;
|
||||
state: LoadState;
|
||||
onLoginChange: (value: LoginForm) => void;
|
||||
|
||||
Reference in New Issue
Block a user