34577d2d

By: Michael Lynch <git@mtlynch.io>

Use typed redirect paths in handlers

Make login's next value a RedirectPath so redirect targets stay validated and distinct from plain strings. Route handler redirects through a shared wrapper so only one boundary converts redirect targets back to strings.