yesod/authenticate/openid2.hs
2012-01-24 04:47:58 +02:00

37 lines
968 B
Haskell

{-# LANGUAGE TypeFamilies, QuasiQuotes, TemplateHaskell, MultiParamTypeClasses, OverloadedStrings #-}
import Yesod
import Web.Authenticate.OpenId
import Data.Object
import Data.Maybe (fromMaybe)
import Network.HTTP.Enumerator
data OID = OID
mkYesod "OID" [parseRoutes|
/ RootR GET
/forward ForwardR GET
/complete CompleteR GET
|]
instance Yesod OID where approot _ = "http://10.0.0.3:3000"
getRootR = defaultLayout [hamlet|\
<form action="@{ForwardR}">
\OpenId:
<input type="text" name="openid_identifier" value="http://">
<input type="submit">
|]
getForwardR = do
openid <- runFormGet' $ stringInput "openid_identifier"
render <- getUrlRender
url <- liftIO $ getForwardUrl openid (render CompleteR) Nothing []
redirectText RedirectTemporary url
return ()
getCompleteR = do
params <- reqGetParams `fmap` getRequest
ident <- liftIO $ authenticate params
return $ RepPlain $ toContent $ show ident
main = warp 3000 OID