diff --git a/Yesod/Helpers/Auth.hs b/Yesod/Helpers/Auth.hs index 32d941bd..1ff77111 100644 --- a/Yesod/Helpers/Auth.hs +++ b/Yesod/Helpers/Auth.hs @@ -26,7 +26,6 @@ import qualified Web.Authenticate.OpenId as OpenId import Yesod import Yesod.Constants -import Control.Applicative ((<$>)) import Control.Monad.Attempt import Data.Maybe (fromMaybe) @@ -114,10 +113,14 @@ authOpenidForward = do (redirect RedirectTemporary) res -authOpenidComplete :: Handler y HtmlObject +authOpenidComplete :: YesodApproot y => Handler y HtmlObject authOpenidComplete = do - gets' <- rawGetParams <$> getRawRequest - dest <- runRequest $ cookieParam "DEST" + ar <- getApproot + rr <- getRawRequest + let gets' = rawGetParams rr + let dest = case cookies rr "DEST" of + [] -> ar + (x:_) -> x res <- runAttemptT $ OpenId.authenticate gets' let onFailure err = redirect RedirectTemporary $ "/auth/openid/?message=" @@ -125,7 +128,7 @@ authOpenidComplete = do let onSuccess (OpenId.Identifier ident) = do deleteCookie "DEST" header authCookieName ident - redirect RedirectTemporary $ fromMaybe "/" dest + redirect RedirectTemporary dest attempt onFailure onSuccess res rpxnowLogin :: YesodAuth y => Handler y HtmlObject diff --git a/Yesod/Parameter.hs b/Yesod/Parameter.hs index d8e2bb7e..9aa1db4a 100644 --- a/Yesod/Parameter.hs +++ b/Yesod/Parameter.hs @@ -42,14 +42,11 @@ import Data.Convertible.Text data ParamType = GetParam | PostParam - | CookieParam deriving (Eq, Show) --- | In GET parameters, the key. In cookies, the cookie name. So on and so --- forth. type ParamName = String --- | The 'String' value of a parameter, such as cookie content. +-- | The 'String' value of a parameter. type ParamValue = String -- | Anything which can be converted from a list of 'String's. diff --git a/Yesod/Request.hs b/Yesod/Request.hs index 6be3a6f1..441ef611 100644 --- a/Yesod/Request.hs +++ b/Yesod/Request.hs @@ -26,13 +26,13 @@ module Yesod.Request , getParam , postParam , anyParam - , cookieParam , identifier , displayName , acceptedLanguages , requestPath , parseEnv , runRequest + , cookies -- * Building actual request , Request (..) , Hack.RequestMethod (..) @@ -130,10 +130,6 @@ postParam = genParam postParams PostParam anyParam :: (Parameter a) => ParamName -> Request a anyParam = genParam anyParams PostParam -- FIXME --- | Parse a value passed as a raw cookie. -cookieParam :: (Parameter a) => ParamName -> Request a -cookieParam = genParam cookies CookieParam - -- | Extract the cookie which specifies the identifier for a logged in -- user, if available. identifier :: (Functor m, Monad m, RequestReader m) => m (Maybe String)