aboutsummaryrefslogtreecommitdiff
path: root/crates/secd/src/auth/z.rs
diff options
context:
space:
mode:
authorbenj <benj@rse8.com>2023-04-24 13:24:45 -0700
committerbenj <benj@rse8.com>2023-04-24 13:24:45 -0700
commiteb92f823c31a5e702af7005231f0d6915aad3342 (patch)
treebb624786a47accb2dfcfe95d20c00c9624c28a9c /crates/secd/src/auth/z.rs
parent176aae037400b43cb3971cd968afe59c73b3097a (diff)
downloadsecdiam-eb92f823c31a5e702af7005231f0d6915aad3342.tar
secdiam-eb92f823c31a5e702af7005231f0d6915aad3342.tar.gz
secdiam-eb92f823c31a5e702af7005231f0d6915aad3342.tar.bz2
secdiam-eb92f823c31a5e702af7005231f0d6915aad3342.tar.lz
secdiam-eb92f823c31a5e702af7005231f0d6915aad3342.tar.xz
secdiam-eb92f823c31a5e702af7005231f0d6915aad3342.tar.zst
secdiam-eb92f823c31a5e702af7005231f0d6915aad3342.zip
email templates, sendgrid, creds, and some experimental things
Started playing with namespace configs and integrating with zanzibar impls. Still lot's of experimenting and dead code going on.
Diffstat (limited to 'crates/secd/src/auth/z.rs')
-rw-r--r--crates/secd/src/auth/z.rs61
1 files changed, 0 insertions, 61 deletions
diff --git a/crates/secd/src/auth/z.rs b/crates/secd/src/auth/z.rs
deleted file mode 100644
index 31f449c..0000000
--- a/crates/secd/src/auth/z.rs
+++ /dev/null
@@ -1,61 +0,0 @@
-use uuid::Uuid;
-
-use crate::{Secd, SecdError};
-
-pub type Namespace = String;
-pub type Object = (Namespace, Uuid);
-pub type Relation = String;
-
-pub struct Relationship {
- pub subject: Subject,
- pub object: Object,
- pub relation: Relation,
-}
-
-#[derive(Clone)]
-pub enum Subject {
- User(Object),
- UserSet { user: Object, relation: Relation },
-}
-
-impl Secd {
- pub async fn check(&self, r: &Relationship) -> Result<bool, SecdError> {
- let spice = self
- .spice
- .clone()
- .expect("TODO: only supports postgres right now");
-
- Ok(spice.check_permission(r).await?)
- }
- pub async fn expand(&self) -> Result<(), SecdError> {
- todo!()
- }
- pub async fn read(&self) -> Result<(), SecdError> {
- todo!()
- }
- pub async fn watch(&self) -> Result<(), SecdError> {
- unimplemented!()
- }
- pub async fn write(&self, ts: &[Relationship]) -> Result<(), SecdError> {
- let spice = self
- .spice
- .clone()
- .expect("TODO: only supports postgres right now");
-
- // Since spice doesn't really have a great schema pattern, we
- // prefix all incoming write relationships with an r_ to indicate
- // they are "relationships" rather than what spice calls permissions
- spice
- .write_relationship(
- &ts.into_iter()
- .map(|r| Relationship {
- subject: r.subject.clone(),
- object: r.object.clone(),
- relation: format!("r_{}", r.relation),
- })
- .collect::<Vec<Relationship>>(),
- )
- .await?;
- Ok(())
- }
-}