We can't count on auth tokens being sent anymore, so we set the namespace and repository for the session when the original put on the repo is made.
This commit is contained in:
parent
8917812efa
commit
61618c7eab
2 changed files with 8 additions and 6 deletions
|
@ -1,7 +1,7 @@
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
from flask import request, make_response, _request_ctx_stack, abort, session
|
from flask import request, _request_ctx_stack, abort, session
|
||||||
from flask.ext.principal import identity_changed, Identity
|
from flask.ext.principal import identity_changed, Identity
|
||||||
from base64 import b64decode
|
from base64 import b64decode
|
||||||
|
|
||||||
|
@ -106,9 +106,6 @@ def process_token(auth):
|
||||||
token_vals['signature'])
|
token_vals['signature'])
|
||||||
abort(401)
|
abort(401)
|
||||||
|
|
||||||
session['repository'] = token_data.repository.name
|
|
||||||
session['namespace'] = token_data.repository.namespace
|
|
||||||
|
|
||||||
logger.debug('Successfully validated token: %s' % token_data.code)
|
logger.debug('Successfully validated token: %s' % token_data.code)
|
||||||
ctx = _request_ctx_stack.top
|
ctx = _request_ctx_stack.top
|
||||||
ctx.validated_token = token_data
|
ctx.validated_token = token_data
|
||||||
|
@ -136,7 +133,8 @@ def extract_namespace_repo_from_session(f):
|
||||||
@wraps(f)
|
@wraps(f)
|
||||||
def wrapper(*args, **kwargs):
|
def wrapper(*args, **kwargs):
|
||||||
if 'namespace' not in session or 'repository' not in session:
|
if 'namespace' not in session or 'repository' not in session:
|
||||||
logger.debug('Unable to load namespace or repository from session.')
|
logger.error('Unable to load namespace or repository from session: %s' %
|
||||||
|
session)
|
||||||
abort(400)
|
abort(400)
|
||||||
|
|
||||||
return f(session['namespace'], session['repository'], *args, **kwargs)
|
return f(session['namespace'], session['repository'], *args, **kwargs)
|
||||||
|
|
|
@ -2,7 +2,7 @@ import json
|
||||||
import logging
|
import logging
|
||||||
import urlparse
|
import urlparse
|
||||||
|
|
||||||
from flask import request, make_response, jsonify, abort
|
from flask import request, make_response, jsonify, abort, session
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
|
|
||||||
from data import model
|
from data import model
|
||||||
|
@ -25,6 +25,10 @@ def generate_headers(role='read'):
|
||||||
def wrapper(namespace, repository, *args, **kwargs):
|
def wrapper(namespace, repository, *args, **kwargs):
|
||||||
response = f(namespace, repository, *args, **kwargs)
|
response = f(namespace, repository, *args, **kwargs)
|
||||||
|
|
||||||
|
# Setting session namespace and repository
|
||||||
|
session['namespace'] = namespace
|
||||||
|
session['repository'] = repository
|
||||||
|
|
||||||
# We run our index and registry on the same hosts for now
|
# We run our index and registry on the same hosts for now
|
||||||
registry_server = urlparse.urlparse(request.url).netloc
|
registry_server = urlparse.urlparse(request.url).netloc
|
||||||
response.headers['X-Docker-Endpoints'] = registry_server
|
response.headers['X-Docker-Endpoints'] = registry_server
|
||||||
|
|
Reference in a new issue