Esempio n. 1
0
def handle_openid_login_response():
    conn = db.session.connection()
    consumer = openid.Consumer(session, None)
    info = consumer.complete(request.args, request.url)
    if info.status == openid.SUCCESS:
        openid_url = info.identity_url
        values = {}
        ax_resp = ax.FetchResponse.fromSuccessResponse(info)
        if ax_resp:
            attrs = {
                'email': 'http://schema.openid.net/contact/email',
                'name': 'http://schema.openid.net/namePerson/friendly',
            }
            for name, uri in attrs.iteritems():
                try:
                    value = ax_resp.getSingle(uri)
                    if value:
                        values[name] = value
                except KeyError:
                    pass
        account_id = lookup_account_id_by_openid(conn, openid_url)
        if not account_id:
            account_id, account_api_key = insert_account(conn, {
                'name': 'OpenID User',
                'openid': openid_url,
            })
        logger.info("Successfuly identified OpenID user %s (%d) with email '%s' and nickname '%s'",
            openid_url, account_id, values.get('email', ''), values.get('name', ''))
        return login_user_and_redirect(account_id)
    elif info.status == openid.CANCEL:
        raise Exception('OpenID login has been canceled')
    else:
        raise Exception('OpenID login failed')
Esempio n. 2
0
 def _handle_openid_login_response(self, req, errors):
     consumer = openid.Consumer(self.session, None)
     info = consumer.complete(req.args, self.login_url)
     if info.status == openid.SUCCESS:
         openid_url = info.identity_url
         values = {}
         ax_resp = ax.FetchResponse.fromSuccessResponse(info)
         if ax_resp:
             attrs = {
                 'email': 'http://schema.openid.net/contact/email',
                 'name': 'http://schema.openid.net/namePerson/friendly',
             }
             for name, uri in attrs.iteritems():
                 try:
                     value = ax_resp.getSingle(uri)
                     if value:
                         values[name] = value
                 except KeyError:
                     pass
         account_id = lookup_account_id_by_openid(self.conn, openid_url)
         if not account_id:
             account_id = insert_account(self.conn, {
                 'name': 'OpenID User',
                 'openid': openid_url,
             })
         else:
             update_account_lastlogin(self.conn, account_id)
         logger.info("Successfuly identified OpenID user %s (%d) with email '%s' and nickname '%s'",
             openid_url, account_id, values.get('email', ''), values.get('name', ''))
         self.session['id'] = account_id
     elif info.status == openid.CANCEL:
         errors.append('OpenID verification has been canceled')
     else:
         errors.append('OpenID verification failed')
Esempio n. 3
0
 def _handle_openid_login_response(self, req, errors):
     consumer = openid.Consumer(self.session, None)
     info = consumer.complete(req.args, self.login_url)
     if info.status == openid.SUCCESS:
         openid_url = info.identity_url
         values = {}
         ax_resp = ax.FetchResponse.fromSuccessResponse(info)
         if ax_resp:
             attrs = {
                 'email': 'http://schema.openid.net/contact/email',
                 'name': 'http://schema.openid.net/namePerson/friendly',
             }
             for name, uri in attrs.iteritems():
                 try:
                     value = ax_resp.getSingle(uri)
                     if value:
                         values[name] = value
                 except KeyError:
                     pass
         account_id = lookup_account_id_by_openid(self.conn, openid_url)
         if not account_id:
             account_id = insert_account(self.conn, {
                 'name': 'OpenID User',
                 'openid': openid_url,
             })
         logger.info("Successfuly identified OpenID user %s (%d) with email '%s' and nickname '%s'",
             openid_url, account_id, values.get('email', ''), values.get('name', ''))
         self.session['id'] = account_id
     elif info.status == openid.CANCEL:
         errors.append('OpenID verification has been canceled')
     else:
         errors.append('OpenID verification failed')
Esempio n. 4
0
def handle_openid_login_response():
    conn = db.session.connection()
    consumer = openid.Consumer(session, None)
    info = consumer.complete(request.args, request.url)
    if info.status == openid.SUCCESS:
        openid_url = info.identity_url
        values = {}
        ax_resp = ax.FetchResponse.fromSuccessResponse(info)
        if ax_resp:
            attrs = {
                'email': 'http://schema.openid.net/contact/email',
                'name': 'http://schema.openid.net/namePerson/friendly',
            }
            for name, uri in attrs.items():
                try:
                    value = ax_resp.getSingle(uri)
                    if value:
                        values[name] = value
                except KeyError:
                    pass
        account_id = lookup_account_id_by_openid(conn, openid_url)
        if not account_id:
            account_id, account_api_key = insert_account(conn, {
                'name': 'OpenID User',
                'openid': openid_url,
            })
        logger.info("Successfuly identified OpenID user %s (%d) with email '%s' and nickname '%s'",
            openid_url, account_id, values.get('email', ''), values.get('name', ''))
        return login_user_and_redirect(account_id)
    elif info.status == openid.CANCEL:
        raise Exception('OpenID login has been canceled')
    else:
        raise Exception('OpenID login failed')
Esempio n. 5
0
 def _handle_internal(self, params):
     id, api_key = insert_account(self.conn, {
         'name': 'Anonymous',
         'created_from': self.user_ip,
         'application_id': params.application_id,
         'application_version': params.application_version,
     })
     return {'user': {'apikey': api_key}}
Esempio n. 6
0
 def _handle_internal(self, params):
     if self.cluster.secret != params.secret:
         logger.warning('Invalid cluster secret')
         raise errors.NotAllowedError()
     account_id, account_api_key = insert_account(self.conn, {
         'name': 'External User',
         'anonymous': True,
     })
     return {'id': account_id, 'api_key': account_api_key}
Esempio n. 7
0
 def _handle_internal(self, params):
     if self.cluster.secret != params.secret:
         logger.warning('Invalid cluster secret')
         raise errors.NotAllowedError()
     account_id, account_api_key = insert_account(self.conn, {
         'name': 'External User',
         'anonymous': True,
     })
     return {'id': account_id, 'api_key': account_api_key}
Esempio n. 8
0
 def _handle_internal(self, params):
     print {
         'name': 'Anonymous',
         'created_from': self.user_ip,
         'application_id': params.application_id,
         'application_version': params.application_version,
     }
     id, api_key = insert_account(self.conn, {
         'name': 'Anonymous',
         'created_from': self.user_ip,
         'application_id': params.application_id,
         'application_version': params.application_version,
     })
     return {'user': {'apikey': api_key}}
Esempio n. 9
0
 def _handle_internal(self, params):
     if not self.is_secure:
         raise errors.InsecureRequestError()
     resp = requests.get('https://musicbrainz.org/oauth2/userinfo',
                         params={'access_token': params.access_token})
     if resp.status_code != requests.codes.ok:
         raise errors.InvalidMusicBrainzAccessTokenError()
     mbuser = resp.json()['sub']
     account = get_account_details_by_mbuser(self.conn, mbuser)
     if account is not None:
         api_key = account['apikey']
     else:
         id, api_key = insert_account(self.conn, {
             'name': mbuser,
             'mbuser': mbuser,
             'created_from': self.user_ip,
         })
     return {'user': {'apikey': api_key}}
Esempio n. 10
0
 def _handle_musicbrainz_login(self, req, errors):
     username = req.form.get('mb_user')
     password = req.form.get('mb_password')
     if username and password:
         if check_mb_account(username, password):
             account_id = lookup_account_id_by_mbuser(self.conn, username)
             if not account_id:
                 account_id = insert_account(self.conn, {
                     'name': username,
                     'mbuser': username,
                 })
             logger.info("Successfuly identified MusicBrainz user %s (%d)", username, account_id)
             self.session['id'] = account_id
         else:
             errors.append('Invalid username or password')
     else:
         if not username:
             errors.append('Missing username')
         if not password:
             errors.append('Missing password')