コード例 #1
0
    def get_user_from_service(self, token):
        parts = token.split()

        if not parts or len(parts) != 2:
            return None

        try:
            token_type = "service" if parts[0] == "Service" else "user"

            response = requests.post(
                "{}api/v1.0/verify-token/".format(
                    os.environ.get('TROOD_AUTH_SERVICE_URL')),
                data={
                    "type": token_type,
                    "token": parts[1]
                },
                headers={"Authorization": get_service_token()},
            )

            response.raise_for_status()
            response_decoded = response.json()
            return TroodUser(response_decoded['data'])

        except HTTPError:
            raise exceptions.AuthenticationFailed()
コード例 #2
0
ファイル: backends.py プロジェクト: orn0t/trood-sdk
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

        self.mail_service_url = settings.MAIL_SERVICE_URL
        self.headers = {
            "Content-Type": "application/json",
            "Authorization": get_service_token()
        }
コード例 #3
0
ファイル: storage.py プロジェクト: orn0t/trood-sdk
    def _open(self, name, mode):
        detail_file_url = '/'.join((self.host,  f'api/v1.0/files/{name}/'))
        response = requests.get(detail_file_url, headers={
            'Authorization': get_service_token()
        })

        if response.status_code == status.HTTP_200_OK:
            file_data = response.json()

            response = requests.get('/'.join((self.host, file_data['file_url'])), stream=True)
            if response.status_code == status.HTTP_200_OK:
                return TroodFile(response.raw, file_data)

        raise FileNotFoundError("File with id:{} does not exists".format(name))
コード例 #4
0
ファイル: storage.py プロジェクト: orn0t/trood-sdk
    def _save(self, name, content):
        try:
            file = self.open(name)
            return file.meta['id']

        except FileNotFoundError:

            url = '/'.join((self.host, 'api/v1.0/files/'))

            headers = {
                'Authorization': get_service_token()
            }

            response = requests.post(url, files={'file': (name, content)}, data={'name': name}, headers=headers)

            response.raise_for_status()

            if response.status_code == status.HTTP_201_CREATED:
                return response.json()['id']
コード例 #5
0
ファイル: middleware.py プロジェクト: orn0t/trood-sdk
    def __call__(self, request):
        rules = {}
        if settings.TROOD_ABAC['RULES_SOURCE'] == 'FILE':
            with open(settings.TROOD_ABAC['RULES_PATH']) as fp:
                rules = json.load(fp)
        elif settings.TROOD_ABAC['RULES_SOURCE'] == 'URL':
            response = requests.get(
                settings.TROOD_ABAC['RULES_PATH'],
                params={"domain": settings.SERVICE_DOMAIN},
                headers={"Authorization": get_service_token()},
            )
            response.raise_for_status()

            rules = response.json().get('data')

        engine = TroodABACEngine(rules)
        setattr(request, "abac", engine)

        response = self.get_response(request)

        return response