Spiegel von
https://github.com/dani-garcia/vaultwarden.git
synchronisiert 2025-01-03 11:06:43 +01:00
add emergency_access_id
Dieser Commit ist enthalten in:
Ursprung
c0bf5162a8
Commit
6d34f0630c
3 geänderte Dateien mit 12 neuen und 6 gelöschten Zeilen
|
@ -452,7 +452,7 @@ struct UpdateFolderData {
|
||||||
#[derive(Deserialize)]
|
#[derive(Deserialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
struct UpdateEmergencyAccessData {
|
struct UpdateEmergencyAccessData {
|
||||||
id: String,
|
id: EmergencyAccessId,
|
||||||
key_encrypted: String,
|
key_encrypted: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -508,9 +508,9 @@ fn validate_keydata(
|
||||||
|
|
||||||
// Check that we're correctly rotating all the user's emergency access keys
|
// Check that we're correctly rotating all the user's emergency access keys
|
||||||
let existing_emergency_access_ids =
|
let existing_emergency_access_ids =
|
||||||
existing_emergency_access.iter().map(|ea| ea.uuid.as_str()).collect::<HashSet<_>>();
|
existing_emergency_access.iter().map(|ea| &ea.uuid).collect::<HashSet<&EmergencyAccessId>>();
|
||||||
let provided_emergency_access_ids =
|
let provided_emergency_access_ids =
|
||||||
data.emergency_access_keys.iter().map(|ea| ea.id.as_str()).collect::<HashSet<_>>();
|
data.emergency_access_keys.iter().map(|ea| &ea.id).collect::<HashSet<&EmergencyAccessId>>();
|
||||||
if !provided_emergency_access_ids.is_superset(&existing_emergency_access_ids) {
|
if !provided_emergency_access_ids.is_superset(&existing_emergency_access_ids) {
|
||||||
err!("All existing emergency access keys must be included in the rotation")
|
err!("All existing emergency access keys must be included in the rotation")
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
use chrono::{NaiveDateTime, Utc};
|
use chrono::{NaiveDateTime, Utc};
|
||||||
|
use derive_more::{AsRef, Deref, Display, From};
|
||||||
use serde_json::Value;
|
use serde_json::Value;
|
||||||
|
|
||||||
use crate::{api::EmptyResult, db::DbConn, error::MapResult};
|
use crate::{api::EmptyResult, db::DbConn, error::MapResult};
|
||||||
|
@ -11,7 +12,7 @@ db_object! {
|
||||||
#[diesel(treat_none_as_null = true)]
|
#[diesel(treat_none_as_null = true)]
|
||||||
#[diesel(primary_key(uuid))]
|
#[diesel(primary_key(uuid))]
|
||||||
pub struct EmergencyAccess {
|
pub struct EmergencyAccess {
|
||||||
pub uuid: String,
|
pub uuid: EmergencyAccessId,
|
||||||
pub grantor_uuid: UserId,
|
pub grantor_uuid: UserId,
|
||||||
pub grantee_uuid: Option<UserId>,
|
pub grantee_uuid: Option<UserId>,
|
||||||
pub email: Option<String>,
|
pub email: Option<String>,
|
||||||
|
@ -33,7 +34,7 @@ impl EmergencyAccess {
|
||||||
let now = Utc::now().naive_utc();
|
let now = Utc::now().naive_utc();
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
uuid: crate::util::get_uuid(),
|
uuid: EmergencyAccessId(crate::util::get_uuid()),
|
||||||
grantor_uuid,
|
grantor_uuid,
|
||||||
grantee_uuid: None,
|
grantee_uuid: None,
|
||||||
email: Some(email),
|
email: Some(email),
|
||||||
|
@ -349,3 +350,8 @@ impl EmergencyAccess {
|
||||||
}
|
}
|
||||||
|
|
||||||
// endregion
|
// endregion
|
||||||
|
|
||||||
|
#[derive(
|
||||||
|
Clone, Debug, AsRef, Deref, DieselNewType, Display, From, FromForm, Hash, PartialEq, Eq, Serialize, Deserialize,
|
||||||
|
)]
|
||||||
|
pub struct EmergencyAccessId(String);
|
||||||
|
|
|
@ -21,7 +21,7 @@ pub use self::auth_request::{AuthRequest, AuthRequestId};
|
||||||
pub use self::cipher::{Cipher, CipherId, RepromptType};
|
pub use self::cipher::{Cipher, CipherId, RepromptType};
|
||||||
pub use self::collection::{Collection, CollectionCipher, CollectionId, CollectionUser};
|
pub use self::collection::{Collection, CollectionCipher, CollectionId, CollectionUser};
|
||||||
pub use self::device::{Device, DeviceId, DeviceType};
|
pub use self::device::{Device, DeviceId, DeviceType};
|
||||||
pub use self::emergency_access::{EmergencyAccess, EmergencyAccessStatus, EmergencyAccessType};
|
pub use self::emergency_access::{EmergencyAccess, EmergencyAccessId, EmergencyAccessStatus, EmergencyAccessType};
|
||||||
pub use self::event::{Event, EventType};
|
pub use self::event::{Event, EventType};
|
||||||
pub use self::favorite::Favorite;
|
pub use self::favorite::Favorite;
|
||||||
pub use self::folder::{Folder, FolderCipher, FolderId};
|
pub use self::folder::{Folder, FolderCipher, FolderId};
|
||||||
|
|
Laden …
In neuem Issue referenzieren