|
|
@ -9,7 +9,7 @@ use crate::{ |
|
|
|
core::{log_event, two_factor, CipherSyncData, CipherSyncType}, |
|
|
|
EmptyResult, JsonResult, Notify, PasswordOrOtpData, UpdateType, |
|
|
|
}, |
|
|
|
auth::{decode_invite, AdminHeaders, Headers, ManagerHeaders, ManagerHeadersLoose, OwnerHeaders}, |
|
|
|
auth::{decode_invite, AdminHeaders, ClientVersion, Headers, ManagerHeaders, ManagerHeadersLoose, OwnerHeaders}, |
|
|
|
db::{models::*, DbConn}, |
|
|
|
error::Error, |
|
|
|
mail, |
|
|
@ -2999,18 +2999,20 @@ async fn put_reset_password_enrollment( |
|
|
|
// We need to convert all keys so they have the first character to be a lowercase.
|
|
|
|
// Else the export will be just an empty JSON file.
|
|
|
|
#[get("/organizations/<org_id>/export")] |
|
|
|
async fn get_org_export(org_id: &str, headers: AdminHeaders, mut conn: DbConn) -> Json<Value> { |
|
|
|
use semver::{Version, VersionReq}; |
|
|
|
|
|
|
|
async fn get_org_export( |
|
|
|
org_id: &str, |
|
|
|
headers: AdminHeaders, |
|
|
|
client_version: Option<ClientVersion>, |
|
|
|
mut conn: DbConn, |
|
|
|
) -> Json<Value> { |
|
|
|
// Since version v2023.1.0 the format of the export is different.
|
|
|
|
// Also, this endpoint was created since v2022.9.0.
|
|
|
|
// Therefore, we will check for any version smaller then v2023.1.0 and return a different response.
|
|
|
|
// If we can't determine the version, we will use the latest default v2023.1.0 and higher.
|
|
|
|
// https://github.com/bitwarden/server/blob/9ca93381ce416454734418c3a9f99ab49747f1b6/src/Api/Controllers/OrganizationExportController.cs#L44
|
|
|
|
let use_list_response_model = if let Some(client_version) = headers.client_version { |
|
|
|
let ver_match = VersionReq::parse("<2023.1.0").unwrap(); |
|
|
|
let client_version = Version::parse(&client_version).unwrap(); |
|
|
|
ver_match.matches(&client_version) |
|
|
|
let use_list_response_model = if let Some(client_version) = client_version { |
|
|
|
let ver_match = semver::VersionReq::parse("<2023.1.0").unwrap(); |
|
|
|
ver_match.matches(&client_version.0) |
|
|
|
} else { |
|
|
|
false |
|
|
|
}; |
|
|
|