GoogleEmail skips unnecessary parameter
This commit is contained in:
parent
4a53d48bb5
commit
2e71fb0a28
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user