diff options
author | Joar Wandborg <git@wandborg.com> | 2012-09-15 21:07:24 +0200 |
---|---|---|
committer | Joar Wandborg <git@wandborg.com> | 2012-09-15 21:07:24 +0200 |
commit | 3a1993288ffefe790208b719d6bd5ea42af79c49 (patch) | |
tree | fc763ca5194034172a7a18ad401f467414c9ba8f | |
parent | 30520c92cc621bd0826259aca3d9b7b740f71ef0 (diff) | |
download | mediagoblin-3a1993288ffefe790208b719d6bd5ea42af79c49.tar.lz mediagoblin-3a1993288ffefe790208b719d6bd5ea42af79c49.tar.xz mediagoblin-3a1993288ffefe790208b719d6bd5ea42af79c49.zip |
Fixed ?next=<url> argument for require_active_login
It now includes the full URI, including GET args, not just the path.
-rw-r--r-- | mediagoblin/decorators.py | 15 | ||||
-rw-r--r-- | mediagoblin/plugins/api/__init__.py | 5 | ||||
-rw-r--r-- | mediagoblin/plugins/api/views.py | 2 |
3 files changed, 17 insertions, 5 deletions
diff --git a/mediagoblin/decorators.py b/mediagoblin/decorators.py index 0eb1361d..9961be83 100644 --- a/mediagoblin/decorators.py +++ b/mediagoblin/decorators.py @@ -16,6 +16,9 @@ from functools import wraps +from urlparse import urljoin +from urllib import urlencode + from webob import exc from mediagoblin.db.util import ObjectId, InvalidId @@ -34,10 +37,16 @@ def require_active_login(controller): request, 'mediagoblin.user_pages.user_home', user=request.user.username) elif not request.user or request.user.get('status') != u'active': + next_url = urljoin( + request.urlgen('mediagoblin.auth.login', + qualified=True), + request.url) + return exc.HTTPFound( - location="%s?next=%s" % ( - request.urlgen("mediagoblin.auth.login"), - request.full_path)) + location='?'.join([ + request.urlgen('mediagoblin.auth.login'), + urlencode({ + 'next': next_url})])) return controller(request, *args, **kwargs) diff --git a/mediagoblin/plugins/api/__init__.py b/mediagoblin/plugins/api/__init__.py index 6a127b6e..40722088 100644 --- a/mediagoblin/plugins/api/__init__.py +++ b/mediagoblin/plugins/api/__init__.py @@ -25,12 +25,13 @@ _log = logging.getLogger(__name__) PLUGIN_DIR = os.path.dirname(__file__) +config = pluginapi.get_config(__name__) def setup_plugin(): - config = pluginapi.get_config(__name__) - _log.info('Setting up API...') + _log.debug('API config: {0}'.format(config)) + routes = [ Route('mediagoblin.plugins.api.test', '/api/test', controller='mediagoblin.plugins.api.views:api_test'), diff --git a/mediagoblin/plugins/api/views.py b/mediagoblin/plugins/api/views.py index 6a58fabf..ff177e29 100644 --- a/mediagoblin/plugins/api/views.py +++ b/mediagoblin/plugins/api/views.py @@ -33,6 +33,8 @@ from mediagoblin.media_types import sniff_media, InvalidFileType, \ from mediagoblin.plugins.api.tools import api_auth, get_entry_serializable, \ json_response +from mediagoblin.plugins.api import config + _log = logging.getLogger(__name__) |