From cda399131b42d03fde78d0f1f205282d426b839b Mon Sep 17 00:00:00 2001 From: Michael Snoyman Date: Fri, 20 Apr 2012 09:41:08 +0300 Subject: [PATCH] Better test program for OpenID --- authenticate/openid2.hs | 80 ++++++++++++++++++++++++++++++++--------- 1 file changed, 64 insertions(+), 16 deletions(-) diff --git a/authenticate/openid2.hs b/authenticate/openid2.hs index 7f155640..89bbce44 100644 --- a/authenticate/openid2.hs +++ b/authenticate/openid2.hs @@ -1,9 +1,11 @@ {-# LANGUAGE TypeFamilies, QuasiQuotes, TemplateHaskell, MultiParamTypeClasses, OverloadedStrings #-} -import Yesod +import Yesod.Core import Web.Authenticate.OpenId -import Data.Object -import Data.Maybe (fromMaybe) -import Network.HTTP.Enumerator +import qualified Web.Authenticate.OpenId.Providers as P +import Network.HTTP.Conduit +import Yesod.Form +import Network.Wai.Handler.Warp (run) +import Text.Lucius (lucius) data OID = OID mkYesod "OID" [parseRoutes| @@ -12,25 +14,71 @@ mkYesod "OID" [parseRoutes| /complete CompleteR GET |] -instance Yesod OID where approot _ = "http://10.0.0.3:3000" +instance Yesod OID where + approot = ApprootStatic "http://localhost:3000" -getRootR = defaultLayout [hamlet|\ +getRootR :: Handler RepHtml +getRootR = defaultLayout [whamlet|
- \OpenId: + OpenId: # + + + |] -getForwardR = do - openid <- runFormGet' $ stringInput "openid_identifier" - render <- getUrlRender - url <- liftIO $ getForwardUrl openid (render CompleteR) Nothing [] - redirectText RedirectTemporary url - return () +instance RenderMessage OID FormMessage where + renderMessage _ _ = defaultFormMessage +getForwardR :: Handler () +getForwardR = do + openid <- runInputGet $ ireq textField "openid_identifier" + render <- getUrlRender + url <- withManager $ getForwardUrl openid (render CompleteR) Nothing [] + redirect url + +getCompleteR :: Handler RepHtml getCompleteR = do params <- reqGetParams `fmap` getRequest - ident <- liftIO $ authenticate params - return $ RepPlain $ toContent $ show ident + (ident, retparams) <- withManager $ authenticate params + defaultLayout $ do + toWidget [lucius| +table { + border-collapse: collapse; +} +th, td { + border: 1px solid #666; + padding: 5px; + vertical-align: top; +} +th { + text-align: right; +} +|] + [whamlet| +

Successfully logged in. + + + +
Ident + #{show ident} +
Params + + + $forall (k, v) <- retparams + + +
#{k} + #{v} +
GET params + + + $forall (k, v) <- params + +
#{k} + #{v} +|] -main = warp 3000 OID +main :: IO () +main = toWaiApp OID >>= run 3000