Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions app/components/SignInButton.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,21 @@ import { Button } from "@/app/components/ui/button";

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

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

return (
Expand All @@ -30,7 +30,7 @@ export function SignInButton({
data-umami-event="auth_click"
data-umami-event-action="signin"
data-umami-event-location="header"
data-umami-event-provider={provider}
data-umami-event-provider={provider ?? "choose"}
>
{label}
</Button>
Expand Down
Loading