diff --git a/Yesod/Auth.hs b/Yesod/Auth.hs index 2e087002..031a9f17 100644 --- a/Yesod/Auth.hs +++ b/Yesod/Auth.hs @@ -22,19 +22,27 @@ module Yesod.Auth , requireAuth ) where +#include "qq.h" + +import Control.Monad (when) +import Control.Monad.Trans.Class (lift) +import Control.Monad.Trans.Maybe + +import Data.Aeson +import Data.Text.Encoding (decodeUtf8With) +import Data.Text.Encoding.Error (lenientDecode) +import Data.Text (Text) +import qualified Data.Text as T +import qualified Data.Map as Map + +import Language.Haskell.TH.Syntax hiding (lift) + +import qualified Network.Wai as W +import Text.Hamlet (hamlet) + import Yesod.Core import Yesod.Persist import Yesod.Json -import Language.Haskell.TH.Syntax hiding (lift) -import qualified Network.Wai as W -import Text.Hamlet (hamlet) -import qualified Data.Map as Map -import Control.Monad.Trans.Class (lift) -import Data.Aeson -import Data.Text (Text) -import qualified Data.Text as T -import Data.Text.Encoding (decodeUtf8With) -import Data.Text.Encoding.Error (lenientDecode) import Yesod.Auth.Message (AuthMessage, defaultMessage) import qualified Yesod.Auth.Message as Msg import Yesod.Form (FormMessage) @@ -91,11 +99,7 @@ mkYesodSub "Auth" [ ClassP ''YesodAuth [VarT $ mkName "master"] ] #define STRINGS *Texts -#if GHC7 - [parseRoutes| -#else - [$parseRoutes| -#endif + [QQ(parseRoutes)| /check CheckR GET /login LoginR GET /logout LogoutR GET POST @@ -108,34 +112,21 @@ credsKey = "_ID" -- | FIXME: won't show up till redirect setCreds :: YesodAuth m => Bool -> Creds m -> GHandler s m () setCreds doRedirects creds = do - y <- getYesod + y <- getYesod maid <- getAuthId creds case maid of Nothing -> - if doRedirects - then do - case authRoute y of - Nothing -> do - rh <- defaultLayout -#if GHC7 - [hamlet| -#else - [$hamlet| -#endif -
Logged in. @@ -195,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 diff --git a/Yesod/Auth/Dummy.hs b/Yesod/Auth/Dummy.hs index d210f0d4..494268f1 100644 --- a/Yesod/Auth/Dummy.hs +++ b/Yesod/Auth/Dummy.hs @@ -8,6 +8,8 @@ module Yesod.Auth.Dummy ( authDummy ) where +#include "qq.h" + import Yesod.Auth import Yesod.Form (runInputPost, textField, ireq) import Yesod.Handler (notFound) @@ -23,11 +25,7 @@ authDummy = dispatch _ _ = notFound url = PluginR "dummy" [] login authToMaster = -#if GHC7 - [hamlet| -#else - [$hamlet| -#endif + [QQ(hamlet)|