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')
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')
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'])