Add vault-level access control
This commit is contained in:
parent
a8c813b9a7
commit
b3e98d32b6
1 changed files with 86 additions and 41 deletions
|
|
@ -1,6 +1,10 @@
|
|||
use std::default;
|
||||
|
||||
use rand::{Rng as _, distributions::Alphanumeric, thread_rng};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::app_state::database::models::VaultId;
|
||||
|
||||
#[derive(Debug, Deserialize, Serialize, Clone)]
|
||||
pub struct UserConfig {
|
||||
#[serde(default = "default_users")]
|
||||
|
|
@ -17,6 +21,7 @@ impl UserConfig {
|
|||
pub struct User {
|
||||
pub name: String,
|
||||
pub token: String,
|
||||
pub vault_access: VaultAccess,
|
||||
}
|
||||
|
||||
impl Default for UserConfig {
|
||||
|
|
@ -27,10 +32,25 @@ impl Default for UserConfig {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, Serialize, Clone, Default)]
|
||||
#[serde(rename_all = "snake_case", tag = "type")]
|
||||
pub enum VaultAccess {
|
||||
#[default]
|
||||
AllowAccessToAll,
|
||||
|
||||
AllowList(AllowListedVaults),
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize, Serialize, Clone, Default)]
|
||||
pub struct AllowListedVaults {
|
||||
pub allowed: Vec<VaultId>,
|
||||
}
|
||||
|
||||
fn default_users() -> Vec<User> {
|
||||
vec![User {
|
||||
name: "admin".to_owned(),
|
||||
token: get_random_token(),
|
||||
vault_access: VaultAccess::default(),
|
||||
}]
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue