diff options
author | Stefan Melmuk <[email protected]> | 2024-05-25 15:20:36 +0200 |
---|---|---|
committer | GitHub <[email protected]> | 2024-05-25 15:20:36 +0200 |
commit | f01ef40a8ec1c59f81a575faad90bde73d3e9d48 (patch) | |
tree | c9734ab8b981a401dca6337af0cc5bc3d8d21abb | |
parent | 8e7b27cc36f02da6a02099be3bc5a59e42bcb1b6 (diff) | |
download | vaultwarden-f01ef40a8ec1c59f81a575faad90bde73d3e9d48.tar.gz vaultwarden-f01ef40a8ec1c59f81a575faad90bde73d3e9d48.zip |
differentiate external groups by organization id (#4586)
-rw-r--r-- | src/api/core/public.rs | 3 | ||||
-rw-r--r-- | src/db/models/group.rs | 5 |
2 files changed, 5 insertions, 3 deletions
diff --git a/src/api/core/public.rs b/src/api/core/public.rs index 1056f4bb..19cd0de8 100644 --- a/src/api/core/public.rs +++ b/src/api/core/public.rs @@ -137,7 +137,8 @@ async fn ldap_import(data: JsonUpcase<OrgImportData>, token: PublicToken, mut co if CONFIG.org_groups_enabled() { for group_data in &data.Groups { - let group_uuid = match Group::find_by_external_id(&group_data.ExternalId, &mut conn).await { + let group_uuid = match Group::find_by_external_id_and_org(&group_data.ExternalId, &org_id, &mut conn).await + { Some(group) => group.uuid, None => { let mut group = diff --git a/src/db/models/group.rs b/src/db/models/group.rs index e50853e2..7faf7566 100644 --- a/src/db/models/group.rs +++ b/src/db/models/group.rs @@ -203,10 +203,11 @@ impl Group { }} } - pub async fn find_by_external_id(id: &str, conn: &mut DbConn) -> Option<Self> { + pub async fn find_by_external_id_and_org(external_id: &str, org_uuid: &str, conn: &mut DbConn) -> Option<Self> { db_run! { conn: { groups::table - .filter(groups::external_id.eq(id)) + .filter(groups::external_id.eq(external_id)) + .filter(groups::organizations_uuid.eq(org_uuid)) .first::<GroupDb>(conn) .ok() .from_db() |