def list_org_roles(actor_id):

    try:
        ret = find_roles_by_actor(str(actor_id))
        return gateway_json_response(ret)

    except Exception as e:
        return build_error_response(e)
def list_org_roles(actor_id):

    try:
        ret = find_roles_by_actor(str(actor_id))
        return gateway_json_response(ret)

    except Exception, e:
        return build_error_response(e)
Example #3
0
 def extend_user_session_attributes(self, session, actor_obj):
     if actor_obj and hasattr(actor_obj, "_id"):
         actor_id = actor_obj._id
         roles = find_roles_by_actor(actor_id)  # dict with org gov names to list of role gov names
         role_list = ["%s.%s" % (on, rn) for (on, rl) in roles.iteritems() for rn in rl]
         session["auth_roles"] = sorted(role_list)
     else:
         session["auth_roles"] = []
Example #4
0
 def extend_user_session_attributes(self, session, actor_obj):
     if actor_obj and hasattr(actor_obj, "_id"):
         actor_id = actor_obj._id
         roles = find_roles_by_actor(
             actor_id)  # dict with org gov names to list of role gov names
         role_list = [
             "%s.%s" % (on, rn) for (on, rl) in roles.iteritems()
             for rn in rl
         ]
         session["auth_roles"] = sorted(role_list)
     else:
         session["auth_roles"] = []
Example #5
0
    def test_get_actor_header(self):

        #Setup data
        actor = IonObject(RT.ActorIdentity, name='actor1')
        actor_id, _ = self.rr.create(actor)

        ion_org = IonObject(RT.Org, name='ION', org_governance_name='ION')
        ion_org_id, _ = self.rr.create(ion_org)
        ion_org._id = ion_org_id

        manager_role = IonObject(RT.UserRole, name='Org Manager', governance_name=ORG_MANAGER_ROLE, description='Org Manager')
        manager_role_id = self.add_user_role(ion_org, manager_role)

        member_role = IonObject(RT.UserRole, name='Org Member', governance_name=ORG_MEMBER_ROLE, description='Org Member')


        # all actors have a defaul org_member_role
        actor_roles = find_roles_by_actor(actor_id)
        self.assertDictEqual(actor_roles, {'ION': [ORG_MEMBER_ROLE]})

        actor_header = get_actor_header(actor_id)
        self.assertDictEqual(actor_header, {'ion-actor-id': actor_id, 'ion-actor-roles': {'ION': [ORG_MEMBER_ROLE]}})

        #Add Org Manager Role
        self.rr.create_association(actor_id, PRED.hasRole, manager_role_id)

        actor_roles = find_roles_by_actor(actor_id)
        role_header = get_role_message_headers({'ION': [manager_role, member_role]})
        self.assertDictEqual(actor_roles, role_header)

        org2 = IonObject(RT.Org, name='Org 2', org_governance_name='Second_Org')

        org2_id, _ = self.rr.create(org2)
        org2._id = org2_id


        member2_role = IonObject(RT.UserRole, governance_name=ORG_MEMBER_ROLE, name='Org Member', description='Org Member')
        member2_role_id = self.add_user_role(org2, member2_role)

        operator2_role = IonObject(RT.UserRole, governance_name='INSTRUMENT_OPERATOR', name='Instrument Operator',
                                   description='Instrument Operator')
        operator2_role_id = self.add_user_role(org2, operator2_role)

        self.rr.create_association(actor_id, PRED.hasRole, member2_role_id)

        self.rr.create_association(actor_id, PRED.hasRole, operator2_role_id)

        actor_roles = find_roles_by_actor(actor_id)

        role_header = get_role_message_headers({'ION': [manager_role, member_role], 'Second_Org': [operator2_role, member2_role]})

        self.assertEqual(len(actor_roles), 2)
        self.assertEqual(len(role_header), 2)
        self.assertIn('Second_Org', actor_roles)
        self.assertIn('Second_Org', role_header)
        self.assertEqual(len(actor_roles['Second_Org']), 2)
        self.assertEqual(len(role_header['Second_Org']), 2)
        self.assertIn('INSTRUMENT_OPERATOR', actor_roles['Second_Org'])
        self.assertIn('INSTRUMENT_OPERATOR', role_header['Second_Org'])
        self.assertIn(ORG_MEMBER_ROLE, actor_roles['Second_Org'])
        self.assertIn(ORG_MEMBER_ROLE, role_header['Second_Org'])
        self.assertIn('ION', actor_roles)
        self.assertIn('ION', role_header)
        self.assertIn(ORG_MANAGER_ROLE, actor_roles['ION'])
        self.assertIn(ORG_MEMBER_ROLE, actor_roles['ION'])
        self.assertIn(ORG_MANAGER_ROLE, role_header['ION'])
        self.assertIn(ORG_MEMBER_ROLE, role_header['ION'])

        actor_header = get_actor_header(actor_id)

        self.assertEqual(actor_header['ion-actor-id'], actor_id)
        self.assertEqual(actor_header['ion-actor-roles'], actor_roles)

        #Now make sure we can change the name of the Org and not affect the headers
        org2 = self.rr.read(org2_id)
        org2.name = 'Updated Org 2'
        org2_id, _ = self.rr.update(org2)

        actor_roles = find_roles_by_actor(actor_id)

        self.assertEqual(len(actor_roles), 2)
        self.assertEqual(len(role_header), 2)
        self.assertIn('Second_Org', actor_roles)
        self.assertIn('Second_Org', role_header)
        self.assertEqual(len(actor_roles['Second_Org']), 2)
        self.assertEqual(len(role_header['Second_Org']), 2)
        self.assertIn('INSTRUMENT_OPERATOR', actor_roles['Second_Org'])
        self.assertIn('INSTRUMENT_OPERATOR', role_header['Second_Org'])
        self.assertIn(ORG_MEMBER_ROLE, actor_roles['Second_Org'])
        self.assertIn(ORG_MEMBER_ROLE, role_header['Second_Org'])
        self.assertIn('ION', actor_roles)
        self.assertIn('ION', role_header)
        self.assertIn(ORG_MANAGER_ROLE, actor_roles['ION'])
        self.assertIn(ORG_MEMBER_ROLE, actor_roles['ION'])
        self.assertIn(ORG_MANAGER_ROLE, role_header['ION'])
        self.assertIn(ORG_MEMBER_ROLE, role_header['ION'])

        actor_header = get_actor_header(actor_id)

        self.assertEqual(actor_header['ion-actor-id'], actor_id)
        self.assertEqual(actor_header['ion-actor-roles'], actor_roles)
Example #6
0
    def test_get_actor_header(self):

        #Setup data
        actor = IonObject(RT.ActorIdentity, name='actor1')
        actor_id, _ = self.rr.create(actor)

        ion_org = IonObject(RT.Org, name='ION', org_governance_name='ION')
        ion_org_id, _ = self.rr.create(ion_org)
        ion_org._id = ion_org_id

        manager_role = IonObject(RT.UserRole,
                                 name='Org Manager',
                                 governance_name=MODERATOR_ROLE,
                                 description='Org Manager')
        manager_role_id = self.add_org_role(ion_org, manager_role)

        member_role = IonObject(RT.UserRole,
                                name='Org Member',
                                governance_name=MEMBER_ROLE,
                                description='Org Member')

        # all actors have a defaul MEMBER_ROLE
        actor_roles = find_roles_by_actor(actor_id)
        self.assertDictEqual(actor_roles, {'ION': [MEMBER_ROLE]})

        actor_header = get_actor_header(actor_id)
        self.assertDictEqual(actor_header, {
            'ion-actor-id': actor_id,
            'ion-actor-roles': {
                'ION': [MEMBER_ROLE]
            }
        })

        #Add Org Manager Role
        self.rr.create_association(actor_id, PRED.hasRole, manager_role_id)

        actor_roles = find_roles_by_actor(actor_id)
        role_header = get_role_message_headers(
            {'ION': [manager_role, member_role]})
        self.assertDictEqual(actor_roles, role_header)

        org2 = IonObject(RT.Org,
                         name='Org 2',
                         org_governance_name='Second_Org')

        org2_id, _ = self.rr.create(org2)
        org2._id = org2_id

        member2_role = IonObject(RT.UserRole,
                                 governance_name=MEMBER_ROLE,
                                 name='Org Member',
                                 description='Org Member')
        member2_role_id = self.add_org_role(org2, member2_role)

        operator2_role = IonObject(RT.UserRole,
                                   governance_name='OPERATOR',
                                   name='Instrument Operator',
                                   description='Instrument Operator')
        operator2_role_id = self.add_org_role(org2, operator2_role)

        self.rr.create_association(actor_id, PRED.hasRole, member2_role_id)

        self.rr.create_association(actor_id, PRED.hasRole, operator2_role_id)

        actor_roles = find_roles_by_actor(actor_id)

        role_header = get_role_message_headers({
            'ION': [manager_role, member_role],
            'Second_Org': [operator2_role, member2_role]
        })

        self.assertEqual(len(actor_roles), 2)
        self.assertEqual(len(role_header), 2)
        self.assertIn('Second_Org', actor_roles)
        self.assertIn('Second_Org', role_header)
        self.assertEqual(len(actor_roles['Second_Org']), 2)
        self.assertEqual(len(role_header['Second_Org']), 2)
        self.assertIn('OPERATOR', actor_roles['Second_Org'])
        self.assertIn('OPERATOR', role_header['Second_Org'])
        self.assertIn(MEMBER_ROLE, actor_roles['Second_Org'])
        self.assertIn(MEMBER_ROLE, role_header['Second_Org'])
        self.assertIn('ION', actor_roles)
        self.assertIn('ION', role_header)
        self.assertIn(MODERATOR_ROLE, actor_roles['ION'])
        self.assertIn(MEMBER_ROLE, actor_roles['ION'])
        self.assertIn(MODERATOR_ROLE, role_header['ION'])
        self.assertIn(MEMBER_ROLE, role_header['ION'])

        actor_header = get_actor_header(actor_id)

        self.assertEqual(actor_header['ion-actor-id'], actor_id)
        self.assertEqual(actor_header['ion-actor-roles'], actor_roles)

        #Now make sure we can change the name of the Org and not affect the headers
        org2 = self.rr.read(org2_id)
        org2.name = 'Updated Org 2'
        org2_id, _ = self.rr.update(org2)

        actor_roles = find_roles_by_actor(actor_id)

        self.assertEqual(len(actor_roles), 2)
        self.assertEqual(len(role_header), 2)
        self.assertIn('Second_Org', actor_roles)
        self.assertIn('Second_Org', role_header)
        self.assertEqual(len(actor_roles['Second_Org']), 2)
        self.assertEqual(len(role_header['Second_Org']), 2)
        self.assertIn('OPERATOR', actor_roles['Second_Org'])
        self.assertIn('OPERATOR', role_header['Second_Org'])
        self.assertIn(MEMBER_ROLE, actor_roles['Second_Org'])
        self.assertIn(MEMBER_ROLE, role_header['Second_Org'])
        self.assertIn('ION', actor_roles)
        self.assertIn('ION', role_header)
        self.assertIn(MODERATOR_ROLE, actor_roles['ION'])
        self.assertIn(MEMBER_ROLE, actor_roles['ION'])
        self.assertIn(MODERATOR_ROLE, role_header['ION'])
        self.assertIn(MEMBER_ROLE, role_header['ION'])

        actor_header = get_actor_header(actor_id)

        self.assertEqual(actor_header['ion-actor-id'], actor_id)
        self.assertEqual(actor_header['ion-actor-roles'], actor_roles)