aboutsummaryrefslogtreecommitdiff
path: root/lockchain-core/src/users/rights.rs
blob: 635df3cef0dfa4c38ab220fc3657ef0dd4031bb2 (plain)
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
//! Permission and access system for lockchain

use crate::traits::AutoEncoder;
use serde::{Serialize, Deserialize};

/// Specifies access to a resource
#[derive(Hash, Serialize, Deserialize, Clone, PartialEq, Eq)]
pub enum Access {
    /// A key that is only used to re-encrypt sub-keys
    Root,
    /// Allows access to vault metadata & index files
    Vault(Role),
    /// Allows access to a record resource inside a vault
    Record(Role, String),
}

impl AutoEncoder for Access {}

/// Specifies the capabilities of a user
#[derive(Hash, Serialize, Deserialize, Clone, PartialEq, Eq)]
pub enum Role {
    /// Only has read access
    Reader,
    /// Can edit any field in a record
    Editor,
    /// Can modify base structure, squash and delete records
    Admin,
}

impl AutoEncoder for Role {}