Skip to content

Commit ccfd923

Browse files
fix(auth): header "Sign In" 跳登录选择页而非直奔 GitHub
#382 把 GitHub/Discord 两个按钮放在了 /login 页,但 header 的 "Sign In" (AuthNav 里 <SignInButton /> 无 provider)仍直跳 /oauth/render/github, 用户点了就直奔 GitHub、根本看不到 Discord 选项。 改:SignInButton 不传 provider 时跳 /login 选择页;登录页两个按钮传了 provider 仍直跳对应授权。header 无 props 调用自动获得"先选后登"。
1 parent a1f26d4 commit ccfd923

1 file changed

Lines changed: 7 additions & 7 deletions

File tree

app/components/SignInButton.tsx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,21 @@ import { Button } from "@/app/components/ui/button";
44

55
interface SignInButtonProps {
66
className?: string;
7-
// 默认 github(header 处无 props 调用不变);登录页可传 discord。
7+
// 传了 provider(登录页两个按钮)→ 直跳该 provider 授权;
8+
// 不传(header 的 "Sign In")→ 跳 /login 让用户在 GitHub / Discord 间选。
89
provider?: "github" | "discord";
910
label?: string;
1011
}
1112

1213
export function SignInButton({
1314
className,
14-
provider = "github",
15+
provider,
1516
label = "SignIn",
1617
}: SignInButtonProps) {
17-
// 同源跳到 /oauth/render/{provider},经 next.config.mjs 的 rewrite 代理到后端。
18-
// 好处:开发环境后端端口改来改去都不用改前端;302 由 Next.js 透传给浏览器,
19-
// 最终跳到 provider 授权页。各 provider 的 OAuth app 回调 URL 决定返回的前端地址。
18+
// provider 已定:同源跳 /oauth/render/{provider},经 next.config rewrite 代理到后端。
19+
// provider 未定:跳 /login 选择页(middleware 会补 locale 前缀)。
2020
const handleSignIn = () => {
21-
window.location.href = `/oauth/render/${provider}`;
21+
window.location.href = provider ? `/oauth/render/${provider}` : "/login";
2222
};
2323

2424
return (
@@ -30,7 +30,7 @@ export function SignInButton({
3030
data-umami-event="auth_click"
3131
data-umami-event-action="signin"
3232
data-umami-event-location="header"
33-
data-umami-event-provider={provider}
33+
data-umami-event-provider={provider ?? "choose"}
3434
>
3535
{label}
3636
</Button>

0 commit comments

Comments
 (0)