GoogleEmail skips unnecessary parameter

This commit is contained in:
Michael Snoyman 2012-02-12 15:23:01 +02:00
parent 4a53d48bb5
commit 2e71fb0a28
2 changed files with 24 additions and 32 deletions

View File

@ -31,45 +31,37 @@ import Control.Exception.Lifted (try, SomeException)
forwardUrl :: AuthRoute forwardUrl :: AuthRoute
forwardUrl = PluginR "googleemail" ["forward"] forwardUrl = PluginR "googleemail" ["forward"]
googleIdent :: Text
googleIdent = "https://www.google.com/accounts/o8/id"
authGoogleEmail :: YesodAuth m => AuthPlugin m authGoogleEmail :: YesodAuth m => AuthPlugin m
authGoogleEmail = authGoogleEmail =
AuthPlugin "googleemail" dispatch login AuthPlugin "googleemail" dispatch login
where where
complete = PluginR "googleemail" ["complete"] complete = PluginR "googleemail" ["complete"]
name = "openid_identifier" name = "openid_identifier"
login tm = do login tm =
[whamlet| [whamlet|<a href=@{tm forwardUrl}>_{Msg.LoginGoogle}|]
<form method=get action=@{tm forwardUrl}>
<input type=hidden name=openid_identifier value=https://www.google.com/accounts/o8/id>
<input type=submit value=_{Msg.LoginGoogle}>
|]
dispatch "GET" ["forward"] = do dispatch "GET" ["forward"] = do
roid <- runInputGet $ iopt textField name render <- getUrlRender
case roid of toMaster <- getRouteToMaster
Just oid -> do let complete' = render $ toMaster complete
render <- getUrlRender master <- getYesod
toMaster <- getRouteToMaster eres <- lift $ try $ OpenId.getForwardUrl googleIdent complete' Nothing
let complete' = render $ toMaster complete [ ("openid.ax.type.email", "http://schema.openid.net/contact/email")
master <- getYesod , ("openid.ns.ax", "http://openid.net/srv/ax/1.0")
eres <- lift $ try $ OpenId.getForwardUrl oid complete' Nothing , ("openid.ns.ax.required", "email")
[ ("openid.ax.type.email", "http://schema.openid.net/contact/email") , ("openid.ax.mode", "fetch_request")
, ("openid.ns.ax", "http://openid.net/srv/ax/1.0") , ("openid.ax.required", "email")
, ("openid.ns.ax.required", "email") , ("openid.ui.icon", "true")
, ("openid.ax.mode", "fetch_request") ] (authHttpManager master)
, ("openid.ax.required", "email") either
, ("openid.ui.icon", "true") (\err -> do
] (authHttpManager master) setMessage $ toHtml $ show (err :: SomeException)
either
(\err -> do
setMessage $ toHtml $ show (err :: SomeException)
redirect $ toMaster LoginR
)
redirect
eres
Nothing -> do
toMaster <- getRouteToMaster
setMessageI Msg.NoOpenID
redirect $ toMaster LoginR redirect $ toMaster LoginR
)
redirect
eres
dispatch "GET" ["complete", ""] = dispatch "GET" ["complete"] -- compatibility issues dispatch "GET" ["complete", ""] = dispatch "GET" ["complete"] -- compatibility issues
dispatch "GET" ["complete"] = do dispatch "GET" ["complete"] = do
rr <- getRequest rr <- getRequest

View File

@ -1,5 +1,5 @@
name: yesod-auth name: yesod-auth
version: 0.8.1 version: 0.8.1.1
license: BSD3 license: BSD3
license-file: LICENSE license-file: LICENSE
author: Michael Snoyman, Patrick Brisbin author: Michael Snoyman, Patrick Brisbin