headerMessagesMiddleware
This commit is contained in:
parent
819ec36073
commit
efac923cc2
@ -83,6 +83,8 @@ import Data.Bits (Bits(zeroBits))
|
|||||||
|
|
||||||
import Network.Wai.Parse (lbsBackEnd)
|
import Network.Wai.Parse (lbsBackEnd)
|
||||||
|
|
||||||
|
import qualified Data.Aeson as JSON
|
||||||
|
|
||||||
|
|
||||||
instance DisplayAble b => DisplayAble (E.CryptoID a b) where
|
instance DisplayAble b => DisplayAble (E.CryptoID a b) where
|
||||||
display = display . ciphertext
|
display = display . ciphertext
|
||||||
@ -814,7 +816,7 @@ instance Yesod UniWorX where
|
|||||||
-- b) Validates that incoming write requests include that token in either a header or POST parameter.
|
-- b) Validates that incoming write requests include that token in either a header or POST parameter.
|
||||||
-- To add it, chain it together with the defaultMiddleware: yesodMiddleware = defaultYesodMiddleware . defaultCsrfMiddleware
|
-- To add it, chain it together with the defaultMiddleware: yesodMiddleware = defaultYesodMiddleware . defaultCsrfMiddleware
|
||||||
-- For details, see the CSRF documentation in the Yesod.Core.Handler module of the yesod-core package.
|
-- For details, see the CSRF documentation in the Yesod.Core.Handler module of the yesod-core package.
|
||||||
yesodMiddleware = defaultYesodMiddleware . normalizeRouteMiddleware . defaultCsrfMiddleware . updateFavouritesMiddleware
|
yesodMiddleware = defaultYesodMiddleware . normalizeRouteMiddleware . defaultCsrfMiddleware . updateFavouritesMiddleware . headerMessagesMiddleware
|
||||||
where
|
where
|
||||||
updateFavouritesMiddleware :: Handler a -> Handler a
|
updateFavouritesMiddleware :: Handler a -> Handler a
|
||||||
updateFavouritesMiddleware handler = (*> handler) . runMaybeT $ do
|
updateFavouritesMiddleware handler = (*> handler) . runMaybeT $ do
|
||||||
@ -854,6 +856,14 @@ instance Yesod UniWorX where
|
|||||||
when changed $ do
|
when changed $ do
|
||||||
$logDebugS "normalizeRouteMiddleware" [st|Redirecting to #{tshow route'}|]
|
$logDebugS "normalizeRouteMiddleware" [st|Redirecting to #{tshow route'}|]
|
||||||
redirectWith movedPermanently301 route'
|
redirectWith movedPermanently301 route'
|
||||||
|
headerMessagesMiddleware :: Handler a -> Handler a
|
||||||
|
headerMessagesMiddleware handler = (*> handler) . runMaybeT $ do
|
||||||
|
isModal <- hasCustomHeader HeaderIsModal
|
||||||
|
dbTableShortcircuit <- hasCustomHeader HeaderDBTableShortcircuit
|
||||||
|
guard $ isModal || dbTableShortcircuit
|
||||||
|
|
||||||
|
msgs <- MaybeT $ mapM (\(msgState, content) -> Message <$> fromPathPiece msgState <*> Just content) <$> getMessages
|
||||||
|
addCustomHeader HeaderAlerts . decodeUtf8 $ JSON.encode msgs
|
||||||
|
|
||||||
-- Since we implement `errorHandler` ourselves we don't need `defaultMessageWidget`
|
-- Since we implement `errorHandler` ourselves we don't need `defaultMessageWidget`
|
||||||
defaultMessageWidget _title _body = error "defaultMessageWidget: undefined"
|
defaultMessageWidget _title _body = error "defaultMessageWidget: undefined"
|
||||||
|
|||||||
@ -117,6 +117,7 @@ postAdminTestR = do
|
|||||||
tell . pure $ Message Success [shamlet|Email-test gestartet (Job ##{tshow (fromSqlKey jId)})|]
|
tell . pure $ Message Success [shamlet|Email-test gestartet (Job ##{tshow (fromSqlKey jId)})|]
|
||||||
return jId
|
return jId
|
||||||
writeJobCtl $ JobCtlPerform jId
|
writeJobCtl $ JobCtlPerform jId
|
||||||
|
addMessage Warning [shamlet|Inkorrekt ausgegebener Alert|] -- For testing alert handling when short circuiting; for proper (not fallback-solution) handling always use `tell` within `formResultModal`
|
||||||
|
|
||||||
let emailWidget' = wrapForm emailWidget def
|
let emailWidget' = wrapForm emailWidget def
|
||||||
{ formAction = Just . SomeRoute $ AdminTestR
|
{ formAction = Just . SomeRoute $ AdminTestR
|
||||||
|
|||||||
@ -624,10 +624,10 @@ takeSessionJson key = lookupSessionJson key <* deleteSession (toPathPiece key)
|
|||||||
-- Moved to Utils.Parameters
|
-- Moved to Utils.Parameters
|
||||||
|
|
||||||
---------------------------------
|
---------------------------------
|
||||||
-- Custom HTTP Request-Headers --
|
-- Custom HTTP Headers --
|
||||||
---------------------------------
|
---------------------------------
|
||||||
|
|
||||||
data CustomHeader = HeaderIsModal | HeaderDBTableShortcircuit
|
data CustomHeader = HeaderIsModal | HeaderDBTableShortcircuit | HeaderAlerts
|
||||||
deriving (Eq, Ord, Enum, Bounded, Read, Show, Generic)
|
deriving (Eq, Ord, Enum, Bounded, Read, Show, Generic)
|
||||||
|
|
||||||
instance Universe CustomHeader
|
instance Universe CustomHeader
|
||||||
@ -640,6 +640,10 @@ lookupCustomHeader ident = (>>= fromPathPiece . decodeUtf8) <$> lookupHeader (CI
|
|||||||
hasCustomHeader :: MonadHandler m => CustomHeader -> m Bool
|
hasCustomHeader :: MonadHandler m => CustomHeader -> m Bool
|
||||||
hasCustomHeader ident = isJust <$> lookupHeader (CI.mk . encodeUtf8 $ toPathPiece ident)
|
hasCustomHeader ident = isJust <$> lookupHeader (CI.mk . encodeUtf8 $ toPathPiece ident)
|
||||||
|
|
||||||
|
addCustomHeader, replaceOrAddCustomHeader :: (MonadHandler m, PathPiece payload) => CustomHeader -> payload -> m ()
|
||||||
|
addCustomHeader ident payload = addHeader (toPathPiece ident) (toPathPiece payload)
|
||||||
|
replaceOrAddCustomHeader ident payload = replaceOrAddHeader (toPathPiece ident) (toPathPiece payload)
|
||||||
|
|
||||||
------------------
|
------------------
|
||||||
-- Cryptography --
|
-- Cryptography --
|
||||||
------------------
|
------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user