예제 #1
0
 def getPrincipal(self, id):
     print 'getprincipal called: %s' % id
     source = IOAuthPrincipalSource(grok.getSite())
     principal = source.find(id=id)
     if len(principal) == 1:
         return principal[0]
     raise PrincipalLookupError(id)
예제 #2
0
    def __new__(self, token):
        app = grok.getApplication()
        users = IOAuthPrincipalSource(app)

        url = u"https://graph.facebook.com/me"
        print "User token info found: %s" % token.info
        req = Request(url)
        
        req.add_header('User-Agent',  'Python urlib2 (grok.zopefoundation.org, Python 2.7)')
        req.add_header("Content-Type", "application/json")
        req.add_header("Authorization", "{} {}".format(token.info['token_type'],
                                                       token.info['access_token']))
        req.add_data(urlencode(dict(access_token=token.info['access_token'],
                                    fields='id,name,first_name,last_name')))
        res = urlopen(req).read()
        if res: res = json.loads(res)
        if res is None:
            return None
        else:
            print "Personal info returned: %s" % res
            uid = u"Facebook.{}".format(res['id'])
            found = users.find(id=uid)
            if len(found)==0:
                user = users.new(id=uid)
            else:
                user = list(found)[0]

            user.authInfo = token.info
            user.title = unicode(res['name'])
            user.description = u'{} {}'.format(res['first_name'], res['last_name'])
            user.domain = u'Facebook'
            user.login = unicode(res['id'])
            user.secret = unicode(token.info['access_token'])
            return user
예제 #3
0
    def __new__(self, token):
        app = grok.getApplication()
        users = IOAuthPrincipalSource(app)
        uri = "https://api.twitter.com/1.1/account/verify_credentials.json"

        req = Request(url)
        req.add_header('User-Agent',  'Python urlib2 (grok.zopefoundation.org, Python 2.7)')
        req.add_header("Content-Type", "application/json")
        req.add_header("Authorization", "{} {}".format(token.info['token_type'],
                                                       token.info['access_token']))
        res = urlopen(req).read()
        if res: res = json.loads(res)
        if res is None:
            return None
        else:
            print "result=%s" % res
            uid = u"Twitter.{}".format(res['id'])

            found = users.find(id=uid)
            if len(found)==0:
                user = users.new(id=uid)
            else:
                user = list(found)[0]

            user.authInfo = token.info
            user.domain = u'Twitter'
            user.login = uid
            user.secret = token.info['access_token']
            return user
예제 #4
0
    def __new__(self, token):
        app = grok.getApplication()
        users = IOAuthPrincipalSource(app)

        url = u"https://www.googleapis.com/userinfo/v2/me"
        req = Request(url)
        req.add_header('User-Agent',  'Python urlib2 (grok.zopefoundation.org, Python 2.7)')
        req.add_header("Content-Type", "application/json")
        req.add_header("Authorization", "{} {}".format(token.info['token_type'],
                                                       token.info['access_token']))
        res = urlopen(req).read()
        if res: res = json.loads(res)
        if res is None:
            return None
        else:
            uid = u"Google.{}".format(res['id'])
            found = users.find(id=uid)
            if len(found)==0:
                user = users.new(id=uid)
            else:
                user = list(found)[0]

            user.authInfo = token.info
            user.title = unicode(res['name'])
            user.description = u'{} {}'.format(res['given_name'], res['family_name'])
            user.domain = u'Google'
            user.login = unicode(res['id'])
            user.secret = unicode(token.info['access_token'])
            return user
예제 #5
0
    def __new__(self, token):
        app = grok.getApplication()
        users = IOAuthPrincipalSource(app)

        url = u"https://discordapp.com/api/users/@me"
        print "User token info found: %s" % token.info
        req = Request(url)
        
        req.add_header('User-Agent',  'Python urlib2 (grok.zopefoundation.org, Python 2.7)')
        req.add_header("Content-Type", "application/json")
        req.add_header("Authorization", "{} {}".format(token.info['token_type'],
                                                       token.info['access_token']))
        res = urlopen(req).read()
        if res: res = json.loads(res)
        if res is None:
            return None
        else:
            print "Personal info returned: %s" % res
            uid = u"Discord.{}".format(res['id'])
            found = users.find(id=uid)
            if len(found)==0:
                user = users.new(id=uid)
            else:
                user = list(found)[0]

            user.authInfo = token.info
            user.title = unicode(res['username'])
            user.description = user.title
            user.domain = u'Discord'
            user.login = user.disco_id = unicode(res['id'])
            user.secret = unicode(token.info['access_token'])
            return user
예제 #6
0
 def do_login(self, **data):
     login = Login()
     self.applyData(login, **data)
     principals = IOAuthPrincipalSource(grok.getApplication())
     account = principals.find(login=login.login, domain=principals.domain)
     if account:  # check password, and authenticate if match
         from zope.password.password import SSHAPasswordManager
         mgr = SSHAPasswordManager()
         if mgr.checkPassword(account.secret, login.secret):
             session = ISession(self.request)['OAuth2']
             session['principal'] = account  # Found the principal
예제 #7
0
    def __new__(self, token):
        app = grok.getApplication()
        users = IOAuthPrincipalSource(app)
        uid = u"Mixer.{}".format(users.sequence)

        found = users.find(id=uid)
        if len(found)==0:
            user = users.new(id=uid)
        else:
            user = list(found)[0]

        user.authInfo = token.info
        user.domain = u'Mixer'
        user.login = token.info['id_token']
        user.secret = token.info['access_token']
        return user