summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Melmuk <[email protected]>2024-05-25 15:20:36 +0200
committerGitHub <[email protected]>2024-05-25 15:20:36 +0200
commitf01ef40a8ec1c59f81a575faad90bde73d3e9d48 (patch)
treec9734ab8b981a401dca6337af0cc5bc3d8d21abb
parent8e7b27cc36f02da6a02099be3bc5a59e42bcb1b6 (diff)
downloadvaultwarden-f01ef40a8ec1c59f81a575faad90bde73d3e9d48.tar.gz
vaultwarden-f01ef40a8ec1c59f81a575faad90bde73d3e9d48.zip
differentiate external groups by organization id (#4586)
-rw-r--r--src/api/core/public.rs3
-rw-r--r--src/db/models/group.rs5
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()