diff options
Diffstat (limited to 'lockchain-files/src/create.rs')
-rw-r--r-- | lockchain-files/src/create.rs | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/lockchain-files/src/create.rs b/lockchain-files/src/create.rs index e35c449..af84a83 100644 --- a/lockchain-files/src/create.rs +++ b/lockchain-files/src/create.rs @@ -18,40 +18,47 @@ impl<T: Body> FileVault<T> { /// A small utility to create a new file vault pub(crate) fn create(gen: Generator) -> Result<Self, VaultError> { let (name, location) = Self::get_path(&gen)?; + let vault_type = gen + .user_type + .as_ref() + .ok_or(VaultError::IncompleteGenerator)?; let fs = Filesystem::new(location, name); fs.scaffold().map_err(|_| VaultError::FailedCreation)?; - let config = VaultConfig::new(&gen)?; + let config = VaultConfig::new(&vault_type)?; let mut users = UserStore::new(); /* At this point we'll have to create some user */ use self::VaultType::*; - match &config.vault_type { - SoloUser { username, secret } => users.add_user( - username.clone(), - Key::from_pw(KeyType::Aes256, &secret, &username), - ), - Administrated { secret } => users.add_user( - "Admin".into(), - Key::from_pw(KeyType::Aes256, &secret, "admin"), - ), + match vault_type { + SoloUser { username, secret } => users.add_user(username.clone(), secret.clone()), + Administrated { secret } => users.add_user("Admin".into(), secret.clone()), } let mut me = Self { config, fs, users, - ..Default::default() + records: HashMap::new(), + headers: HashMap::new(), + metadata: HashMap::new(), }; - /* Make sure to sync all made changes after the scaffold */ + /* Make sure to sync all changes made after scaffold */ me.sync(); Ok(me) } fn get_path(gen: &Generator) -> Result<(&str, &str), VaultError> { - Err(VaultError::IncompleteGenerator) + match gen { + &Generator { + name: Some(ref n), + location: Some(ref l), + .. + } => Ok((&n, &l)), + _ => Err(VaultError::IncompleteGenerator), + } } } |