From 8f8c99db88c3276d752a6886a8830c13d927661f Mon Sep 17 00:00:00 2001 From: Sibi Prabakaran Date: Wed, 7 Dec 2016 14:08:37 +0530 Subject: [PATCH] Do parseJsonBody only when form data is not found --- yesod-auth/Yesod/Auth/Email.hs | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/yesod-auth/Yesod/Auth/Email.hs b/yesod-auth/Yesod/Auth/Email.hs index 44ad119a..9fa12d52 100644 --- a/yesod-auth/Yesod/Auth/Email.hs +++ b/yesod-auth/Yesod/Auth/Email.hs @@ -399,13 +399,14 @@ registerHelper allowUsername dest = do y <- lift getYesod checkCsrfHeaderOrParam defaultCsrfHeaderName defaultCsrfParamName pidentifier <- lookupPostParam "email" - (jidentifier :: Result Value) <- lift parseJsonBody - let midentifier = case pidentifier of - Nothing -> case jidentifier of - Error _ -> Nothing - Success val -> parseMaybe parseEmail val - Just _ -> pidentifier - + midentifier <- case pidentifier of + Nothing -> do + (jidentifier :: Result Value) <- lift parseJsonBody + case jidentifier of + Error _ -> return Nothing + Success val -> return $ parseMaybe parseEmail val + Just _ -> return pidentifier + let eidentifier = case midentifier of Nothing -> Left Msg.NoIdentifierProvided Just x @@ -531,12 +532,14 @@ postLoginR = do result <- lift $ runInputPostResult $ (,) <$> ireq textField "email" <*> ireq textField "password" - (creds :: Result Value) <- lift parseJsonBody - let midentifier = case result of - FormSuccess (iden, pass) -> Just (iden, pass) - _ -> case creds of - Error _ -> Nothing - Success val -> parseMaybe parseCreds val + + midentifier <- case result of + FormSuccess (iden, pass) -> return $ Just (iden, pass) + _ -> do + (creds :: Result Value) <- lift parseJsonBody + case creds of + Error _ -> return Nothing + Success val -> return $ parseMaybe parseCreds val case midentifier of Nothing -> loginErrorMessageI LoginR Msg.NoIdentifierProvided