Updated yesod-auth for redirect changes
This commit is contained in:
parent
95b6678e9f
commit
69f2f7b3e7
@ -133,12 +133,12 @@ setCreds doRedirects creds = do
|
|||||||
Nothing -> do rh <- defaultLayout $ addHtml [QQ(shamlet)| <h1>Invalid login |]
|
Nothing -> do rh <- defaultLayout $ addHtml [QQ(shamlet)| <h1>Invalid login |]
|
||||||
sendResponse rh
|
sendResponse rh
|
||||||
Just ar -> do setMessageI Msg.InvalidLogin
|
Just ar -> do setMessageI Msg.InvalidLogin
|
||||||
redirect RedirectTemporary ar
|
redirect ar
|
||||||
Just aid -> do
|
Just aid -> do
|
||||||
setSession credsKey $ toPathPiece aid
|
setSession credsKey $ toPathPiece aid
|
||||||
when doRedirects $ do
|
when doRedirects $ do
|
||||||
setMessageI Msg.NowLoggedIn
|
setMessageI Msg.NowLoggedIn
|
||||||
redirectUltDest RedirectTemporary $ loginDest y
|
redirectUltDest $ loginDest y
|
||||||
|
|
||||||
getCheckR :: YesodAuth m => GHandler Auth m RepHtmlJson
|
getCheckR :: YesodAuth m => GHandler Auth m RepHtmlJson
|
||||||
getCheckR = do
|
getCheckR = do
|
||||||
@ -175,7 +175,7 @@ postLogoutR :: YesodAuth m => GHandler Auth m ()
|
|||||||
postLogoutR = do
|
postLogoutR = do
|
||||||
y <- getYesod
|
y <- getYesod
|
||||||
deleteSession credsKey
|
deleteSession credsKey
|
||||||
redirectUltDest RedirectTemporary $ logoutDest y
|
redirectUltDest $ logoutDest y
|
||||||
|
|
||||||
handlePluginR :: YesodAuth m => Text -> [Text] -> GHandler Auth m ()
|
handlePluginR :: YesodAuth m => Text -> [Text] -> GHandler Auth m ()
|
||||||
handlePluginR plugin pieces = do
|
handlePluginR plugin pieces = do
|
||||||
@ -222,7 +222,7 @@ redirectLogin = do
|
|||||||
y <- getYesod
|
y <- getYesod
|
||||||
setUltDest'
|
setUltDest'
|
||||||
case authRoute y of
|
case authRoute y of
|
||||||
Just z -> redirect RedirectTemporary z
|
Just z -> redirect z
|
||||||
Nothing -> permissionDenied "Please configure authRoute"
|
Nothing -> permissionDenied "Please configure authRoute"
|
||||||
|
|
||||||
instance YesodAuth m => RenderMessage m AuthMessage where
|
instance YesodAuth m => RenderMessage m AuthMessage where
|
||||||
|
|||||||
@ -163,7 +163,7 @@ getVerifyR lid key = do
|
|||||||
setCreds False $ Creds "email" email [("verifiedEmail", email)] -- FIXME uid?
|
setCreds False $ Creds "email" email [("verifiedEmail", email)] -- FIXME uid?
|
||||||
toMaster <- getRouteToMaster
|
toMaster <- getRouteToMaster
|
||||||
setMessageI Msg.AddressVerified
|
setMessageI Msg.AddressVerified
|
||||||
redirect RedirectTemporary $ toMaster setpassR
|
redirect $ toMaster setpassR
|
||||||
_ -> return ()
|
_ -> return ()
|
||||||
defaultLayout $ do
|
defaultLayout $ do
|
||||||
setTitleI Msg.InvalidKey
|
setTitleI Msg.InvalidKey
|
||||||
@ -193,7 +193,7 @@ postLoginR = do
|
|||||||
Nothing -> do
|
Nothing -> do
|
||||||
setMessageI Msg.InvalidEmailPass
|
setMessageI Msg.InvalidEmailPass
|
||||||
toMaster <- getRouteToMaster
|
toMaster <- getRouteToMaster
|
||||||
redirect RedirectTemporary $ toMaster LoginR
|
redirect $ toMaster LoginR
|
||||||
|
|
||||||
getPasswordR :: YesodAuthEmail master => GHandler Auth master RepHtml
|
getPasswordR :: YesodAuthEmail master => GHandler Auth master RepHtml
|
||||||
getPasswordR = do
|
getPasswordR = do
|
||||||
@ -203,7 +203,7 @@ getPasswordR = do
|
|||||||
Just _ -> return ()
|
Just _ -> return ()
|
||||||
Nothing -> do
|
Nothing -> do
|
||||||
setMessageI Msg.BadSetPass
|
setMessageI Msg.BadSetPass
|
||||||
redirect RedirectTemporary $ toMaster LoginR
|
redirect $ toMaster LoginR
|
||||||
defaultLayout $ do
|
defaultLayout $ do
|
||||||
setTitleI Msg.SetPassTitle
|
setTitleI Msg.SetPassTitle
|
||||||
addWidget
|
addWidget
|
||||||
@ -233,17 +233,17 @@ postPasswordR = do
|
|||||||
y <- getYesod
|
y <- getYesod
|
||||||
when (new /= confirm) $ do
|
when (new /= confirm) $ do
|
||||||
setMessageI Msg.PassMismatch
|
setMessageI Msg.PassMismatch
|
||||||
redirect RedirectTemporary $ toMaster setpassR
|
redirect $ toMaster setpassR
|
||||||
maid <- maybeAuthId
|
maid <- maybeAuthId
|
||||||
aid <- case maid of
|
aid <- case maid of
|
||||||
Nothing -> do
|
Nothing -> do
|
||||||
setMessageI Msg.BadSetPass
|
setMessageI Msg.BadSetPass
|
||||||
redirect RedirectTemporary $ toMaster LoginR
|
redirect $ toMaster LoginR
|
||||||
Just aid -> return aid
|
Just aid -> return aid
|
||||||
salted <- liftIO $ saltPass new
|
salted <- liftIO $ saltPass new
|
||||||
setPassword aid salted
|
setPassword aid salted
|
||||||
setMessageI Msg.PassUpdated
|
setMessageI Msg.PassUpdated
|
||||||
redirect RedirectTemporary $ loginDest y
|
redirect $ loginDest y
|
||||||
|
|
||||||
saltLength :: Int
|
saltLength :: Int
|
||||||
saltLength = 5
|
saltLength = 5
|
||||||
|
|||||||
@ -71,7 +71,7 @@ authFacebook cid secret perms =
|
|||||||
tm <- getRouteToMaster
|
tm <- getRouteToMaster
|
||||||
render <- getUrlRender
|
render <- getUrlRender
|
||||||
let fb = Facebook.Facebook cid secret $ render $ tm url
|
let fb = Facebook.Facebook cid secret $ render $ tm url
|
||||||
redirectText RedirectTemporary $ Facebook.getForwardUrl fb perms
|
redirect $ Facebook.getForwardUrl fb perms
|
||||||
dispatch "GET" [] = do
|
dispatch "GET" [] = do
|
||||||
render <- getUrlRender
|
render <- getUrlRender
|
||||||
tm <- getRouteToMaster
|
tm <- getRouteToMaster
|
||||||
@ -92,11 +92,11 @@ authFacebook cid secret perms =
|
|||||||
case mtoken of
|
case mtoken of
|
||||||
Nothing -> do
|
Nothing -> do
|
||||||
-- Well... then just logout from our app.
|
-- Well... then just logout from our app.
|
||||||
redirect RedirectTemporary (tm LogoutR)
|
redirect (tm LogoutR)
|
||||||
Just at -> do
|
Just at -> do
|
||||||
render <- getUrlRender
|
render <- getUrlRender
|
||||||
let logout = Facebook.getLogoutUrl at (render $ tm LogoutR)
|
let logout = Facebook.getLogoutUrl at (render $ tm LogoutR)
|
||||||
redirectText RedirectTemporary logout
|
redirect logout
|
||||||
dispatch _ _ = notFound
|
dispatch _ _ = notFound
|
||||||
login tm = do
|
login tm = do
|
||||||
render <- lift getUrlRender
|
render <- lift getUrlRender
|
||||||
|
|||||||
@ -61,14 +61,14 @@ authGoogleEmail =
|
|||||||
attempt
|
attempt
|
||||||
(\err -> do
|
(\err -> do
|
||||||
setMessage $ toHtml $ show err
|
setMessage $ toHtml $ show err
|
||||||
redirect RedirectTemporary $ toMaster LoginR
|
redirect $ toMaster LoginR
|
||||||
)
|
)
|
||||||
(redirectText RedirectTemporary)
|
redirect
|
||||||
res
|
res
|
||||||
Nothing -> do
|
Nothing -> do
|
||||||
toMaster <- getRouteToMaster
|
toMaster <- getRouteToMaster
|
||||||
setMessageI Msg.NoOpenID
|
setMessageI Msg.NoOpenID
|
||||||
redirect RedirectTemporary $ toMaster LoginR
|
redirect $ toMaster LoginR
|
||||||
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
|
||||||
@ -85,15 +85,15 @@ completeHelper gets' = do
|
|||||||
toMaster <- getRouteToMaster
|
toMaster <- getRouteToMaster
|
||||||
let onFailure err = do
|
let onFailure err = do
|
||||||
setMessage $ toHtml $ show err
|
setMessage $ toHtml $ show err
|
||||||
redirect RedirectTemporary $ toMaster LoginR
|
redirect $ toMaster LoginR
|
||||||
let onSuccess (OpenId.Identifier ident, _) = do
|
let onSuccess (OpenId.Identifier ident, _) = do
|
||||||
memail <- lookupGetParam "openid.ext1.value.email"
|
memail <- lookupGetParam "openid.ext1.value.email"
|
||||||
case (memail, "https://www.google.com/accounts/o8/id" `T.isPrefixOf` ident) of
|
case (memail, "https://www.google.com/accounts/o8/id" `T.isPrefixOf` ident) of
|
||||||
(Just email, True) -> setCreds True $ Creds "openid" email []
|
(Just email, True) -> setCreds True $ Creds "openid" email []
|
||||||
(_, False) -> do
|
(_, False) -> do
|
||||||
setMessage "Only Google login is supported"
|
setMessage "Only Google login is supported"
|
||||||
redirect RedirectTemporary $ toMaster LoginR
|
redirect $ toMaster LoginR
|
||||||
(Nothing, _) -> do
|
(Nothing, _) -> do
|
||||||
setMessage "No email address provided"
|
setMessage "No email address provided"
|
||||||
redirect RedirectTemporary $ toMaster LoginR
|
redirect $ toMaster LoginR
|
||||||
attempt onFailure onSuccess res
|
attempt onFailure onSuccess res
|
||||||
|
|||||||
@ -179,7 +179,7 @@ postLoginR uniq = do
|
|||||||
then setCreds True $ Creds "hashdb" (fromMaybe "" mu) []
|
then setCreds True $ Creds "hashdb" (fromMaybe "" mu) []
|
||||||
else do setMessage [QQ(shamlet)| Invalid username/password |]
|
else do setMessage [QQ(shamlet)| Invalid username/password |]
|
||||||
toMaster <- getRouteToMaster
|
toMaster <- getRouteToMaster
|
||||||
redirect RedirectTemporary $ toMaster LoginR
|
redirect $ toMaster LoginR
|
||||||
|
|
||||||
|
|
||||||
-- | A drop in for the getAuthId method of your YesodAuth instance which
|
-- | A drop in for the getAuthId method of your YesodAuth instance which
|
||||||
@ -208,7 +208,7 @@ getAuthIdHashDB authR uniq creds = do
|
|||||||
Just (uid, _) -> return $ Just uid
|
Just (uid, _) -> return $ Just uid
|
||||||
Nothing -> do
|
Nothing -> do
|
||||||
setMessage [QQ(shamlet)| User not found |]
|
setMessage [QQ(shamlet)| User not found |]
|
||||||
redirect RedirectTemporary $ authR LoginR
|
redirect $ authR LoginR
|
||||||
|
|
||||||
-- | Prompt for username and password, validate that against a database
|
-- | Prompt for username and password, validate that against a database
|
||||||
-- which holds the username and a hash of the password
|
-- which holds the username and a hash of the password
|
||||||
|
|||||||
@ -99,7 +99,7 @@ postLoginR config = do
|
|||||||
let errorMessage (message :: Text) = do
|
let errorMessage (message :: Text) = do
|
||||||
setMessage [QQ(shamlet)|Error: #{message}|]
|
setMessage [QQ(shamlet)|Error: #{message}|]
|
||||||
toMaster <- getRouteToMaster
|
toMaster <- getRouteToMaster
|
||||||
redirect RedirectTemporary $ toMaster LoginR
|
redirect $ toMaster LoginR
|
||||||
|
|
||||||
case (mu,mp) of
|
case (mu,mp) of
|
||||||
(Nothing, _ ) -> errorMessage "Please fill in your username"
|
(Nothing, _ ) -> errorMessage "Please fill in your username"
|
||||||
|
|||||||
@ -53,7 +53,7 @@ authOAuth name ident reqUrl accUrl authUrl key sec = AuthPlugin name dispatch lo
|
|||||||
tm <- getRouteToMaster
|
tm <- getRouteToMaster
|
||||||
let oauth' = oauth { oauthCallback = Just $ encodeUtf8 $ render $ tm url }
|
let oauth' = oauth { oauthCallback = Just $ encodeUtf8 $ render $ tm url }
|
||||||
tok <- liftIO $ getTemporaryCredential oauth'
|
tok <- liftIO $ getTemporaryCredential oauth'
|
||||||
redirectText RedirectTemporary (fromString $ authorizeUrl oauth' tok)
|
redirect $ authorizeUrl oauth' tok
|
||||||
dispatch "GET" [] = do
|
dispatch "GET" [] = do
|
||||||
(verifier, oaTok) <- runInputGet $ (,)
|
(verifier, oaTok) <- runInputGet $ (,)
|
||||||
<$> ireq textField "oauth_verifier"
|
<$> ireq textField "oauth_verifier"
|
||||||
|
|||||||
@ -64,14 +64,14 @@ authOpenIdExtended extensionFields =
|
|||||||
attempt
|
attempt
|
||||||
(\err -> do
|
(\err -> do
|
||||||
setMessage $ toHtml $ show err
|
setMessage $ toHtml $ show err
|
||||||
redirect RedirectTemporary $ toMaster LoginR
|
redirect $ toMaster LoginR
|
||||||
)
|
)
|
||||||
(redirectText RedirectTemporary)
|
redirect
|
||||||
res
|
res
|
||||||
Nothing -> do
|
Nothing -> do
|
||||||
toMaster <- getRouteToMaster
|
toMaster <- getRouteToMaster
|
||||||
setMessageI Msg.NoOpenID
|
setMessageI Msg.NoOpenID
|
||||||
redirect RedirectTemporary $ toMaster LoginR
|
redirect $ toMaster LoginR
|
||||||
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
|
||||||
@ -88,7 +88,7 @@ completeHelper gets' = do
|
|||||||
toMaster <- getRouteToMaster
|
toMaster <- getRouteToMaster
|
||||||
let onFailure err = do
|
let onFailure err = do
|
||||||
setMessage $ toHtml $ show err
|
setMessage $ toHtml $ show err
|
||||||
redirect RedirectTemporary $ toMaster LoginR
|
redirect $ toMaster LoginR
|
||||||
let onSuccess (OpenId.Identifier ident, _) =
|
let onSuccess (OpenId.Identifier ident, _) =
|
||||||
setCreds True $ Creds "openid" ident gets'
|
setCreds True $ Creds "openid" ident gets'
|
||||||
attempt onFailure onSuccess res
|
attempt onFailure onSuccess res
|
||||||
|
|||||||
@ -21,7 +21,7 @@ library
|
|||||||
cpp-options: -DGHC7
|
cpp-options: -DGHC7
|
||||||
else
|
else
|
||||||
build-depends: base >= 4 && < 4.3
|
build-depends: base >= 4 && < 4.3
|
||||||
build-depends: authenticate >= 0.11 && < 0.12
|
build-depends: authenticate >= 0.11.1 && < 0.12
|
||||||
, bytestring >= 0.9.1.4 && < 0.10
|
, bytestring >= 0.9.1.4 && < 0.10
|
||||||
, yesod-core >= 0.10 && < 0.11
|
, yesod-core >= 0.10 && < 0.11
|
||||||
, wai >= 1.0 && < 1.1
|
, wai >= 1.0 && < 1.1
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user