package middleware import ( "dk/internal/models/users" "dk/internal/router" "strings" "github.com/valyala/fasthttp" ) // RequireFighting ensures the user is in a fight when accessing fight routes func RequireFighting() router.Middleware { return func(next router.Handler) router.Handler { return func(ctx router.Ctx, params []string) { user, ok := ctx.UserValue("user").(*users.User) if !ok || user == nil { ctx.SetStatusCode(fasthttp.StatusUnauthorized) ctx.SetBodyString("Not authenticated") return } if !user.IsFighting() { ctx.Redirect("/", 303) return } next(ctx, params) } } } // HandleFightRedirect redirects users to appropriate locations based on fight status func HandleFightRedirect() router.Middleware { return func(next router.Handler) router.Handler { return func(ctx router.Ctx, params []string) { user, ok := ctx.UserValue("user").(*users.User) if !ok || user == nil { next(ctx, params) return } currentPath := string(ctx.URI().Path()) // If user is fighting and not on fight page, redirect to fight if user.IsFighting() && !strings.HasPrefix(currentPath, "/fight") { ctx.Redirect("/fight", 303) return } // If user is not fighting and on fight page, redirect to home if !user.IsFighting() && strings.HasPrefix(currentPath, "/fight") { ctx.Redirect("/", 303) return } next(ctx, params) } } }