Fix cookie auth to work with oauth token auth. Make sure user loading is truly deferred to save DB connections.

This commit is contained in:
jakedt 2014-03-17 12:01:13 -04:00
parent e759066ae0
commit 5bb4008880
6 changed files with 65 additions and 26 deletions

View file

@ -2,6 +2,7 @@ import logging
from flask.ext.principal import (identity_loaded, UserNeed, Permission,
Identity, identity_changed)
from flask.ext.login import current_user
from collections import namedtuple
from functools import partial
@ -171,14 +172,15 @@ def on_identity_loaded(sender, identity):
# We have verified an identity, load in all of the permissions
if isinstance(identity, QuayDeferredPermissionUser):
logger.debug('Deferring permissions for user: %s' % identity.id)
logger.debug('Deferring permissions for user: %s', identity.id)
elif identity.auth_type == 'username':
logger.debug('Switching username permission to deferred object: %s', identity.id)
switch_to_deferred = QuayDeferredPermissionUser(identity.id, 'username')
identity_changed.send(app, identity=switch_to_deferred)
elif identity.auth_type == 'token':
logger.debug('Loading permissions for token: %s' % identity.id)
logger.debug('Loading permissions for token: %s', identity.id)
token_data = model.load_token_data(identity.id)
repo_grant = _RepositoryNeed(token_data.repository.namespace,
@ -188,4 +190,4 @@ def on_identity_loaded(sender, identity):
identity.provides.add(repo_grant)
else:
logger.error('Unknown identity auth type: %s' % identity.auth_type)
logger.error('Unknown identity auth type: %s', identity.auth_type)