merge master again (2.0-10 changelog only)
[sfa.git] / sfa / trust / rights.py
index bb4dffe..eb0bb74 100644 (file)
@@ -57,10 +57,10 @@ def determine_rights(type, name):
         rl.add("refresh")
         rl.add("resolve")
         rl.add("info")
-    elif type == "sa":
+    elif type in ["sa", "authority+sa"]:
         rl.add("authority")
         rl.add("sa")
-    elif type == "ma":
+    elif type in ["ma", "authority+ma", "cm", "authority+cm", "sm", "authority+sm"]:
         rl.add("authority")
         rl.add("ma")
     elif type == "authority":
@@ -73,6 +73,7 @@ def determine_rights(type, name):
         rl.add("bind")
         rl.add("control")
         rl.add("info")
+# wouldn't that be authority+cm instead ?
     elif type == "component":
         rl.add("operator")
     return rl
@@ -200,6 +201,7 @@ class Rights:
     # @param op_name is an operation to check, for example "listslices"
 
     def can_perform(self, op_name):
+        
         for right in self.rights:
             if right.can_perform(op_name):
                 return True
@@ -219,6 +221,7 @@ class Rights:
             for my_right in self.rights:
                 if my_right.is_superset(child_right):
                     allowed = True
+                    break
             if not allowed:
                 return False
         return True
@@ -244,47 +247,3 @@ class Rights:
                 return False
         return True
 
-
-
-    ##
-    # Determine the rights that an object should have. The rights are entirely
-    # dependent on the type of the object. For example, users automatically
-    # get "refresh", "resolve", and "info".
-    #
-    # @param type the type of the object (user | sa | ma | slice | node)
-    # @param name human readable name of the object (not used at this time)
-    #
-    # @return Rights object containing rights
-
-    def determine_rights(self, type, name):
-        rl = Rights()
-
-        # rights seem to be somewhat redundant with the type of the credential.
-        # For example, a "sa" credential implies the authority right, because
-        # a sa credential cannot be issued to a user who is not an owner of
-        # the authority
-
-        if type == "user":
-            rl.add("refresh")
-            rl.add("resolve")
-            rl.add("info")
-        elif type == "sa":
-            rl.add("authority")
-            rl.add("sa")
-        elif type == "ma":
-            rl.add("authority")
-            rl.add("ma")
-        elif type == "authority":
-            rl.add("authority")
-            rl.add("sa")
-            rl.add("ma")
-        elif type == "slice":
-            rl.add("refresh")
-            rl.add("embed")
-            rl.add("bind")
-            rl.add("control")
-            rl.add("info")
-        elif type == "component":
-            rl.add("operator")
-
-        return rl