diff options
author | Joris | 2016-03-11 23:21:06 +0100 |
---|---|---|
committer | Joris | 2016-03-11 23:21:06 +0100 |
commit | 9d57e149fcb124a28813c56f83cf254eb92baa42 (patch) | |
tree | b796c4fdc738006c07e65e01f4845adafe064d2a /src/server/Model/SignIn.hs | |
parent | 709d1cf587e92508ef73bca8e847cfa510c03069 (diff) | |
download | budget-9d57e149fcb124a28813c56f83cf254eb92baa42.tar.gz budget-9d57e149fcb124a28813c56f83cf254eb92baa42.tar.bz2 budget-9d57e149fcb124a28813c56f83cf254eb92baa42.zip |
Don't use persona anymore, use email token to sign in
Diffstat (limited to 'src/server/Model/SignIn.hs')
-rw-r--r-- | src/server/Model/SignIn.hs | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/server/Model/SignIn.hs b/src/server/Model/SignIn.hs index b475fdb..117b8b5 100644 --- a/src/server/Model/SignIn.hs +++ b/src/server/Model/SignIn.hs @@ -1,6 +1,8 @@ module Model.SignIn ( createSignInToken , getSignInToken + , signInTokenToUsed + , isLastValidToken ) where import Data.Text (Text) @@ -17,9 +19,22 @@ createSignInToken :: Text -> Persist Text createSignInToken email = do now <- liftIO getCurrentTime token <- liftIO generateUUID - _ <- insert $ SignIn token now email + _ <- insert $ SignIn token now email False return token getSignInToken :: Text -> Persist (Maybe (Entity SignIn)) getSignInToken token = selectFirst [SignInToken ==. token] [] + +signInTokenToUsed :: SignInId -> Persist () +signInTokenToUsed tokenId = + update tokenId [SignInIsUsed =. True] + +isLastValidToken :: SignIn -> Persist Bool +isLastValidToken signIn = do + maybe False ((== (signInToken signIn)) . signInToken . entityVal) <$> + selectFirst + [ SignInEmail ==. (signInEmail signIn) + , SignInIsUsed ==. True + ] + [ Desc SignInCreation ] |