Skip to content
Snippets Groups Projects
db.py 1.31 KiB
Newer Older
from os import environ
from hydra_client import HydraAdmin
from graphqlclient import GraphQLClient
from json import loads

GRAPHQL_URL = environ['GRAPHQL_URL']
Mark's avatar
Mark committed
GRAPHQL_CLIENT = GraphQLClient(GRAPHQL_URL)


class User():
    def __init__(self, username):
        self.username = username
        self._load_remote_user_info()

    def _load_remote_user_info(self):
        querystring = '''{{
        getUser(username: "{0}"){{
            email,
            applications{{
                edges{{
                    node{{
                        name
                    }}
                }}
            }}
            }}}}'''.format(self.username).strip()
Mark's avatar
Mark committed
        result = loads(GRAPHQL_CLIENT.execute(querystring))
        if "data" in result:
            data = result["data"]["getUser"]
            self.applications = list(map(lambda x: x["node"]["name"],
                                         data["applications"]["edges"]))
            self.email = data["email"]

    def has_app_permission(self, appname):
Mark's avatar
Mark committed
        return appname in self.applications

    def get_oauth_session(self):
        return {
            "access_token": {},
            "id_token": {
                "name": self.username,
                "preferred_username": self.username,
                "email" : self.email,
                "picture": ""}
        }