diff --git a/yesod-auth/Yesod/Auth.hs b/yesod-auth/Yesod/Auth.hs index 944c8dc8..0fa33969 100644 --- a/yesod-auth/Yesod/Auth.hs +++ b/yesod-auth/Yesod/Auth.hs @@ -162,7 +162,6 @@ mkYesodSub "Auth" /page/#Text/STRINGS PluginR |] --- | FIXME: won't show up till redirect setCreds :: YesodAuth m => Bool -> Creds m -> GHandler s m () setCreds doRedirects creds = do y <- getYesod @@ -214,7 +213,9 @@ getLoginR :: YesodAuth m => GHandler Auth m RepHtml getLoginR = setUltDestReferer' >> loginHandler getLogoutR :: YesodAuth m => GHandler Auth m () -getLogoutR = setUltDestReferer' >> postLogoutR -- FIXME redirect to post +getLogoutR = do + tm <- getRouteToMaster + setUltDestReferer' >> redirectToPost (tm LogoutR) postLogoutR :: YesodAuth m => GHandler Auth m () postLogoutR = do diff --git a/yesod-auth/Yesod/Auth/Rpxnow.hs b/yesod-auth/Yesod/Auth/Rpxnow.hs index 1edd57c5..63f51112 100644 --- a/yesod-auth/Yesod/Auth/Rpxnow.hs +++ b/yesod-auth/Yesod/Auth/Rpxnow.hs @@ -13,7 +13,10 @@ import Yesod.Widget import Yesod.Request import Text.Hamlet (hamlet) import Data.Text (pack, unpack) +import Data.Text.Encoding (encodeUtf8, decodeUtf8With) +import Data.Text.Encoding.Error (lenientDecode) import Control.Arrow ((***)) +import Network.HTTP.Types (renderQuery) authRpxnow :: YesodAuth m => String -- ^ app name @@ -23,10 +26,12 @@ authRpxnow app apiKey = AuthPlugin "rpxnow" dispatch login where login tm = do - let url = {- FIXME urlEncode $ -} tm $ PluginR "rpxnow" [] + render <- lift getUrlRender + let queryString = decodeUtf8With lenientDecode + $ renderQuery True [("token_url", Just $ encodeUtf8 $ render $ tm $ PluginR "rpxnow" [])] toWidget [hamlet| $newline never -