Esempio n. 1
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. 2
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,
                 })
             else:
                 update_account_lastlogin(self.conn, account_id)
             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')
Esempio n. 3
0
def test_update_account_lastlogin(conn):
    info1 = get_account_details(conn, 1)
    update_account_lastlogin(conn, 1)
    info2 = get_account_details(conn, 1)
    assert_true(info1['lastlogin'] < info2['lastlogin'])