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
diff --git a/web/modules/contrib/permissions_by_term/js/src/client/permission-output-collector.prototype.js b/web/modules/contrib/permissions_by_term/js/src/client/permission-output-collector.prototype.js
new file mode 100644 (file)
index 0000000..4a967b6
--- /dev/null
@@ -0,0 +1,63 @@
+import _ from 'lodash';
+
+/**
+ * @param PermissionOutput permissionOutput
+ */
+let PermissionsOutputCollector = function(permissionOutput) {
+  this.permissionOutput = permissionOutput;
+}
+
+PermissionsOutputCollector.prototype.collect = function(permissions, tidsByInputs) {
+  this._collectRoles(permissions, tidsByInputs);
+  this._collectUsers(permissions, tidsByInputs);
+}
+
+PermissionsOutputCollector.prototype._collectRoles = function(permissions, tidsByInputs) {
+
+  for (let tids of tidsByInputs) {
+
+    for (let tidToRole in permissions.tidsToRoles) {
+
+      if (_.includes(tids, tidToRole)) {
+
+        for (let role of permissions.tidsToRoles[tidToRole]) {
+          if (!_.includes(this.permissionOutput.getRoles(), role)) {
+            this.permissionOutput.addRole(role);
+          }
+        }
+
+      }
+
+    }
+
+  }
+
+}
+
+PermissionsOutputCollector.prototype._collectUsers = function(permissions, tidsByInputs) {
+
+  for (let tids of tidsByInputs) {
+
+    for (let tidToUsername in permissions.tidToUsernames) {
+      if (_.includes(tids, tidToUsername)) {
+        for (let username of permissions.tidToUsernames[tidToUsername]) {
+          if (!_.includes(this.permissionOutput.getUsernames(), username)) {
+            this.permissionOutput.addUsername(username);
+          }
+        }
+
+      }
+
+    }
+
+  }
+}
+
+/**
+ * @returns PermissionOutput
+ */
+PermissionsOutputCollector.prototype.getPermissionOutput = function() {
+  return this.permissionOutput;
+}
+
+export default PermissionsOutputCollector;
\ No newline at end of file