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:
parent
e759066ae0
commit
5bb4008880
6 changed files with 65 additions and 26 deletions
|
@ -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)
|
||||
|
|
Reference in a new issue