Guest User

Untitled

a guest
Dec 7th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.42 KB | None | 0 0
  1. {-# LANGUAGE DataKinds #-}
  2. {-# LANGUAGE TemplateHaskell #-}
  3. {-# LANGUAGE TypeOperators #-}
  4. {-# LANGUAGE DeriveGeneric #-}
  5. {-# LANGUAGE OverloadedStrings #-}
  6.  
  7. module Accounts where
  8.  
  9. -- , createUser, getUser, loginUser,
  10. import Accounts.User (User(..), UserLogin(..), Accounts, users, createUser, getUser, initializeAccounts)
  11. import Servant
  12. import Servant.Auth.Server
  13. import Control.Monad.IO.Class (liftIO)
  14. import Anki
  15. import Data.ByteString
  16. import GHC.Generics (Generic)
  17. import Data.Aeson
  18. import Data.Aeson.TH
  19. import Auth (Token(..), Tokens, issueToken)
  20.  
  21. type UserServer = Server UserApi
  22. type AccountDB = Accounts
  23.  
  24.  
  25. type UserApi = "login" :> ReqBody '[JSON] UserLogin
  26. :> Post '[JSON] Token
  27.  
  28. -- type UserApi = "users" :> Get '[JSON] [User]
  29. -- :<|> "user" :> ReqBody '[JSON] User :> Post '[JSON] User
  30. -- :<|> "user" :> Capture "id" Int :> Get '[JSON] (Maybe User)
  31. -- :<|> "login" :> ReqBody '[JSON] UserLogin :> Post '[JSON] (Maybe User)
  32.  
  33.  
  34. userServer :: AccountDB -> Tokens -> UserServer
  35. userServer accDB tokenDB = login accDB tokenDB
  36. where login a t u = verifyLogin a t u
  37.  
  38. verifyLogin :: Accounts -> Tokens -> UserLogin -> Handler Token
  39. verifyLogin accDB tokenDB (UserLogin email password) =
  40. if (email == "test" && password == "test")
  41. then issueToken tokenDB email
  42. else return $ (Token "empty")
  43.  
  44. initializeAccountsDB :: IO AccountDB
  45. initializeAccountsDB = initializeAccounts
Add Comment
Please, Sign In to add comment