diff --git a/src/Control/Settings.hs b/src/Control/Settings.hs new file mode 100644 index 0000000..a8acd3d --- /dev/null +++ b/src/Control/Settings.hs @@ -0,0 +1,30 @@ +{-# LANGUAGE OverloadedStrings #-} +module Control.Settings where + +import Control.Monad.Reader + +import Servant + +-- internal imports + +import Types +import Model.Settings +import Util (checkCapability) + +getSettings + :: Maybe (Int, AuthMethod) + -> MateHandler Settings +getSettings Nothing = do + throwError $ err401 + { errBody = "No authentication present" + } +getSettings (Just (uid, method)) = do + isManager <- checkCapability uid roleCanManageSettings + if method `elem` [PrimaryPass, ChallengeResponse] && isManager + then do + conn <- asks rsConnection + selectSettings conn + else + throwError $ err401 + { errBody = "Wrong Authentication present" + }