diff options
author | Joris Guyonvarch | 2015-07-19 18:50:49 +0200 |
---|---|---|
committer | Joris Guyonvarch | 2015-07-19 18:50:49 +0200 |
commit | f687b15d4d3f55fb231cd03b773b163ed131b129 (patch) | |
tree | d2a45041640c8620b64e92001b8dfe9fce011247 /src/server/Application.hs | |
parent | 331d506281760ac62e8f1715ef729e1b2a91e280 (diff) |
Send the login token by email
Diffstat (limited to 'src/server/Application.hs')
-rw-r--r-- | src/server/Application.hs | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/src/server/Application.hs b/src/server/Application.hs index 6a18102..7bb305e 100644 --- a/src/server/Application.hs +++ b/src/server/Application.hs @@ -23,7 +23,6 @@ import Control.Monad.IO.Class (liftIO) import Data.Text (Text) import qualified Data.Text as T -import qualified Data.Text.IO as TIO import qualified Data.Text.Encoding as TE import Data.String (fromString) @@ -41,6 +40,8 @@ import Model.Message import View.Page (page) +import Mail + getIndexAction :: ActionM () getIndexAction = html page @@ -87,14 +88,22 @@ signInAction login = (Just _, Just host) -> do token <- liftIO . runDb $ createSignInToken login let url = T.concat ["http://", host ,"/validateSignIn?token=", token] - liftIO . TIO.putStrLn $ url - status ok200 - _ -> do - status badRequest400 - json (Message "You are not authorized to sign in.") - else do - status badRequest400 - json (Message "Please enter a valid email address.") + let mail = Mail [login] "Sign in" url url + maybeSentMail <- liftIO . sendMail $ mail + case maybeSentMail of + Right _ -> + status ok200 + Left _ -> + errorResponse "Sorry, we failed to send you the sign up email." + _ -> + errorResponse "You are not authorized to sign in." + else + errorResponse "Please enter a valid email address." + +errorResponse :: Text -> ActionM () +errorResponse message = do + status badRequest400 + json (Message message) validateSignInAction :: Text -> ActionM () validateSignInAction token = do |