merge changes from HEAD
[plcapi.git] / PLC / Methods / GetNodes.py
index d308a4f..38dc8f0 100644 (file)
@@ -37,7 +37,16 @@ class GetNodes(Method):
         # Remove admin only fields
         if not isinstance(self.caller, Person) or \
            'admin' not in self.caller['roles']:
+           slice_ids = set()
+           if self.caller:
+               slice_ids.update(self.caller['slice_ids'])
             for node in nodes:
+               # if node has whitelist, make sure the user has a slice on the whitelist 
+               if 'slice_ids_whitelist' in node and \
+                  node['slice_ids_whitelist'] and \
+                  not slice_ids.intersection(node['slice_ids_whitelist']):
+                   nodes.remove(node)
+                   continue 
                 for field in ['boot_nonce', 'key', 'session', 'root_person_ids']:
                     if field in node:
                         del node[field]