Edgewall Software

Ticket #8445: 8445-resource-key-r9250.patch

File 8445-resource-key-r9250.patch, 1.4 KB (added by rblank, 2 years ago)

Fix key for empty resources.

  • tracopt/perm/authz_policy.py

    diff --git a/tracopt/perm/authz_policy.py b/tracopt/perm/authz_policy.py
    a b  
    184184 
    185185    def normalise_resource(self, resource): 
    186186        def flatten(resource): 
    187             if not resource or not (resource.realm or resource.id): 
    188                 return [] 
     187            if not resource: 
     188                return ['*:*@*'] 
     189            if not (resource.realm or resource.id): 
     190                return ['%s:%s@%s' % (resource.realm or '*', 
     191                                      resource.id or '*', 
     192                                      resource.version or '*')] 
    189193            # XXX Due to the mixed functionality in resource we can end up with 
    190194            # ticket, ticket:1, ticket:1@10. This code naively collapses all 
    191195            # subsets of the parent resource into one. eg. ticket:1@10 
     
    205209    def authz_permissions(self, resource_key, username): 
    206210        # TODO: Handle permission negation in sections. eg. "if in this 
    207211        # ticket, remove TICKET_MODIFY" 
    208         valid_users = ['*', 'anonymous'] 
    209212        if username and username != 'anonymous': 
    210213            valid_users = ['*', 'authenticated', username] 
     214        else: 
     215            valid_users = ['*', 'anonymous'] 
    211216        for resource_section in [a for a in self.authz.sections 
    212217                                 if a != 'groups']: 
    213218            resource_glob = resource_section