diff options
Diffstat (limited to 'app/lib/filebrowser/decorators.py')
-rw-r--r-- | app/lib/filebrowser/decorators.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/app/lib/filebrowser/decorators.py b/app/lib/filebrowser/decorators.py new file mode 100644 index 0000000..de80f3d --- /dev/null +++ b/app/lib/filebrowser/decorators.py @@ -0,0 +1,30 @@ +# coding: utf-8 + +# django imports +from django.contrib.sessions.models import Session +from django.shortcuts import get_object_or_404, render_to_response +from django.contrib.auth.models import User +from django.template import RequestContext +from django.conf import settings + + +def flash_login_required(function): + """ + Decorator to recognize a user by its session. + Used for Flash-Uploading. + """ + + def decorator(request, *args, **kwargs): + try: + engine = __import__(settings.SESSION_ENGINE, {}, {}, ['']) + except: + import django.contrib.sessions.backends.db + engine = django.contrib.sessions.backends.db + session_data = engine.SessionStore(request.POST.get('session_key')) + user_id = session_data['_auth_user_id'] + # will return 404 if the session ID does not resolve to a valid user + request.user = get_object_or_404(User, pk=user_id) + return function(request, *args, **kwargs) + return decorator + + |