From e2849bf19d7f9635138ca0a801dddf411403cbdd Mon Sep 17 00:00:00 2001 From: Ralf Haferkamp Date: Mon, 25 Sep 2023 17:50:10 +0200 Subject: [PATCH] graph/education: Add getSchoolByNumber helper Sometimes we explicit need to lookup by number and not numberOrID --- services/graph/pkg/identity/ldap_education_school.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) 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,