diff --git a/yesod-auth/kerberos.hs b/yesod-auth/kerberos.hs new file mode 100644 index 00000000..38d5647a --- /dev/null +++ b/yesod-auth/kerberos.hs @@ -0,0 +1,42 @@ +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE TypeFamilies #-} +{-# LANGUAGE QuasiQuotes #-} +{-# LANGUAGE TemplateHaskell #-} +{-# LANGUAGE MultiParamTypeClasses #-} +import Yesod +import Yesod.Auth +import Yesod.Form +import Yesod.Auth.Kerberos + +data Kerberos = Kerberos +type Handler = GHandler Kerberos Kerberos + +mkYesod "Kerberos" [parseRoutes| +/ RootR GET +/after AfterLoginR GET +/auth AuthR Auth getAuth +|] + +getRootR :: Handler () +getRootR = redirect RedirectTemporary $ AuthR LoginR + +getAfterLoginR :: Handler RepHtml +getAfterLoginR = defaultLayout $ return () + +instance Yesod Kerberos where + approot _ = "http://localhost:3000" + +instance YesodAuth Kerberos where + type AuthId Kerberos = String + loginDest _ = AfterLoginR + logoutDest _ = AuthR LoginR + getAuthId _ = do + liftIO $ putStrLn "getAuthId" + return $ Just "foo" + authPlugins = [authKerberos] + +instance RenderMessage Kerberos FormMessage where + renderMessage _ _ = defaultFormMessage + +main :: IO () +main = warpDebug 3000 Kerberos