ldapts
Version:
LDAP client
54 lines (40 loc) • 1.16 kB
text/typescript
import type { BerWriter } from 'asn1';
import type { SearchFilterValues } from '../SearchFilter.js';
import { SearchFilter } from '../SearchFilter.js';
import { Filter } from './Filter.js';
export interface AndFilterOptions {
filters: Filter[];
}
export class AndFilter extends Filter {
public type: SearchFilterValues = SearchFilter.and;
public filters: Filter[];
public constructor(options: AndFilterOptions) {
super();
this.filters = options.filters;
}
public override writeFilter(writer: BerWriter): void {
for (const filter of this.filters) {
filter.write(writer);
}
}
public override matches(objectToCheck: Record<string, string> = {}, strictAttributeCase?: boolean): boolean {
if (!this.filters.length) {
// per RFC4526
return true;
}
for (const filter of this.filters) {
if (!filter.matches(objectToCheck, strictAttributeCase)) {
return false;
}
}
return true;
}
public override toString(): string {
let result = '(&';
for (const filter of this.filters) {
result += filter.toString();
}
result += ')';
return result;
}
}