module Yesod.Auth.Ldap where import Prelude import Yesod.Core import Yesod.Auth import Yesod.Form import Control.Monad import Data.Text (Text) import qualified Data.Text as Text import Control.Applicative import LDAP.Init import LDAP.Exceptions import Data.Monoid import Data.Aeson data LdapCreds = LdapCreds { ldapUser :: Text , ldapPassword :: Text , ldapPort :: Int , ldapHost :: Text , ldapPrefix :: Text } instance FromJSON LdapCreds where parseJSON (Object o) = LdapCreds <$> o .: "user" <*> o .: "password" <*> o .: "port" <*> o .: "host" <*> o .: "prefix" parseJSON _ = mzero ldapPluginName :: Text ldapPluginName = "ldap" class YesodLdap site where getLdapCreds :: HandlerT site IO LdapCreds l3AuthLdap :: (RenderMessage site FormMessage, YesodAuth site, YesodLdap site) => AuthPlugin site l3AuthLdap = AuthPlugin ldapPluginName dispatch $ \tp -> [whamlet|

AD Login

Log in below using your active directory credentials.