1use std::hash::Hash;
2use thiserror::Error;
3
4pub mod rbac;
5
6#[derive(Error, Debug)]
7pub enum Error {
8 #[error("Forbidden")]
9 Forbidden,
10}
11
12pub struct ProtectedResource<R> {
13 resource: R,
14}
15
16pub trait Resource {
23 type Action: Hash + Eq;
24
25 }
27
28pub trait Subject {}
29
30pub trait Policy<Res, Subj>
31where
32 Res: Resource,
33 Subj: Subject,
34{
35 fn authorise(&self, resource: &Res, subject: &Subj, action: &Res::Action) -> Result<(), Error> {
36 Err(Error::Forbidden)
37 }
38}