diff --git a/services/graph/pkg/identity/ldap_education_school.go b/services/graph/pkg/identity/ldap_education_school.go index c87c4b6dd7..4d071b6164 100644 --- a/services/graph/pkg/identity/ldap_education_school.go +++ b/services/graph/pkg/identity/ldap_education_school.go @@ -233,7 +233,7 @@ func (i *LDAP) updateSchoolProperties(ctx context.Context, dn string, currentSch mr := ldap.NewModifyRequest(dn, nil) if updatedSchoolNumber, ok := updatedSchool.GetSchoolNumberOk(); ok { if *updatedSchoolNumber != "" && currentSchool.GetSchoolNumber() != *updatedSchoolNumber { - _, err := i.getSchoolByNumberOrID(*updatedSchoolNumber) + _, err := i.getSchoolByNumber(*updatedSchoolNumber) if err == nil { return errorcode.New(errorcode.NameAlreadyExists, "A school with that number is already present") } @@ -647,6 +647,16 @@ func (i *LDAP) getSchoolByNumberOrID(numberOrID string) (*ldap.Entry, error) { return i.getSchoolByFilter(filter) } +func (i *LDAP) getSchoolByNumber(schoolNumber string) (*ldap.Entry, error) { + schoolNumber = ldap.EscapeFilter(schoolNumber) + filter := fmt.Sprintf( + "(%s=%s)", + i.educationConfig.schoolAttributeMap.schoolNumber, + schoolNumber, + ) + return i.getSchoolByFilter(filter) +} + func (i *LDAP) getSchoolByFilter(filter string) (*ldap.Entry, error) { filter = fmt.Sprintf("(&%s(objectClass=%s)%s)", i.educationConfig.schoolFilter,