Skip to content

Commit

Permalink
Extract schema.polar file
Browse files Browse the repository at this point in the history
  • Loading branch information
s373r committed Jan 8, 2024
1 parent d66c0c8 commit 1f10c31
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 26 deletions.
27 changes: 1 addition & 26 deletions src/adapter/auth-oso/src/kamu_auth_oso.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,32 +40,7 @@ impl KamuAuthOso {
oso.register_class(DatasetResource::get_polar_class())?;
oso.register_class(UserActor::get_polar_class())?;

oso.load_str(
r#"
actor UserActor {}
resource DatasetResource {
permissions = ["read", "write"];
}
has_permission(actor: UserActor, "read", dataset: DatasetResource) if
dataset.allows_public_read or
dataset.created_by == actor.name or (
actor_name = actor.name and
dataset.authorized_users.(actor_name) in ["Reader", "Editor"]
);
has_permission(actor: UserActor, "write", dataset: DatasetResource) if
dataset.created_by == actor.name or (
actor_name = actor.name and
dataset.authorized_users.(actor_name) == "Editor"
);
allow(actor: UserActor, action: String, dataset: DatasetResource) if
actor.is_admin or
has_permission(actor, action, dataset);
"#,
)?;
oso.load_str(include_str!("schema.polar"))?;

Ok(oso)
}
Expand Down
22 changes: 22 additions & 0 deletions src/adapter/auth-oso/src/schema.polar
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
actor UserActor {}

resource DatasetResource {
permissions = ["read", "write"];
}

has_permission(actor: UserActor, "read", dataset: DatasetResource) if
dataset.allows_public_read or
dataset.created_by == actor.name or (
actor_name = actor.name and
dataset.authorized_users.(actor_name) in ["Reader", "Editor"]
);

has_permission(actor: UserActor, "write", dataset: DatasetResource) if
dataset.created_by == actor.name or (
actor_name = actor.name and
dataset.authorized_users.(actor_name) == "Editor"
);

allow(actor: UserActor, action: String, dataset: DatasetResource) if
actor.is_admin or
has_permission(actor, action, dataset);

0 comments on commit 1f10c31

Please sign in to comment.