1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
use bonsaidb::core::{
admin::PermissionGroup,
connection::AsyncStorageConnection,
permissions::{Action, ResourceName, Statement},
schema::NamedCollection,
};
pub async fn initialize<Storage: AsyncStorageConnection>(
connection: &Storage,
) -> anyhow::Result<()> {
let admin = connection.admin().await;
PermissionGroup::entry_async("administrators", &admin)
.or_insert_with(|| PermissionGroup {
name: String::from("administrators"),
statements: vec![Statement::allow_all_for_any_resource()],
})
.await?;
Ok(())
}
pub fn project_resource_name(project_id: u32) -> ResourceName<'static> {
ResourceName::named("dossier")
.and("project")
.and(u64::from(project_id))
}
#[derive(Action, Debug)]
#[action(actionable = bonsaidb::core::actionable)]
pub enum DossierAction {
SyncFiles,
}