chore(error): remove default layout from error handler

This commit is contained in:
Steffen Jost 2023-04-24 13:45:10 +00:00
parent 5720ba58c8
commit 54a956dc36

View File

@ -72,39 +72,51 @@ errorHandler err = do
setSessionJson SessionError sessErr setSessionJson SessionError sessErr
selectRep $ do selectRep $ do
provideRep $ do -- provideRep $ do
mr <- getMessageRender -- mr <- getMessageRender
let -- let
encrypted :: Text -> WidgetFor UniWorX () -> WidgetFor UniWorX () -- encrypted :: Text -> WidgetFor UniWorX () -> WidgetFor UniWorX ()
encrypted plaintextJson plaintext = do -- encrypted plaintextJson plaintext = do
let displayEncrypted ciphertext = -- let displayEncrypted ciphertext =
[whamlet| -- [whamlet|
$newline never -- $newline never
<p>_{MsgErrorResponseEncrypted} -- <p>_{MsgErrorResponseEncrypted}
<pre .literal-error> -- <pre .literal-error>
#{ciphertext} -- #{ciphertext}
|] -- |]
if -- if
| isEncrypted && shouldEncrypt -> displayEncrypted plaintextJson -- | isEncrypted && shouldEncrypt -> displayEncrypted plaintextJson
| shouldEncrypt -> displayEncrypted =<< encodedSecretBox SecretBoxPretty plaintextJson -- | shouldEncrypt -> displayEncrypted =<< encodedSecretBox SecretBoxPretty plaintextJson
| otherwise -> plaintext -- | otherwise -> plaintext
errPage = case err of -- errPage = case err of
NotFound -> [whamlet|<p>_{MsgErrorResponseNotFound}|] -- NotFound -> [whamlet|<p>_{MsgErrorResponseNotFound}|]
InternalError err' -- InternalError err'
| "Crash Button" `isPrefixOf` err' -> liftIO $ exitImmediately ExitSuccess -- DEBUG: just for Testing -- | "Crash Button" `isPrefixOf` err' -> liftIO $ exitImmediately ExitSuccess -- DEBUG: just for Testing
| otherwise -> encrypted err' [whamlet|<p .literal-error>#{fromMaybe err' decrypted}|] -- | otherwise -> encrypted err' [whamlet|<p .literal-error>#{fromMaybe err' decrypted}|]
InvalidArgs errs -> [whamlet| -- InvalidArgs errs -> [whamlet|
<ul> -- <ul>
$forall err' <- errs -- $forall err' <- errs
<li .literal-error> -- <li .literal-error>
#{err'} -- #{err'}
|] -- |]
NotAuthenticated -> [whamlet|<p>_{MsgErrorResponseNotAuthenticated}|] -- NotAuthenticated -> [whamlet|<p>_{MsgErrorResponseNotAuthenticated}|]
PermissionDenied err' -> [whamlet|<p .errMsg>#{err'}|] -- PermissionDenied err' -> [whamlet|<p .errMsg>#{err'}|]
BadMethod method -> [whamlet|<p>_{MsgErrorResponseBadMethod (decodeUtf8 method)}|] -- BadMethod method -> [whamlet|<p>_{MsgErrorResponseBadMethod (decodeUtf8 method)}|]
siteLayout (toWgt . mr $ ErrorResponseTitle err) $ do -- siteLayout (toWgt . mr $ ErrorResponseTitle err) $ do
errPage -- errPage
provideRep $ case err of
PermissionDenied err' -> return err'
InternalError err'
| isEncrypted && shouldEncrypt -> do
addHeader "Encrypted-Error-Message" "True"
return err'
| shouldEncrypt -> do
addHeader "Encrypted-Error-Message" "True"
encodedSecretBox SecretBoxPretty err'
| otherwise -> return $ fromMaybe err' decrypted
InvalidArgs errs -> return . Text.unlines . map (Text.replace "\n" "\n\t") $ errs
_other -> return Text.empty
provideRep . fmap PrettyValue $ case err of provideRep . fmap PrettyValue $ case err of
PermissionDenied err' -> return $ object [ "message" JSON..= err' ] PermissionDenied err' -> return $ object [ "message" JSON..= err' ]
InternalError err' InternalError err'
@ -120,15 +132,3 @@ errorHandler err = do
| otherwise -> return $ object [ "message" JSON..= fromMaybe err' decrypted ] | otherwise -> return $ object [ "message" JSON..= fromMaybe err' decrypted ]
InvalidArgs errs -> return $ object [ "messages" JSON..= errs ] InvalidArgs errs -> return $ object [ "messages" JSON..= errs ]
_other -> return $ object [] _other -> return $ object []
provideRep $ case err of
PermissionDenied err' -> return err'
InternalError err'
| isEncrypted && shouldEncrypt -> do
addHeader "Encrypted-Error-Message" "True"
return err'
| shouldEncrypt -> do
addHeader "Encrypted-Error-Message" "True"
encodedSecretBox SecretBoxPretty err'
| otherwise -> return $ fromMaybe err' decrypted
InvalidArgs errs -> return . Text.unlines . map (Text.replace "\n" "\n\t") $ errs
_other -> return Text.empty