TL;DR: - Since POST /login is more rigorous, our accounts.csv needs to contain validly hashed passwords; you can use tests/create-accounts.sh to create dummy accounts I still need to test the login flow and support: - Tracking failed attempts (three maximum) - Verifying accounts by sending emails to the users
44 lines
1.3 KiB
Haskell
44 lines
1.3 KiB
Haskell
{-# LANGUAGE DataKinds #-}
|
|
{-# LANGUAGE TypeOperators #-}
|
|
--------------------------------------------------------------------------------
|
|
module API where
|
|
--------------------------------------------------------------------------------
|
|
import Data.Text
|
|
import Servant.API
|
|
|
|
import qualified Types as T
|
|
--------------------------------------------------------------------------------
|
|
|
|
type API =
|
|
-- accounts: Create
|
|
"accounts"
|
|
:> ReqBody '[JSON] T.CreateAccountRequest
|
|
:> Post '[JSON] NoContent
|
|
-- accounts: Read
|
|
-- accounts: Update
|
|
-- accounts: Delete
|
|
:<|> "accounts"
|
|
:> QueryParam' '[Required] "username" Text
|
|
:> Delete '[JSON] NoContent
|
|
-- accounts: List
|
|
:<|> "accounts"
|
|
:> Get '[JSON] [T.User]
|
|
|
|
-- trips: Create
|
|
:<|> "trips"
|
|
:> ReqBody '[JSON] T.Trip
|
|
:> Post '[JSON] NoContent
|
|
-- trips: Read
|
|
-- trips: Update
|
|
-- trips: Delete
|
|
:<|> "trips"
|
|
:> ReqBody '[JSON] T.TripPK
|
|
:> Delete '[JSON] NoContent
|
|
-- trips: List
|
|
:<|> "trips"
|
|
:> Get '[JSON] [T.Trip]
|
|
|
|
-- Miscellaneous
|
|
:<|> "login"
|
|
:> ReqBody '[JSON] T.AccountCredentials
|
|
:> Post '[JSON] NoContent
|