From 3a7620b49badec02900de34d7e02fc850cd7a2c6 Mon Sep 17 00:00:00 2001 From: Alexey Khudyakov Date: Mon, 6 Jun 2011 13:45:24 +0400 Subject: [PATCH] Eliminate case ladder using MaybeT transformer --- Yesod/Auth.hs | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/Yesod/Auth.hs b/Yesod/Auth.hs index faacae2a..031a9f17 100644 --- a/Yesod/Auth.hs +++ b/Yesod/Auth.hs @@ -26,6 +26,7 @@ module Yesod.Auth import Control.Monad (when) import Control.Monad.Trans.Class (lift) +import Control.Monad.Trans.Maybe import Data.Aeson import Data.Text.Encoding (decodeUtf8With) @@ -181,15 +182,10 @@ maybeAuth :: ( YesodAuth m , PersistEntity val , YesodPersist m ) => GHandler s m (Maybe (Key val, val)) -maybeAuth = do - maid <- maybeAuthId - case maid of - Nothing -> return Nothing - Just aid -> do - ma <- runDB $ get aid - case ma of - Nothing -> return Nothing - Just a -> return $ Just (aid, a) +maybeAuth = runMaybeT $ do + aid <- MaybeT $ maybeAuthId + a <- MaybeT $ runDB $ get aid + return (aid, a) requireAuthId :: YesodAuth m => GHandler s m (AuthId m) requireAuthId = maybeAuthId >>= maybe redirectLogin return