Ejemplo n.º 1
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.º 2
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.º 3
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.º 4
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.º 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')

        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.º 6
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.º 7
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.º 8
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.º 9
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.º 10
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.º 11
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"])