1 |
|
2 |
|
3 | var assert = require('assert-plus');
|
4 | var util = require('util');
|
5 |
|
6 | var ASN1 = require('asn1').Ber;
|
7 | var parents = require('ldap-filter');
|
8 |
|
9 | var Filter = require('./filter');
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 | function EqualityFilter(options) {
|
16 | parents.EqualityFilter.call(this, options);
|
17 | }
|
18 | util.inherits(EqualityFilter, parents.EqualityFilter);
|
19 | Filter.mixin(EqualityFilter);
|
20 | module.exports = EqualityFilter;
|
21 |
|
22 |
|
23 | EqualityFilter.prototype.matches = function (target, strictAttrCase) {
|
24 | assert.object(target, 'target');
|
25 |
|
26 | var tv = parents.getAttrValue(target, this.attribute, strictAttrCase);
|
27 | var value = this.value;
|
28 |
|
29 | if (this.attribute.toLowerCase() === 'objectclass') {
|
30 | |
31 |
|
32 |
|
33 |
|
34 | value = value.toLowerCase();
|
35 | return parents.testValues(function (v) {
|
36 | return value === v.toLowerCase();
|
37 | }, tv);
|
38 | } else {
|
39 | return parents.testValues(function (v) {
|
40 | return value === v;
|
41 | }, tv);
|
42 | }
|
43 | };
|
44 |
|
45 |
|
46 | EqualityFilter.prototype.parse = function (ber) {
|
47 | assert.ok(ber);
|
48 |
|
49 | this.attribute = ber.readString().toLowerCase();
|
50 | this.value = ber.readString(ASN1.OctetString, true);
|
51 |
|
52 | if (this.attribute === 'objectclass')
|
53 | this.value = this.value.toLowerCase();
|
54 |
|
55 | return true;
|
56 | };
|
57 |
|
58 |
|
59 | EqualityFilter.prototype._toBer = function (ber) {
|
60 | assert.ok(ber);
|
61 |
|
62 | ber.writeString(this.attribute);
|
63 | ber.writeBuffer(this.raw, ASN1.OctetString);
|
64 |
|
65 | return ber;
|
66 | };
|