Ejemplo n.º 1
0
    def login(self, args):
        """ weibo Login

        :type args: dict
        :param args:

        :rtype: dict
        :return: token and instance of user
        """

        log.info("login from Weibo Sina")
        code = args.get("code")
        access_token = self.get_token(code)
        user_info = self.get_user_info(access_token["access_token"],
                                       access_token["uid"])

        #Get email need to apply high-level interface
        #email = self.get_email(access_token["access_token"], access_token["uid"])

        name = user_info["name"]
        email_list = [{'name': name, 'email': '', 'verified': 1, 'primary': 1}]

        return user_manager.oauth_db_login(user_info["id"],
                                           provider=LOGIN_PROVIDER.WEIBO,
                                           name=name,
                                           nickname=user_info["screen_name"],
                                           access_token=access_token,
                                           email_list=email_list,
                                           avatar_url=user_info["avatar_hd"])
Ejemplo n.º 2
0
    def login(self, args):
        """ github Login

        :type args: dict
        :param args:

        :rtype: dict
        :return: token and instance of user
        """

        log.info('login from GitHub')
        code = args.get('code')

        access_token = self.get_token(code)
        user_info = self.get_user_info(access_token)
        email_list = self.get_emails(access_token)

        name = user_info["login"]
        nickname = name
        if "name" in user_info:
            nickname = user_info["name"]
        if not nickname:
            nickname = name

        return user_manager.oauth_db_login(str(user_info["id"]),
                                           provider=LOGIN_PROVIDER.GITHUB,
                                           name=user_info["login"],
                                           nickname=nickname,
                                           access_token=access_token,
                                           email_list=email_list,
                                           avatar_url=user_info["avatar_url"])
Ejemplo n.º 3
0
    def login(self, args):
        """ Wechat Login

        :type args: dict
        :param args:

        :rtype: dict
        :return: token and instance of user
        """
        log.info("login from Wechat")

        code = args.get("code")
        if not code:
            return None
        access_token, openid = self.get_access_token(code)
        user_detail = self.get_user_info(access_token, openid)

        return {
            "openid": openid,
            "provider": LOGIN_PROVIDER.WECHAT,
            "name": user_detail["nickname"],
            "nickname": user_detail["nickname"],
            "access_token": access_token,
            "email_list": [],
            "avatar_url": user_detail["headimgurl"],
        }
Ejemplo n.º 4
0
    def login(self, args):
        """ weibo Login

        :type args: dict
        :param args:

        :rtype: dict
        :return: token and instance of user
        """

        log.info("login from Weibo Sina")
        code = args.get("code")
        access_token = self.get_token(code)
        user_info = self.get_user_info(access_token["access_token"], access_token["uid"])

        # Get email need to apply high-level interface
        # email = self.get_email(access_token["access_token"], access_token["uid"])

        name = user_info["name"]
        email_list = [
            {
                'name': name,
                'email': '',
                'verified': 1,
                'primary': 1
            }
        ]

        return user_manager.oauth_db_login(user_info["id"],
                                           provider=LOGIN_PROVIDER.WEIBO,
                                           name=name,
                                           nickname=user_info["screen_name"],
                                           access_token=access_token["access_token"],
                                           email_list=email_list,
                                           avatar_url=user_info["avatar_hd"])
Ejemplo n.º 5
0
    def login(self, args):
        """ live Login

        :type args: dict
        :param args:

        :rtype: dict
        :return: token and instance of user
        """

        log.info("login from  Live")
        code = args.get("code")
        if not code:
            return None

        access_token = self.get_token(code)
        user_info = self.get_user_info(access_token)

        name = user_info["name"]
        email = user_info["emails"]["account"]
        email_list = [{"name": name, "email": email, "verified": 1, "primary": 1}]

        required_info = {
            "openid": user_info["id"],
            "provider": LOGIN_PROVIDER.LIVE,
            "name": name,
            "nickname": name,
            "access_token": access_token,
            "email_list": email_list,
            "avatar_url": None,
        }

        return required_info
Ejemplo n.º 6
0
    def login(self, args):
        """ live Login

        :type args: dict
        :param args:

        :rtype: dict
        :return: token and instance of user
        """

        log.info('login from  Live')
        code = args.get('code')

        access_token = self.get_token(code)
        user_info = self.get_user_info(access_token)

        name = user_info["name"]
        email = user_info["emails"]["account"]
        email_list = [
            {
                'name': name,
                'email': email,
                'verified': 1,
                'primary': 1
            }
        ]

        return user_manager.oauth_db_login(user_info["id"],
                                           provider=LOGIN_PROVIDER.LIVE,
                                           name=name,
                                           nickname=name,
                                           access_token=access_token,
                                           email_list=email_list,
                                           avatar_url=None)
Ejemplo n.º 7
0
    def login(self, args):
        """ live Login

        :type args: dict
        :param args:

        :rtype: dict
        :return: token and instance of user
        """

        log.info('login from  Live')
        code = args.get('code')

        access_token = self.get_token(code)
        user_info = self.get_user_info(access_token)

        name = user_info["name"]
        email = user_info["emails"]["account"]
        email_list = [{
            'name': name,
            'email': email,
            'verified': 1,
            'primary': 1
        }]

        return user_manager.oauth_db_login(user_info["id"],
                                           provider=LOGIN_PROVIDER.LIVE,
                                           name=name,
                                           nickname=name,
                                           access_token=access_token,
                                           email_list=email_list,
                                           avatar_url=None)
Ejemplo n.º 8
0
def __authing_login(provider):
    try:
        # https://docs.authing.cn/authing/social-login/web/github
        # code: 错误或成功代码,200 为成功,非 200 为失败
        # message: 成功或错误信息
        # data: userInfo,若 code 为非 200 不返回此参数

        code = request.args.get('code')
        message = request.args.get('message')
        if (code != "200"):
            log.info("Login with authing:%s failed with code: %s, message: %s " % (provider, code, message))
            return __login_failed(provider)

        data = request.args.get('data')
        user_info = json.loads(data)
        user_name = user_info["username"]
        log.info("Login with authing:%s successfully. Sending user info `%s` to hackathon server."
                 % (provider, user_name))

        remote_user = login_manager_helper.authing(user_info)
        login_user(remote_user)
        token = user_info["token"]
        session["token"] = token
        if session.get("return_url") is not None:
            resp = make_response(redirect(session["return_url"]))
            session["return_url"] = None
        else:
            resp = make_response(redirect(url_for("index")))

        resp.set_cookie('token', token)
        return resp
    except Exception as ex:
        log.error(ex)
        return __login_failed(provider)
Ejemplo n.º 9
0
    def login(self, args):
        """ QQ Login

        :type args: dict
        :param args:

        :rtype: dict
        :return: token and instance of user
        """

        log.info("login from QQ")
        code = args.get('code')
        access_token = self.get_token(code)
        info = self.get_info(access_token)
        user_info = self.get_user_info(access_token, info["openid"], info["client_id"])

        avatar_url = ""
        if "figureurl_qq_1" in user_info:  # try qq logo first
            avatar_url = user_info["figureurl_qq_1"]
        elif "figureurl" in user_info:  # try qzone logo
            avatar_url = user_info["figureurl"]
        return user_manager.oauth_db_login(info["openid"],
                                           name=user_info["nickname"],
                                           provider=LOGIN_PROVIDER.QQ,
                                           nickname=user_info["nickname"],
                                           access_token=access_token,
                                           email_list=[],
                                           avatar_url=avatar_url)
Ejemplo n.º 10
0
    def login(self, args):
        """ Wechat Login

        :type args: dict
        :param args:

        :rtype: dict
        :return: token and instance of user
        """
        log.info("login from Wechat")

        code = args.get('code')
        if not code:
            return None
        access_token, openid = self.get_access_token(code)
        user_detail = self.get_user_info(access_token, openid)

        return {
            "openid": openid,
            "provider": LOGIN_PROVIDER.WECHAT,
            "name": user_detail["nickname"],
            "nickname": user_detail["nickname"],
            "access_token": access_token,
            "email_list": [],
            "avatar_url": user_detail["headimgurl"]
        }
Ejemplo n.º 11
0
    def login(self, args):
        """ github Login

        :type args: dict
        :param args:

        :rtype: dict
        :return: token and instance of user
        """

        log.info('login from GitHub')
        code = args.get('code')

        access_token = self.get_token(code)
        user_info = self.get_user_info(access_token)
        email_list = self.get_emails(access_token)

        name = user_info["login"]
        nickname = user_info["name"] if "name" in user_info else name

        return user_manager.oauth_db_login(str(user_info["id"]),
                                           provider=LOGIN_PROVIDER.GITHUB,
                                           name=user_info["login"],
                                           nickname=nickname,
                                           access_token=access_token,
                                           email_list=email_list,
                                           avatar_url=user_info["avatar_url"])
Ejemplo n.º 12
0
    def login(self, args):
        code = args.get('code')
        if not code:
            return None

        log.info('login from alauda, code = ' + code)

        # basic auth header, content_type and post data
        client_id = get_config("login.alauda.client_id")
        client_secret = get_config("login.alauda.client_secret")
        basic_auth = HTTPBasicAuth(client_id, client_secret)

        headers = {'Content-type': 'application/x-www-form-urlencoded'}
        data = {
            'grant_type': 'authorization_code',
            'code': code,
            'redirect_uri': get_config('login.alauda.redirect_uri'),
            'client_id': client_id
        }

        # Post request
        url = get_config('login.alauda.access_token_url')
        r = requests.post(url, data=data, headers=headers, auth=basic_auth)
        resp = r.json()

        # {u'username': u'junbowang', u'realname': u'junbowang', u'success': True,
        # u'access_token': u'3MyZLF8RVo5X8lDLZQSj5s4OpIGQGn', u'token_type': u'Bearer',
        # u'logo_file': u'/static/images/user/default-logo.png', u'email': u'*****@*****.**'}
        if not resp.get("success"):
            log.debug("get access token failed from alauda: %r" % resp)
            return None

        # username will used as openid too since its unique. And also it's the 'namespace' for user's alauda resource
        username = resp["username"]
        email = resp["email"]
        email_list = [
            {
                'name': username,
                'email': email,
                'verified': 1,
                'primary': 1
            }
        ]

        user_with_token = user_manager.oauth_db_login(username,
                                                      provider=LOGIN_PROVIDER.ALAUDA,
                                                      name=username,
                                                      nickname=resp.get("realname", username),
                                                      access_token=resp["access_token"],
                                                      email_list=email_list,
                                                      avatar_url=resp.get("logo_file"))

        # for oxford only
        self.oxford(user_with_token["user"], resp.get("oxford_api"))

        return user_with_token
Ejemplo n.º 13
0
    def login(self, args):
        code = args.get('code')
        if not code:
            return None

        log.info('login from alauda, code = ' + code)

        # basic auth header, content_type and post data
        client_id = get_config("login.alauda.client_id")
        client_secret = get_config("login.alauda.client_secret")
        basic_auth = HTTPBasicAuth(client_id, client_secret)

        headers = {'Content-type': 'application/x-www-form-urlencoded'}
        data = {
            'grant_type': 'authorization_code',
            'code': code,
            'redirect_uri': get_config('login.alauda.redirect_uri'),
            'client_id': client_id
        }

        # Post request
        url = get_config('login.alauda.access_token_url')
        r = requests.post(url, data=data, headers=headers, auth=basic_auth)
        resp = r.json()

        # {u'username': u'junbowang', u'realname': u'junbowang', u'success': True,
        # u'access_token': u'3MyZLF8RVo5X8lDLZQSj5s4OpIGQGn', u'token_type': u'Bearer',
        # u'logo_file': u'/static/images/user/default-logo.png', u'email': u'*****@*****.**'}
        if not resp.get("success"):
            log.debug("get access token failed from alauda: %r" % resp)
            return None

        # username will used as openid too since its unique. And also it's the 'namespace' for user's alauda resource
        username = resp["username"]
        email = resp["email"]
        email_list = [
            {
                'name': username,
                'email': email,
                'verified': 1,
                'primary': 1
            }
        ]

        required_info = {
            "openid": username,
            "provider": LOGIN_PROVIDER.ALAUDA,
            "name": username,
            "nickname": resp.get("realname", username),
            "access_token": resp["access_token"],
            "email_list": email_list,
            "avatar_url": resp.get("logo_file"),
            "oxford_api": resp.get("oxford_api")
        }

        return required_info
Ejemplo n.º 14
0
    def login(self, args):
        code = args.get("code")
        if not code:
            return None

        log.info("login from alauda, code = " + code)

        # basic auth header, content_type and post data
        client_id = get_config("login.alauda.client_id")
        client_secret = get_config("login.alauda.client_secret")
        basic_auth = HTTPBasicAuth(client_id, client_secret)

        headers = {"Content-type": "application/x-www-form-urlencoded"}
        data = {
            "grant_type": "authorization_code",
            "code": code,
            "redirect_uri": get_config("login.alauda.redirect_uri"),
            "client_id": client_id,
        }

        # Post request
        url = get_config("login.alauda.access_token_url")
        r = requests.post(url, data=data, headers=headers, auth=basic_auth)
        resp = r.json()

        # {u'username': u'junbowang', u'realname': u'junbowang', u'success': True,
        # u'access_token': u'3MyZLF8RVo5X8lDLZQSj5s4OpIGQGn', u'token_type': u'Bearer',
        # u'logo_file': u'/static/images/user/default-logo.png', u'email': u'*****@*****.**'}
        if not resp.get("success"):
            log.debug("get access token failed from alauda: %r" % resp)
            return None

        # username will used as openid too since its unique. And also it's the 'namespace' for user's alauda resource
        username = resp["username"]
        email = resp["email"]
        email_list = [{"name": username, "email": email, "verified": 1, "primary": 1}]

        required_info = {
            "openid": username,
            "provider": LOGIN_PROVIDER.ALAUDA,
            "name": username,
            "nickname": resp.get("realname", username),
            "access_token": resp["access_token"],
            "email_list": email_list,
            "avatar_url": resp.get("logo_file"),
            "oxford_api": resp.get("oxford_api"),
        }

        return required_info
Ejemplo n.º 15
0
    def login(self, args):
        """ gitcafe Login

        :type args: dict
        :param args:

        :rtype: dict
        :return: token and instance of user
        """

        log.info('login from Gitcafe')
        code = args.get('code')
        if not code:
            return None

        access_token = self.get_token(code)
        user_info = self.get_user_info("Bearer " + access_token)

        name = user_info['username']
        email = user_info['email']
        nickname = user_info['fullname']
        if nickname is None:
            nickname = name

        if user_info['avatar_url'].startswith('https'):
            avatar_url = user_info['avatar_url']
        else:
            avatar_url = "https" + user_info['avatar_url'][4:]

        email_list = [
            {
                'name': name,
                'email': email,
                'verified': 1,
                'primary': 1
            }
        ]

        required_info = {
            "openid": user_info['id'],
            "provider": LOGIN_PROVIDER.GITCAFE,
            "name": name,
            "nickname": nickname,
            "access_token": access_token,
            "email_list": email_list,
            "avatar_url": avatar_url
        }

        return required_info
Ejemplo n.º 16
0
    def login(self, args):
        """ gitcafe Login

        :type args: dict
        :param args:

        :rtype: dict
        :return: token and instance of user
        """

        log.info('login from Gitcafe')
        code = args.get('code')
        if not code:
            return None

        access_token = self.get_token(code)
        user_info = self.get_user_info("Bearer " + access_token)

        name = user_info['username']
        email = user_info['email']
        nickname = user_info['fullname']
        if nickname is None:
            nickname = name

        if user_info['avatar_url'].startswith('https'):
            avatar_url = user_info['avatar_url']
        else:
            avatar_url = "https" + user_info['avatar_url'][4:]

        email_list = [{
            'name': name,
            'email': email,
            'verified': 1,
            'primary': 1
        }]

        required_info = {
            "openid": user_info['id'],
            "provider": LOGIN_PROVIDER.GITCAFE,
            "name": name,
            "nickname": nickname,
            "access_token": access_token,
            "email_list": email_list,
            "avatar_url": avatar_url
        }

        return required_info
Ejemplo n.º 17
0
    def login(self, args):
        """ gitcafe Login

        :type args: dict
        :param args:

        :rtype: dict
        :return: token and instance of user
        """

        log.info('login from Gitcafe')
        code = args.get('code')
        if not code:
            return None

        access_token = self.get_token(code)
        user_info = self.get_user_info("Bearer " + access_token)

        name = user_info['username']
        email = user_info['email']
        nickname = user_info['fullname']
        if nickname is None:
            nickname = name

        if user_info['avatar_url'].startswith('https'):
            avatar_url = user_info['avatar_url']
        else:
            avatar_url = "https" + user_info['avatar_url'][4:]

        email_list = [
            {
                'name': name,
                'email': email,
                'verified': 1,
                'primary': 1
            }
        ]

        return user_manager.oauth_db_login(user_info['id'],
                                           provider=LOGIN_PROVIDER.GITCAFE,
                                           name=name,
                                           nickname=nickname,
                                           access_token=access_token,
                                           email_list=email_list,
                                           avatar_url=avatar_url)
Ejemplo n.º 18
0
    def login(self, args):
        """ gitcafe Login

        :type args: dict
        :param args:

        :rtype: dict
        :return: token and instance of user
        """

        log.info("login from Gitcafe")
        code = args.get("code")
        if not code:
            return None

        access_token = self.get_token(code)
        user_info = self.get_user_info("Bearer " + access_token)

        name = user_info["username"]
        email = user_info["email"]
        nickname = user_info["fullname"]
        if nickname is None:
            nickname = name

        if user_info["avatar_url"].startswith("https"):
            avatar_url = user_info["avatar_url"]
        else:
            avatar_url = "https" + user_info["avatar_url"][4:]

        email_list = [{"name": name, "email": email, "verified": 1, "primary": 1}]

        required_info = {
            "openid": user_info["id"],
            "provider": LOGIN_PROVIDER.GITCAFE,
            "name": name,
            "nickname": nickname,
            "access_token": access_token,
            "email_list": email_list,
            "avatar_url": avatar_url,
        }

        return required_info
Ejemplo n.º 19
0
    def login(self, args):
        """ weibo Login

        :type args: dict
        :param args:

        :rtype: dict
        :return: token and instance of user
        """

        log.info("login from Weibo Sina")
        code = args.get("code")
        if not code:
            return None

        access_token = self.get_token(code)
        user_info = self.get_user_info(access_token["access_token"], access_token["uid"])

        # Get email need to apply high-level interface
        # email = self.get_email(access_token["access_token"], access_token["uid"])

        name = user_info["name"]
        email_list = [
            {
                'name': name,
                'email': '',
                'verified': 1,
                'primary': 1
            }
        ]

        required_info = {
            "openid": str(user_info["id"]),
            "provider": LOGIN_PROVIDER.WEIBO,
            "name": name,
            "nickname": user_info["screen_name"],
            "access_token": access_token["access_token"],
            "email_list": email_list,
            "avatar_url": user_info["avatar_hd"]
        }

        return required_info
Ejemplo n.º 20
0
    def login(self, args):
        """ live Login

        :type args: dict
        :param args:

        :rtype: dict
        :return: token and instance of user
        """

        log.info('login from  Live')
        code = args.get('code')
        if not code:
            return None

        access_token = self.get_token(code)
        user_info = self.get_user_info(access_token)

        name = user_info["name"]
        email = user_info["emails"]["account"]
        email_list = [
            {
                'name': name,
                'email': email,
                'verified': 1,
                'primary': 1
            }
        ]

        required_info = {
            "openid": user_info["id"],
            "provider": LOGIN_PROVIDER.LIVE,
            "name": name,
            "nickname": name,
            "access_token": access_token,
            "email_list": email_list,
            "avatar_url": None
        }

        return required_info
Ejemplo n.º 21
0
    def login(self, args):
        """ gitcafe Login

        :type args: dict
        :param args:

        :rtype: dict
        :return: token and instance of user
        """

        log.info('login from Gitcafe')
        code = args.get('code')
        access_token = self.get_token(code)
        user_info = self.get_user_info("Bearer " + access_token)

        name = user_info['username']
        email = user_info['email']
        nickname = user_info['fullname']
        if nickname is None:
            nickname = name

        if user_info['avatar_url'].startswith('https'):
            avatar_url = user_info['avatar_url']
        else:
            avatar_url = "https" + user_info['avatar_url'][4:]

        email_list = [{
            'name': name,
            'email': email,
            'verified': 1,
            'primary': 1
        }]

        return user_manager.oauth_db_login(user_info['id'],
                                           provider=LOGIN_PROVIDER.GITCAFE,
                                           name=name,
                                           nickname=nickname,
                                           access_token=access_token,
                                           email_list=email_list,
                                           avatar_url=avatar_url)
Ejemplo n.º 22
0
def __login(provider):
    try:
        user_with_token = login_manager_helper.login(provider)

        if user_with_token is None:
            return __login_failed(provider)

        log.info("login successfully:" + repr(user_with_token))

        token = user_with_token["token"]
        login_user(user_with_token["user"])
        session["token"] = token
        if session.get("return_url") is not None:
            resp = make_response(redirect(session["return_url"]))
            session["return_url"] = None
        else:
            resp = make_response(redirect(url_for("index")))
        resp.set_cookie('token', token)
        return resp
    except Exception as ex:
        log.error(ex)
        return __login_failed(provider)
Ejemplo n.º 23
0
def __login(provider):
    code = request.args.get("code")
    try:
        admin_with_token = login_providers[provider].login({"code": code})
        if admin_with_token is None:
            return __login_failed(provider)

        log.info("login successfully:" + repr(admin_with_token))

        token = admin_with_token["token"].token
        login_user(admin_with_token["admin"])
        session["token"] = token
        if session.get("return_url") is not None:
            resp = make_response(redirect(session["return_url"]))
            session["return_url"] = None
        else:
            resp = make_response(redirect(url_for("index")))
        resp.set_cookie("token", token)
        return resp
    except Exception as ex:
        log.error(ex)
        return __login_failed(provider)
Ejemplo n.º 24
0
def __login(provider):
    try:
        user_with_token = login_manager_helper.login(provider)

        if user_with_token is None:
            return __login_failed(provider)

        log.info("login successfully:" + repr(user_with_token))

        token = user_with_token["token"]
        login_user(user_with_token["user"])
        session["token"] = token
        if session.get("return_url") is not None:
            resp = make_response(redirect(session["return_url"]))
            session["return_url"] = None
        else:
            resp = make_response(redirect(url_for("index")))
        resp.set_cookie("token", token)
        return resp
    except Exception as ex:
        log.error(ex)
        return __login_failed(provider)
Ejemplo n.º 25
0
def __login(provider):
    code = request.args.get('code')
    try:
        admin_with_token = login_providers[provider].login({"code": code})
        if admin_with_token is None:
            return __login_failed(provider)

        log.info("login successfully:" + repr(admin_with_token))

        token = admin_with_token["token"].token
        login_user(admin_with_token["admin"])
        session["token"] = token
        if session.get("return_url") is not None:
            resp = make_response(redirect(session["return_url"]))
            session["return_url"] = None
        else:
            resp = make_response(redirect(url_for("index")))
        resp.set_cookie('token', token)
        return resp
    except Exception as ex:
        log.error(ex)
        return __login_failed(provider)
Ejemplo n.º 26
0
    def login(self, args):
        """ github Login

        :type args: dict
        :param args:

        :rtype: dict
        :return: token and instance of user
        """

        log.info("login from GitHub")
        code = args.get("code")
        if not code:
            return None

        access_token = self.get_token(code)
        user_info = self.get_user_info(access_token)
        email_list = self.get_emails(access_token)

        name = user_info["login"]
        nickname = name
        if "name" in user_info:
            nickname = user_info["name"]
        if not nickname:
            nickname = name

        required_info = {
            "openid": str(user_info["id"]),
            "provider": LOGIN_PROVIDER.GITHUB,
            "name": name,
            "nickname": nickname,
            "access_token": access_token,
            "email_list": email_list,
            "avatar_url": user_info["avatar_url"],
        }

        return required_info
Ejemplo n.º 27
0
    def login(self, args):
        """ weibo Login

        :type args: dict
        :param args:

        :rtype: dict
        :return: token and instance of user
        """

        log.info("login from Weibo Sina")
        code = args.get("code")
        if not code:
            return None

        access_token = self.get_token(code)
        user_info = self.get_user_info(access_token["access_token"],
                                       access_token["uid"])

        # Get email need to apply high-level interface
        # so we just leave email list empty here
        # email = self.get_email(access_token["access_token"], access_token["uid"])
        email_list = []

        name = user_info["name"]

        required_info = {
            "openid": str(user_info["id"]),
            "provider": LOGIN_PROVIDER.WEIBO,
            "name": name,
            "nickname": user_info["screen_name"],
            "access_token": access_token["access_token"],
            "email_list": email_list,
            "avatar_url": user_info["avatar_hd"]
        }

        return required_info
Ejemplo n.º 28
0
    def login(self, args):
        """ QQ Login

        :type args: dict
        :param args:

        :rtype: dict
        :return: token and instance of user
        """

        log.info("login from QQ")
        code = args.get('code')
        if not code:
            return None

        access_token = self.get_token(code)
        info = self.get_info(access_token)
        user_info = self.get_user_info(access_token, info["openid"],
                                       info["client_id"])

        avatar_url = ""
        if "figureurl_qq_1" in user_info:  # try qq logo first
            avatar_url = user_info["figureurl_qq_1"]
        elif "figureurl" in user_info:  # try qzone logo
            avatar_url = user_info["figureurl"]

        required_info = {
            "openid": info["openid"],
            "provider": LOGIN_PROVIDER.QQ,
            "name": user_info["nickname"],
            "nickname": user_info["nickname"],
            "access_token": access_token,
            "email_list": [],
            "avatar_url": avatar_url
        }

        return required_info
Ejemplo n.º 29
0
    def login(self, args):
        """ github Login

        :type args: dict
        :param args:

        :rtype: dict
        :return: token and instance of user
        """

        log.info('login from GitHub')
        code = args.get('code')
        if not code:
            return None

        access_token = self.get_token(code)
        user_info = self.get_user_info(access_token)
        email_list = self.get_emails(access_token)

        name = user_info["login"]
        nickname = name
        if "name" in user_info:
            nickname = user_info["name"]
        if not nickname:
            nickname = name

        required_info = {
            "openid": str(user_info["id"]),
            "provider": LOGIN_PROVIDER.GITHUB,
            "name": name,
            "nickname": nickname,
            "access_token": access_token,
            "email_list": email_list,
            "avatar_url": user_info["avatar_url"]
        }

        return required_info
Ejemplo n.º 30
0
    def login(self, args):
        """ QQ Login

        :type args: dict
        :param args:

        :rtype: dict
        :return: token and instance of user
        """

        log.info("login from QQ")
        code = args.get("code")
        if not code:
            return None

        access_token = self.get_token(code)
        info = self.get_info(access_token)
        user_info = self.get_user_info(access_token, info["openid"], info["client_id"])

        avatar_url = ""
        if "figureurl_qq_1" in user_info:  # try qq logo first
            avatar_url = user_info["figureurl_qq_1"]
        elif "figureurl" in user_info:  # try qzone logo
            avatar_url = user_info["figureurl"]

        required_info = {
            "openid": info["openid"],
            "provider": LOGIN_PROVIDER.QQ,
            "name": user_info["nickname"],
            "nickname": user_info["nickname"],
            "access_token": access_token,
            "email_list": [],
            "avatar_url": avatar_url,
        }

        return required_info
Ejemplo n.º 31
0
    def login(self, args):
        """ QQ Login

        :type args: dict
        :param args:

        :rtype: dict
        :return: token and instance of user
        """

        log.info("login from QQ")
        code = args.get('code')
        access_token = self.get_token(code)
        info = self.get_info(access_token)
        user_info = self.get_user_info(access_token, info["openid"],
                                       info["client_id"])

        return user_manager.oauth_db_login(info["openid"],
                                           name=user_info["nickname"],
                                           provider=LOGIN_PROVIDER.QQ,
                                           nickname=user_info["nickname"],
                                           access_token=access_token,
                                           email_list=[],
                                           avatar_url=user_info["figureurl"])
Ejemplo n.º 32
0
 def info(self, msg, *args, **kwargs):
     if self.quiet == False:
         log.info(msg, *args, **kwargs)