{-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE CPP #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE OverloadedStrings #-} module Yesod.Auth.Kerberos ( authKerberos, genericAuthKerberos, KerberosConfig(..) ) where #include "qq.h" import Yesod.Auth import Web.Authenticate.Kerberos import Data.Text (Text) import qualified Data.Text as T import Text.Hamlet import Yesod.Handler import Yesod.Widget import Control.Monad.IO.Class (liftIO) import Yesod.Form import Control.Applicative ((<$>), (<*>)) data KerberosConfig = KerberosConfig { -- | When a user gives username x, f(x) will be passed to Kerberos usernameModifier :: Text -> Text -- | When a user gives username x, f(x) will be passed to Yesod , identifierModifier :: Text -> Text } defaultKerberosConfig :: KerberosConfig defaultKerberosConfig = KerberosConfig id id genericAuthKerberos :: YesodAuth m => KerberosConfig -> AuthPlugin m genericAuthKerberos config = AuthPlugin "kerberos" dispatch $ \tm -> addHamlet [hamlet|