diff --git a/apps/meteor/ee/server/lib/ldap/Manager.ts b/apps/meteor/ee/server/lib/ldap/Manager.ts index 21dc14a0d4103..716ce921baf27 100644 --- a/apps/meteor/ee/server/lib/ldap/Manager.ts +++ b/apps/meteor/ee/server/lib/ldap/Manager.ts @@ -196,7 +196,8 @@ export class LDAPEEManager extends LDAPManager { {}, { projection: { - _updatedAt: 0, + _id: 1, + name: 1, }, }, ).toArray()) as Array; @@ -223,11 +224,18 @@ export class LDAPEEManager extends LDAPManager { const userFields = ensureArray(fieldMap[ldapField]); for await (const userField of userFields) { - const [roleId] = userField.split(/\.(.+)/); - allowedRoles.push(roleId); + const [roleIdOrName] = userField.split(/\.(.+)/); + + const role = roles.find((role) => role._id === roleIdOrName) ?? roles.find((role) => role.name === roleIdOrName); + + if (role) { + allowedRoles.push(role._id); + } if (await this.isUserInGroup(ldap, syncUserRolesBaseDN, syncUserRolesFilter, { dn, username }, ldapField)) { - roleList.push(roleId); + if (role) { + roleList.push(role._id); + } continue; } } diff --git a/apps/meteor/server/models/raw/Roles.ts b/apps/meteor/server/models/raw/Roles.ts index ecbdc7a9efd03..59a316c9e42a8 100644 --- a/apps/meteor/server/models/raw/Roles.ts +++ b/apps/meteor/server/models/raw/Roles.ts @@ -131,7 +131,7 @@ export class RolesRaw extends BaseRaw implements IRolesModel { findInIds

(ids: IRole['_id'][], options?: FindOptions): P extends Pick ? FindCursor

: FindCursor { const query: Filter = { - name: { + _id: { $in: ids, }, };