yesod-auth 0.7.2 → 0.7.3
raw patch · 4 files changed
+44/−1 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Yesod.Auth.BrowserId: authBrowserId' :: YesodAuth m => AuthPlugin m
+ Yesod.Auth.Message: LoginGoogle :: AuthMessage
+ Yesod.Auth.Message: LoginYahoo :: AuthMessage
Files
- Yesod/Auth/BrowserId.hs +33/−0
- Yesod/Auth/Message.hs +4/−0
- Yesod/Auth/OpenId.hs +6/−0
- yesod-auth.cabal +1/−1
Yesod/Auth/BrowserId.hs view
@@ -3,6 +3,7 @@ {-# LANGUAGE OverloadedStrings #-} module Yesod.Auth.BrowserId ( authBrowserId+ , authBrowserId' ) where import Yesod.Auth@@ -11,6 +12,8 @@ import Yesod.Core import Text.Hamlet (hamlet) import Control.Monad.IO.Class (liftIO)+import qualified Data.Text as T+import Data.Maybe (fromMaybe) #include "qq.h" @@ -46,3 +49,33 @@ <img src="https://browserid.org/i/sign_in_green.png"> |] }++authBrowserId' :: YesodAuth m => AuthPlugin m+authBrowserId' = AuthPlugin+ { apName = pid+ , apDispatch = \m ps ->+ case (m, ps) of+ ("GET", [assertion]) -> do+ tm <- getRouteToMaster+ r <- getUrlRender+ let audience = T.takeWhile (/= '/') $ stripScheme $ r $ tm LoginR+ memail <- liftIO $ checkAssertion audience assertion+ case memail of+ Nothing -> error "Invalid assertion"+ Just email -> setCreds True Creds+ { credsPlugin = pid+ , credsIdent = email+ , credsExtra = []+ }+ (_, []) -> badMethod+ _ -> notFound+ , apLogin = \toMaster -> do+ addScriptRemote browserIdJs+ addHamlet [QQ(hamlet)|+<p>+ <a href="javascript:navigator.id.getVerifiedEmail(function(a){if(a)document.location='@{toMaster complete}/'+a});">+ <img src="https://browserid.org/i/sign_in_green.png">+|]+ }+ where+ stripScheme t = fromMaybe t $ T.stripPrefix "//" $ snd $ T.breakOn "//" t
Yesod/Auth/Message.hs view
@@ -10,6 +10,8 @@ data AuthMessage = NoOpenID | LoginOpenID+ | LoginGoogle+ | LoginYahoo | Email | Password | Register@@ -37,6 +39,8 @@ defaultMessage :: AuthMessage -> Text defaultMessage NoOpenID = "No OpenID identifier found" defaultMessage LoginOpenID = "Login via OpenID"+defaultMessage LoginGoogle = "Login via Google"+defaultMessage LoginYahoo = "Login via Yahoo" defaultMessage Email = "Email" defaultMessage Password = "Password" defaultMessage Register = "Register"
Yesod/Auth/OpenId.hs view
@@ -40,6 +40,12 @@ |] [QQ(whamlet)| <form method="get" action="@{tm forwardUrl}">+ <input type="hidden" name="openid_identifier" value="https://www.google.com/accounts/o8/id">+ <button .openid-google>_{Msg.LoginGoogle}+<form method="get" action="@{tm forwardUrl}">+ <input type="hidden" name="openid_identifier" value="http://me.yahoo.com">+ <button .openid-yahoo>_{Msg.LoginYahoo}+<form method="get" action="@{tm forwardUrl}"> <label for="#{ident}">OpenID: # <input id="#{ident}" type="text" name="#{name}" value="http://"> <input type="submit" value="_{Msg.LoginOpenID}">
yesod-auth.cabal view
@@ -1,5 +1,5 @@ name: yesod-auth-version: 0.7.2+version: 0.7.3 license: BSD3 license-file: LICENSE author: Michael Snoyman, Patrick Brisbin