diff options
author | Joris Guyonvarch | 2015-07-19 16:07:15 +0200 |
---|---|---|
committer | Joris Guyonvarch | 2015-07-19 16:07:15 +0200 |
commit | 0d589e12a0c32936303de46b1e462dd19648170d (patch) | |
tree | 95527317fae74ed620ad1b118abbbe2ccf616d19 /src/server/Model/SignIn.hs | |
parent | e4eefaa5b418780e6fb63e929f826b927bbeac68 (diff) |
Login with a token validation
Diffstat (limited to 'src/server/Model/SignIn.hs')
-rw-r--r-- | src/server/Model/SignIn.hs | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/server/Model/SignIn.hs b/src/server/Model/SignIn.hs new file mode 100644 index 0000000..c447416 --- /dev/null +++ b/src/server/Model/SignIn.hs @@ -0,0 +1,34 @@ +module Model.SignIn + ( createSignInToken + , getSignInToken + , signInTokenIsUsed + ) where + +import Data.Text (Text) +import Data.Time.Clock (getCurrentTime) + +import Control.Monad.IO.Class (liftIO) + +import Database.Persist + +import Model.Database +import Model.UUID (generateUUID) + +createSignInToken :: Text -> Persist Text +createSignInToken email = do + now <- liftIO getCurrentTime + token <- liftIO generateUUID + _ <- insert $ SignIn token now email False + return token + +getSignInToken :: Text -> Persist (Maybe (Entity SignIn)) +getSignInToken token = + selectFirst + [ SignInToken ==. token + , SignInIsUsed ==. False + ] + [] + +signInTokenIsUsed :: SignInId -> Persist () +signInTokenIsUsed tokenId = + update tokenId [SignInIsUsed =. True] |