module Data.RBAC.Internal.Types
( module Data.RBAC.Internal.Role
, module Data.RBAC.Internal.Rule
, RoleMonad(..)
, RuleChecker(..)
) where
import Control.Applicative
import Control.Monad.Reader
import Control.Monad.Logic
import Data.RBAC.Internal.Role
import Data.RBAC.Internal.Rule
newtype RoleMonad a = RoleMonad { _unRC :: Logic a }
deriving (Alternative, Applicative, Functor, Monad, MonadPlus, MonadLogic)
newtype RuleChecker a = RuleChecker (ReaderT (RoleMonad Role) RoleMonad a)
deriving (Alternative, Applicative, Functor, Monad, MonadPlus, MonadLogic)