add files
This commit is contained in:
parent
aab443cc92
commit
520ab40070
3 changed files with 191 additions and 0 deletions
34
src/Control/Auth.hs
Normal file
34
src/Control/Auth.hs
Normal file
|
@ -0,0 +1,34 @@
|
|||
{-# LANGUAGE OverloadedStrings #-}
|
||||
module Control.Auth where
|
||||
|
||||
import Servant
|
||||
|
||||
import Control.Monad (void)
|
||||
|
||||
import Control.Monad.Reader (ask)
|
||||
|
||||
-- internal imports
|
||||
|
||||
import Types
|
||||
import Model
|
||||
|
||||
authGet :: Int -> MateHandler AuthInfo
|
||||
authGet id =
|
||||
getUserAuthInfo id
|
||||
|
||||
authSend :: AuthRequest -> MateHandler AuthResult
|
||||
authSend = processAuthRequest
|
||||
|
||||
authLogout :: Maybe Int -> Int -> MateHandler ()
|
||||
authLogout (Just muid) luid = do
|
||||
if muid == luid
|
||||
then
|
||||
processLogout luid
|
||||
else
|
||||
throwError $ err403
|
||||
{ errBody = "Forbidden"
|
||||
}
|
||||
authLogout Nothing _ = do
|
||||
throwError $ err403
|
||||
{ errBody = "Forbidden"
|
||||
}
|
62
src/Control/Product.hs
Normal file
62
src/Control/Product.hs
Normal file
|
@ -0,0 +1,62 @@
|
|||
{-# LANGUAGE OverloadedStrings #-}
|
||||
module Control.Product where
|
||||
|
||||
import Servant
|
||||
|
||||
import Control.Monad (void)
|
||||
|
||||
import Control.Monad.Reader (ask)
|
||||
|
||||
-- internal imports
|
||||
|
||||
import Types
|
||||
import Model
|
||||
|
||||
productNew :: Maybe Int -> ProductSubmit -> MateHandler Int
|
||||
productNew (Just _) bevsub = do
|
||||
conn <- rsConnection <$> ask
|
||||
bevid <- insertProduct bevsub conn
|
||||
void $ insertNewEmptyAmount bevid bevsub conn
|
||||
return bevid
|
||||
productNew Nothing _ =
|
||||
throwError $ err403
|
||||
|
||||
productOverview :: Int -> MateHandler ProductOverview
|
||||
productOverview pid = do
|
||||
conn <- rsConnection <$> ask
|
||||
productOverviewSelectSingle pid conn
|
||||
|
||||
productStockRefill :: Maybe Int -> [AmountRefill] -> MateHandler ()
|
||||
productStockRefill (Just _) amorefs = do
|
||||
if all ((>= 0) . amountRefillAmount) amorefs
|
||||
then do
|
||||
conn <- rsConnection <$> ask
|
||||
void $ manualProductAmountRefill amorefs conn
|
||||
else
|
||||
throwError $ err406
|
||||
{ errBody = "Amounts less than 0 are not acceptable"
|
||||
}
|
||||
productStockRefill Nothing _ =
|
||||
throwError $ err403
|
||||
{ errBody = "No Authentication present"
|
||||
}
|
||||
|
||||
productStockUpdate :: Maybe Int -> [AmountUpdate] -> MateHandler ()
|
||||
productStockUpdate (Just _) amoups = do
|
||||
if all ((>= 0) . amountUpdateRealAmount) amoups
|
||||
then do
|
||||
conn <- rsConnection <$> ask
|
||||
void $ manualProductAmountUpdate amoups conn
|
||||
else
|
||||
throwError $ err406
|
||||
{ errBody = "Amounts less than 0 are not acceptable"
|
||||
}
|
||||
productStockUpdate Nothing _ =
|
||||
throwError $ err403
|
||||
{ errBody = "No Authentication present"
|
||||
}
|
||||
|
||||
productList :: MateHandler [ProductOverview]
|
||||
productList = do
|
||||
conn <- rsConnection <$> ask
|
||||
productOverviewSelect conn
|
95
src/Control/User.hs
Normal file
95
src/Control/User.hs
Normal file
|
@ -0,0 +1,95 @@
|
|||
{-# LANGUAGE OverloadedStrings #-}
|
||||
module Control.User where
|
||||
|
||||
import Servant
|
||||
|
||||
import Control.Monad (void)
|
||||
|
||||
import Control.Monad.Reader (ask)
|
||||
|
||||
import Control.Monad.IO.Class (liftIO)
|
||||
|
||||
import Data.Time (getCurrentTime, utctDay)
|
||||
|
||||
import Data.ByteString.Random (random)
|
||||
|
||||
import qualified Data.Text as T
|
||||
|
||||
-- internal imports
|
||||
|
||||
import Types
|
||||
import Model
|
||||
|
||||
userNew :: UserSubmit -> MateHandler Int
|
||||
userNew us = do
|
||||
now <- liftIO $ getCurrentTime
|
||||
randSalt <- liftIO $ random 8
|
||||
conn <- rsConnection <$> ask
|
||||
insertUser us (utctDay now) randSalt conn
|
||||
|
||||
userGet :: Maybe Int -> Int -> MateHandler UserDetails
|
||||
userGet Nothing _ =
|
||||
throwError $ err403
|
||||
{ errBody = "No Authentication present"
|
||||
}
|
||||
userGet (Just aid) id =
|
||||
if aid == id
|
||||
then do
|
||||
now <- liftIO $ getCurrentTime
|
||||
conn <- rsConnection <$> ask
|
||||
-- void $ liftIO $ runUpdate_ conn (updateUser id us (utctDay now))
|
||||
userDetailsSelect conn id
|
||||
else
|
||||
throwError $ err403
|
||||
{ errBody = "Wrong Authentication present"
|
||||
}
|
||||
|
||||
userUpdate :: Maybe Int -> Int -> UserDetailsSubmit -> MateHandler ()
|
||||
userUpdate Nothing _ _ =
|
||||
throwError $ err403
|
||||
{ errBody = "No Authentication present"
|
||||
}
|
||||
userUpdate (Just aid) id uds =
|
||||
if aid == id
|
||||
then do
|
||||
now <- liftIO $ getCurrentTime
|
||||
conn <- rsConnection <$> ask
|
||||
void $ updateUserDetails id uds (utctDay now) conn
|
||||
else
|
||||
throwError $ err403
|
||||
{ errBody = "Wrong Authentication present"
|
||||
}
|
||||
|
||||
userList :: Maybe Int -> Maybe Refine -> MateHandler [User]
|
||||
userList muid ref = do
|
||||
conn <- rsConnection <$> ask
|
||||
userSelect conn ref
|
||||
|
||||
userRecharge :: Maybe Int -> UserRecharge -> MateHandler ()
|
||||
userRecharge (Just auid) (UserRecharge uid amount) =
|
||||
if auid == uid
|
||||
then
|
||||
if amount >= 0
|
||||
then do
|
||||
conn <- rsConnection <$> ask
|
||||
ud <- userDetailsSelect conn uid
|
||||
void $ insertNewJournalEntry
|
||||
(JournalSubmit
|
||||
("User \"" <> userDetailsIdent ud <> "\" recharged " <>
|
||||
T.pack (show (fromIntegral amount / 100 :: Double)))
|
||||
amount
|
||||
)
|
||||
conn
|
||||
void $ addToUserBalance uid amount conn
|
||||
else
|
||||
throwError $ err406
|
||||
{ errBody = "Amounts less or equal zero are not acceptable"
|
||||
}
|
||||
else
|
||||
throwError $ err403
|
||||
{ errBody = "Wrong Authentication present"
|
||||
}
|
||||
userRecharge Nothing _ =
|
||||
throwError $ err403
|
||||
{ errBody = "No Authentication present"
|
||||
}
|
Loading…
Reference in a new issue