diff --git a/yesod-auth/Yesod/Auth/Kerberos.hs b/yesod-auth/Yesod/Auth/Kerberos.hs new file mode 100644 index 00000000..c30d86ff --- /dev/null +++ b/yesod-auth/Yesod/Auth/Kerberos.hs @@ -0,0 +1,97 @@ +{-# 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| +