packages feed

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 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