fix(giris): callback yalnız better-auth'un kabul ettiği yollarda takılır

better-auth 1.6.23 callback'i kendi göreli-yol kalkanından geçiriyor ve \w
ASCII olduğu için /rehber/ösym ya da /bolum/t%C4%B1p gibi yolları 403
INVALID_CALLBACK_URL ile reddediyordu: kullanıcı o sayfalardan hiç giriş
yapamıyordu. Callback artık yalnız auth'un da kabul edeceği yollarda
takılıyor, gerisinde sade /giris'e düşülüyor.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
bilalgursen
2026-09-22 01:36:59 +03:00
parent 1364f8cb43
commit 248a01042f

View File

@@ -21,11 +21,23 @@ import { Button } from "@/components/ui/button";
* ediliyor — cacheComponents açıkken dinamik parametreli rotalarda gereken
* sınır hazır (next/dist/docs/.../use-pathname.md).
*/
/**
* better-auth (1.6.23) callback'i kendi göreli-yol kalkanından geçiriyor:
* `^\/(?!\/|\\|%2f|%5c)[\w\-.+/@]*(?:\?…)?$`. `\w` ASCII olduğu için
* `/rehber/ösym` ya da yüzde-kodlanmış `/bolum/t%C4%B1p` gibi yollar
* **403 INVALID_CALLBACK_URL** ile reddediliyor ve kullanıcı o sayfadan hiç
* giriş yapamıyor (main'de callback hep "/" olduğu için bu yol yoktu).
* Bu yüzden callback'i ancak auth katmanının da kabul edeceği yollarda
* takıyoruz; gerisinde sade /giris'e düşüyoruz — bağlam kaybı, kırık giriş
* akışına yeğdir. Kalkan daraltılırsa (tek yer) buradaki de gevşetilebilir.
*/
const AUTH_GUVENLI_YOL = /^\/(?!\/|\\)[\w\-./+@]*$/;
export function GirisLinki() {
const pathname = usePathname();
// /giris kendine callback veremez (döngü); pathname yoksa sade hedef.
const href =
pathname && !pathname.startsWith("/giris")
pathname && !pathname.startsWith("/giris") && AUTH_GUVENLI_YOL.test(pathname)
? `/giris?callback=${encodeURIComponent(pathname)}`
: "/giris";