graph/education: Add getSchoolByNumber helper

Sometimes we explicit need to lookup by number and not numberOrID
This commit is contained in:
Ralf Haferkamp
2023-09-25 17:50:10 +02:00
committed by Ralf Haferkamp
parent ce808eaa17
commit e2849bf19d

View File

@@ -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,