Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {-# LANGUAGE DataKinds #-}
- {-# LANGUAGE TemplateHaskell #-}
- {-# LANGUAGE TypeOperators #-}
- {-# LANGUAGE DeriveGeneric #-}
- {-# LANGUAGE OverloadedStrings #-}
- module Accounts where
- -- , createUser, getUser, loginUser,
- import Accounts.User (User(..), UserLogin(..), Accounts, users, createUser, getUser, initializeAccounts)
- import Servant
- import Servant.Auth.Server
- import Control.Monad.IO.Class (liftIO)
- import Anki
- import Data.ByteString
- import GHC.Generics (Generic)
- import Data.Aeson
- import Data.Aeson.TH
- import Auth (Token(..), Tokens, issueToken)
- type UserServer = Server UserApi
- type AccountDB = Accounts
- type UserApi = "login" :> ReqBody '[JSON] UserLogin
- :> Post '[JSON] Token
- -- type UserApi = "users" :> Get '[JSON] [User]
- -- :<|> "user" :> ReqBody '[JSON] User :> Post '[JSON] User
- -- :<|> "user" :> Capture "id" Int :> Get '[JSON] (Maybe User)
- -- :<|> "login" :> ReqBody '[JSON] UserLogin :> Post '[JSON] (Maybe User)
- userServer :: AccountDB -> Tokens -> UserServer
- userServer accDB tokenDB = login accDB tokenDB
- where login a t u = verifyLogin a t u
- verifyLogin :: Accounts -> Tokens -> UserLogin -> Handler Token
- verifyLogin accDB tokenDB (UserLogin email password) =
- if (email == "test" && password == "test")
- then issueToken tokenDB email
- else return $ (Token "empty")
- initializeAccountsDB :: IO AccountDB
- initializeAccountsDB = initializeAccounts
Add Comment
Please, Sign In to add comment