Updated all the contrib modules to their latest versions.
[yaffs-website] / web / modules / contrib / permissions_by_term / js / src / client / permission-output-collector.prototype.js
1 import _ from 'lodash';
2
3 /**
4  * @param PermissionOutput permissionOutput
5  */
6 let PermissionsOutputCollector = function(permissionOutput) {
7   this.permissionOutput = permissionOutput;
8 }
9
10 PermissionsOutputCollector.prototype.collect = function(permissions, tidsByInputs) {
11   this._collectRoles(permissions, tidsByInputs);
12   this._collectUsers(permissions, tidsByInputs);
13 }
14
15 PermissionsOutputCollector.prototype._collectRoles = function(permissions, tidsByInputs) {
16
17   for (let tids of tidsByInputs) {
18
19     for (let tidToRole in permissions.tidsToRoles) {
20
21       if (_.includes(tids, tidToRole)) {
22
23         for (let role of permissions.tidsToRoles[tidToRole]) {
24           if (!_.includes(this.permissionOutput.getRoles(), role)) {
25             this.permissionOutput.addRole(role);
26           }
27         }
28
29       }
30
31     }
32
33   }
34
35 }
36
37 PermissionsOutputCollector.prototype._collectUsers = function(permissions, tidsByInputs) {
38
39   for (let tids of tidsByInputs) {
40
41     for (let tidToUsername in permissions.tidToUsernames) {
42       if (_.includes(tids, tidToUsername)) {
43         for (let username of permissions.tidToUsernames[tidToUsername]) {
44           if (!_.includes(this.permissionOutput.getUsernames(), username)) {
45             this.permissionOutput.addUsername(username);
46           }
47         }
48
49       }
50
51     }
52
53   }
54 }
55
56 /**
57  * @returns PermissionOutput
58  */
59 PermissionsOutputCollector.prototype.getPermissionOutput = function() {
60   return this.permissionOutput;
61 }
62
63 export default PermissionsOutputCollector;