123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- // Copyright 2011 Mark Cavage, Inc. All rights reserved.
-
- var assert = require('assert-plus');
- var util = require('util');
-
- var ASN1 = require('asn1').Ber;
- var parents = require('ldap-filter');
-
- var Filter = require('./filter');
-
-
-
- ///--- API
-
- function EqualityFilter(options) {
- parents.EqualityFilter.call(this, options);
- }
- util.inherits(EqualityFilter, parents.EqualityFilter);
- Filter.mixin(EqualityFilter);
- module.exports = EqualityFilter;
-
-
- EqualityFilter.prototype.matches = function (target, strictAttrCase) {
- assert.object(target, 'target');
-
- var tv = parents.getAttrValue(target, this.attribute, strictAttrCase);
- var value = this.value;
-
- if (this.attribute.toLowerCase() === 'objectclass') {
- /*
- * Perform case-insensitive match for objectClass since nearly every LDAP
- * implementation behaves in this manner.
- */
- value = value.toLowerCase();
- return parents.testValues(function (v) {
- return value === v.toLowerCase();
- }, tv);
- } else {
- return parents.testValues(function (v) {
- return value === v;
- }, tv);
- }
- };
-
-
- EqualityFilter.prototype.parse = function (ber) {
- assert.ok(ber);
-
- this.attribute = ber.readString().toLowerCase();
- this.value = ber.readString(ASN1.OctetString, true);
-
- if (this.attribute === 'objectclass')
- this.value = this.value.toLowerCase();
-
- return true;
- };
-
-
- EqualityFilter.prototype._toBer = function (ber) {
- assert.ok(ber);
-
- ber.writeString(this.attribute);
- ber.writeBuffer(this.raw, ASN1.OctetString);
-
- return ber;
- };
|