Skip to content

Instantly share code, notes, and snippets.

@lsmag
Created March 3, 2017 00:37
Show Gist options
  • Save lsmag/ee3fd9c013200563b753290718f6a957 to your computer and use it in GitHub Desktop.
Save lsmag/ee3fd9c013200563b753290718f6a957 to your computer and use it in GitHub Desktop.
-------------------------------------------------------
-- BEFORE THE FIX
-------------------------------------------------------
-- this is the default code created by snap
-- | Render login form
handleLogin :: Maybe T.Text -> Handler App (AuthManager App) ()
handleLogin authError = heistLocal (I.bindSplices errs) $ render "login"
where
errs = maybe mempty splice authError
splice err = "loginError" ## I.textSplice err
-- | Handle login submit
handleLoginSubmit :: Handler App (AuthManager App) ()
handleLoginSubmit = loginUser "login" "password" rememberField errorHandler successHandler
where
rememberField = Nothing
errorHandler _ = handleLogin (Just "Unknown user or password")
successHandler = do
toPage <- getQueryParam "to"
redirect . fromMaybe "/" $ toPage
routes = [ ("/", handleIndex)
, ("login", handleLoginSubmit)
]
-------------------------------------------------------
-- AFTER THE FIX
-------------------------------------------------------
-- | Render login form
handleLoginError :: Maybe T.Text -> Handler App (AuthManager App) ()
handleLoginError authError = heistLocal (I.bindSplices errs) $ render "login"
where
errs = maybe mempty splice authError
splice err = "loginError" ## I.textSplice err
-- | Handle login submit
handleLoginSubmit :: Handler App (AuthManager App) ()
handleLoginSubmit = loginUser "login" "password" rememberField errorHandler successHandler
where
rememberField = Nothing
errorHandler _ = handleLoginError (Just "Unknown user or password")
successHandler = do
toPage <- getQueryParam "to"
redirect . fromMaybe "/" $ toPage
handleLogin = method GET (render "login") <|> method POST handleLoginSubmit
routes = [ ("/", handleIndex)
, ("login", handleLogin)
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment