vw_small

Hardened fork of Vaultwarden (https://github.com/dani-garcia/vaultwarden) with fewer features.
git clone https://git.philomathiclife.com/repos/vw_small
Log | Files | Refs | README

commit cb930a0858172bc64f99578f6050863712fd1225
parent 94810c106a96adab678434a93c9defe125fc8809
Author: Daniel GarcĂ­a <dani-garcia@users.noreply.github.com>
Date:   Fri,  7 Dec 2018 14:32:40 +0100

Remove some required values during login, now uses default values

Diffstat:
Msrc/api/identity.rs | 11++++-------
Msrc/db/models/cipher.rs | 4+---
Msrc/db/models/collection.rs | 4+---
Msrc/db/models/folder.rs | 4+---
Msrc/db/models/organization.rs | 5++---
Msrc/db/models/two_factor.rs | 4+---
Msrc/db/models/user.rs | 8+++-----
Msrc/util.rs | 4++++
8 files changed, 17 insertions(+), 27 deletions(-)

diff --git a/src/api/identity.rs b/src/api/identity.rs @@ -92,9 +92,9 @@ fn _password_login(data: ConnectData, conn: DbConn, remote: Option<SocketAddr>) )) } - let device_type: i32 = util::try_parse_string(data.device_type.as_ref()).expect("Invalid type"); - let device_id = data.device_identifier.clone().expect("Missing device id"); - let device_name = data.device_name.clone().expect("Missing device name"); + let device_type = util::try_parse_string(data.device_type.as_ref()).unwrap_or(0); + let device_id = data.device_identifier.clone().unwrap_or_else(|| crate::util::get_uuid()); + let device_name = data.device_name.clone().unwrap_or("unknown_device".into()); // Find device or create new let mut device = match Device::find_by_uuid(&device_id, &conn) { @@ -325,10 +325,7 @@ fn validate_data(data: &ConnectData) -> EmptyResult { _check_is_some(&data.client_id, "client_id cannot be blank")?; _check_is_some(&data.password, "password cannot be blank")?; _check_is_some(&data.scope, "scope cannot be blank")?; - _check_is_some(&data.username, "username cannot be blank")?; - _check_is_some(&data.device_identifier, "device_identifier cannot be blank")?; - _check_is_some(&data.device_name, "device_name cannot be blank")?; - _check_is_some(&data.device_type, "device_type cannot be blank") + _check_is_some(&data.username, "username cannot be blank") } } } diff --git a/src/db/models/cipher.rs b/src/db/models/cipher.rs @@ -1,8 +1,6 @@ use chrono::{NaiveDateTime, Utc}; use serde_json::Value; -use uuid::Uuid; - use super::{User, Organization, Attachment, FolderCipher, CollectionCipher, UserOrganization, UserOrgType, UserOrgStatus}; #[derive(Debug, Identifiable, Queryable, Insertable, Associations)] @@ -41,7 +39,7 @@ impl Cipher { let now = Utc::now().naive_utc(); Self { - uuid: Uuid::new_v4().to_string(), + uuid: crate::util::get_uuid(), created_at: now, updated_at: now, diff --git a/src/db/models/collection.rs b/src/db/models/collection.rs @@ -1,7 +1,5 @@ use serde_json::Value; -use uuid::Uuid; - use super::{Organization, UserOrganization, UserOrgType, UserOrgStatus}; #[derive(Debug, Identifiable, Queryable, Insertable, Associations)] @@ -18,7 +16,7 @@ pub struct Collection { impl Collection { pub fn new(org_uuid: String, name: String) -> Self { Self { - uuid: Uuid::new_v4().to_string(), + uuid: crate::util::get_uuid(), org_uuid, name, diff --git a/src/db/models/folder.rs b/src/db/models/folder.rs @@ -1,8 +1,6 @@ use chrono::{NaiveDateTime, Utc}; use serde_json::Value; -use uuid::Uuid; - use super::{User, Cipher}; #[derive(Debug, Identifiable, Queryable, Insertable, Associations)] @@ -33,7 +31,7 @@ impl Folder { let now = Utc::now().naive_utc(); Self { - uuid: Uuid::new_v4().to_string(), + uuid: crate::util::get_uuid(), created_at: now, updated_at: now, diff --git a/src/db/models/organization.rs b/src/db/models/organization.rs @@ -1,7 +1,6 @@ use std::cmp::Ordering; use serde_json::Value; -use uuid::Uuid; use super::{User, CollectionUser, Invitation}; #[derive(Debug, Identifiable, Queryable, Insertable)] @@ -159,7 +158,7 @@ impl Organization { pub fn new(name: String, billing_email: String) -> Self { Self { - uuid: Uuid::new_v4().to_string(), + uuid: crate::util::get_uuid(), name, billing_email, @@ -206,7 +205,7 @@ impl Organization { impl UserOrganization { pub fn new(user_uuid: String, org_uuid: String) -> Self { Self { - uuid: Uuid::new_v4().to_string(), + uuid: crate::util::get_uuid(), user_uuid, org_uuid, diff --git a/src/db/models/two_factor.rs b/src/db/models/two_factor.rs @@ -1,7 +1,5 @@ use serde_json::Value; -use uuid::Uuid; - use super::User; #[derive(Debug, Identifiable, Queryable, Insertable, Associations)] @@ -36,7 +34,7 @@ pub enum TwoFactorType { impl TwoFactor { pub fn new(user_uuid: String, type_: TwoFactorType, data: String) -> Self { Self { - uuid: Uuid::new_v4().to_string(), + uuid: crate::util::get_uuid(), user_uuid, type_: type_ as i32, enabled: true, diff --git a/src/db/models/user.rs b/src/db/models/user.rs @@ -1,8 +1,6 @@ use chrono::{NaiveDateTime, Utc}; use serde_json::Value; -use uuid::Uuid; - use crate::crypto; use crate::CONFIG; @@ -50,7 +48,7 @@ impl User { let email = mail.to_lowercase(); Self { - uuid: Uuid::new_v4().to_string(), + uuid: crate::util::get_uuid(), created_at: now, updated_at: now, name: email.clone(), @@ -61,7 +59,7 @@ impl User { salt: crypto::get_random_64(), password_iterations: CONFIG.password_iterations, - security_stamp: Uuid::new_v4().to_string(), + security_stamp: crate::util::get_uuid(), password_hint: None, private_key: None, @@ -100,7 +98,7 @@ impl User { } pub fn reset_security_stamp(&mut self) { - self.security_stamp = Uuid::new_v4().to_string(); + self.security_stamp = crate::util::get_uuid(); } pub fn is_server_admin(&self) -> bool { diff --git a/src/util.rs b/src/util.rs @@ -92,6 +92,10 @@ pub fn get_display_size(size: i32) -> String { format!("{} {}", size, UNITS[unit_counter]) } +pub fn get_uuid() -> String { + uuid::Uuid::new_v4().to_string() +} + /// /// String util methods