Beispiel #1
0
    def get_members_for_org(
            org_id,
            status=Status.ACTIVE.name,  # pylint:disable=too-many-return-statements
            membership_roles=ALL_ALLOWED_ROLES,
            **kwargs):
        """Get members of org.Fetches using status and roles."""
        org_model = OrgModel.find_by_org_id(org_id)
        if not org_model:
            return None

        user_from_context: UserContext = kwargs['user_context']
        status = Status.ACTIVE.value if status is None else Status[status].value
        membership_roles = ALL_ALLOWED_ROLES if membership_roles is None else membership_roles
        # If staff return full list
        if user_from_context.is_staff():
            return MembershipModel.find_members_by_org_id_by_status_by_roles(
                org_id, membership_roles, status)

        current_user: UserService = UserService.find_by_jwt_token()
        current_user_membership: MembershipModel = \
            MembershipModel.find_membership_by_user_and_org(user_id=current_user.identifier, org_id=org_id)

        # If no active or pending membership return empty array
        if current_user_membership is None or \
                current_user_membership.status == Status.INACTIVE.value or \
                current_user_membership.status == Status.REJECTED.value:
            return []

        # If pending approval, return empty for active, array of self only for pending
        if current_user_membership.status == Status.PENDING_APPROVAL.value:
            return [current_user_membership
                    ] if status == Status.PENDING_APPROVAL.value else []

        # If active status for current user, then check organizational role
        if current_user_membership.status == Status.ACTIVE.value:
            if current_user_membership.membership_type_code in (ADMIN,
                                                                COORDINATOR):
                return MembershipModel.find_members_by_org_id_by_status_by_roles(
                    org_id, membership_roles, status)

            return MembershipModel.find_members_by_org_id_by_status_by_roles(org_id, membership_roles, status) \
                if status == Status.ACTIVE.value else []

        return []
Beispiel #2
0
    def get_members_for_org(
            org_id,
            status=Status.ACTIVE,  # pylint:disable=too-many-return-statements
            membership_roles=ALL_ALLOWED_ROLES,
            token_info: Dict = None):
        """Get members of org.Fetches using status and roles."""
        org_model = OrgModel.find_by_org_id(org_id)
        if not org_model:
            return None

        status = Status.ACTIVE.value if status is None else Status[status].value
        membership_roles = ALL_ALLOWED_ROLES if membership_roles is None else membership_roles

        # If staff return full list
        if 'staff' in token_info.get('realm_access').get('roles'):
            return MembershipModel.find_members_by_org_id_by_status_by_roles(
                org_id, membership_roles, status)

        current_user: UserService = UserService.find_by_jwt_token(token_info)
        current_user_membership: MembershipModel = \
            MembershipModel.find_membership_by_user_and_org(user_id=current_user.identifier, org_id=org_id)

        # If no active or pending membership return empty array
        if current_user_membership is None or \
                current_user_membership.status == Status.INACTIVE.value or \
                current_user_membership.status == Status.REJECTED.value:
            return []

        # If pending approval, return empty for active, array of self only for pending
        if current_user_membership.status == Status.PENDING_APPROVAL.value:
            return [current_user_membership
                    ] if status == Status.PENDING_APPROVAL.value else []

        # If active status for current user, then check organizational role
        if current_user_membership.status == Status.ACTIVE.value:
            if current_user_membership.membership_type_code == ADMIN or \
                    current_user_membership.membership_type_code == COORDINATOR:
                return MembershipModel.find_members_by_org_id_by_status_by_roles(
                    org_id, membership_roles, status)

            return MembershipModel.find_members_by_org_id_by_status_by_roles(org_id, membership_roles, status) \
                if status == Status.ACTIVE.value else []

        return []
Beispiel #3
0
    def get_members_for_org(org_id, status=None, membership_roles=None, token_info: Dict = None,
                            allowed_roles: Tuple = None):
        """Get members of org.Fetches using status and roles."""
        if org_id is None:
            return None

        if membership_roles is None:
            membership_roles = ALL_ALLOWED_ROLES
        if not status:
            status = Status.ACTIVE.value
        else:
            status = Status[status].value

        org_model = OrgModel.find_by_org_id(org_id)
        if not org_model:
            return None

        # Check authorization for the user
        check_auth(token_info, one_of_roles=allowed_roles, org_id=org_id)
        return MembershipModel.find_members_by_org_id_by_status_by_roles(org_id, membership_roles, status)