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:
@@ -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";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user