Error handlers get Nothing for current route
This commit is contained in:
parent
1aa19bcf92
commit
39818c8f57
@ -234,11 +234,12 @@ toWaiApp' y segments env = do
|
|||||||
render u = fromMaybe
|
render u = fromMaybe
|
||||||
(fullRender (approot y) (formatPathSegments site) u)
|
(fullRender (approot y) (formatPathSegments site) u)
|
||||||
(urlRenderOverride y u)
|
(urlRenderOverride y u)
|
||||||
|
let errorHandler' = localNoCurrent . errorHandler
|
||||||
rr <- parseWaiRequest env session'
|
rr <- parseWaiRequest env session'
|
||||||
let h = do
|
let h = do
|
||||||
onRequest
|
onRequest
|
||||||
case eurl of
|
case eurl of
|
||||||
Left _ -> errorHandler NotFound
|
Left _ -> errorHandler' NotFound
|
||||||
Right url -> do
|
Right url -> do
|
||||||
isWrite <- isWriteRequest url
|
isWrite <- isWriteRequest url
|
||||||
ar <- isAuthorized url isWrite
|
ar <- isAuthorized url isWrite
|
||||||
@ -253,10 +254,10 @@ toWaiApp' y segments env = do
|
|||||||
redirect RedirectTemporary url'
|
redirect RedirectTemporary url'
|
||||||
Unauthorized s -> permissionDenied s
|
Unauthorized s -> permissionDenied s
|
||||||
case handleSite site render url method of
|
case handleSite site render url method of
|
||||||
Nothing -> errorHandler $ BadMethod method
|
Nothing -> errorHandler' $ BadMethod method
|
||||||
Just h' -> h'
|
Just h' -> h'
|
||||||
let eurl' = either (const Nothing) Just eurl
|
let eurl' = either (const Nothing) Just eurl
|
||||||
let eh er = runHandler (errorHandler er) render eurl' id y id
|
let eh er = runHandler (errorHandler' er) render eurl' id y id
|
||||||
let ya = runHandler h render eurl' id y id
|
let ya = runHandler h render eurl' id y id
|
||||||
(s, hs, ct, c, sessionFinal) <- unYesodApp ya eh rr types
|
(s, hs, ct, c, sessionFinal) <- unYesodApp ya eh rr types
|
||||||
let sessionVal = encodeSession key' exp' host sessionFinal
|
let sessionVal = encodeSession key' exp' host sessionFinal
|
||||||
|
|||||||
@ -66,6 +66,7 @@ module Yesod.Handler
|
|||||||
, runHandler
|
, runHandler
|
||||||
, YesodApp (..)
|
, YesodApp (..)
|
||||||
, toMasterHandler
|
, toMasterHandler
|
||||||
|
, localNoCurrent
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Prelude hiding (catch)
|
import Prelude hiding (catch)
|
||||||
@ -438,3 +439,7 @@ data RedirectType = RedirectPermanent
|
|||||||
| RedirectTemporary
|
| RedirectTemporary
|
||||||
| RedirectSeeOther
|
| RedirectSeeOther
|
||||||
deriving (Show, Eq)
|
deriving (Show, Eq)
|
||||||
|
|
||||||
|
localNoCurrent :: GHandler s m a -> GHandler s m a
|
||||||
|
localNoCurrent =
|
||||||
|
GHandler . local (\hd -> hd { handlerRoute = Nothing }) . unGHandler
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user