summaryrefslogtreecommitdiff
path: root/app/lib/filebrowser/decorators.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/lib/filebrowser/decorators.py')
-rw-r--r--app/lib/filebrowser/decorators.py30
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
+
+