From be9b6f68a60bec0cda4b905e9311a9076f778976 Mon Sep 17 00:00:00 2001 From: Igor Pashev Date: Sat, 26 Nov 2016 21:41:59 +0300 Subject: Populate permission database from a file --- src/Sproxy/Server/DB/DataFile.hs | 69 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/Sproxy/Server/DB/DataFile.hs (limited to 'src/Sproxy/Server/DB/DataFile.hs') diff --git a/src/Sproxy/Server/DB/DataFile.hs b/src/Sproxy/Server/DB/DataFile.hs new file mode 100644 index 0000000..efac923 --- /dev/null +++ b/src/Sproxy/Server/DB/DataFile.hs @@ -0,0 +1,69 @@ +{-# LANGUAGE OverloadedStrings #-} +module Sproxy.Server.DB.DataFile ( + DataFile(..) +, GroupMember(..) +, GroupPrivilege(..) +, PrivilegeRule(..) +) where + +import Control.Applicative (empty) +import Data.Aeson (FromJSON, parseJSON) +import Data.Text (Text) +import Data.Yaml (Value(Object), (.:)) + + +data DataFile = DataFile { + groupMember :: [GroupMember] +, groupPrivilege :: [GroupPrivilege] +, privilegeRule :: [PrivilegeRule] +} deriving (Show) + +instance FromJSON DataFile where + parseJSON (Object m) = DataFile <$> + m .: "group_member" + <*> m .: "group_privilege" + <*> m .: "privilege_rule" + parseJSON _ = empty + + +data GroupMember = GroupMember { + gmGroup :: Text +, gmEmail :: Text +} deriving (Show) + +instance FromJSON GroupMember where + parseJSON (Object m) = GroupMember <$> + m .: "group" + <*> m .: "email" + parseJSON _ = empty + + +data GroupPrivilege = GroupPrivilege { + gpGroup :: Text +, gpDomain :: Text +, gpPrivilege :: Text +} deriving (Show) + +instance FromJSON GroupPrivilege where + parseJSON (Object m) = GroupPrivilege <$> + m .: "group" + <*> m .: "domain" + <*> m .: "privilege" + parseJSON _ = empty + + +data PrivilegeRule = PrivilegeRule { + prDomain :: Text +, prPrivilege :: Text +, prPath :: Text +, prMethod :: Text +} deriving (Show) + +instance FromJSON PrivilegeRule where + parseJSON (Object m) = PrivilegeRule <$> + m .: "domain" + <*> m .: "privilege" + <*> m .: "path" + <*> m .: "method" + parseJSON _ = empty + -- cgit v1.2.3