from django.http import HttpResponse
from django.contrib.auth import authenticate, login
-#
-def view_or_basicauth(view, request, test_func, realm = "", *args, **kwargs):
+
+def view_or_basicauth(view, request, test_func, realm="", *args, **kwargs):
"""
This is a helper function used by 'logged_in_or_basicauth' and
'has_perm_or_basicauth' (deleted) that does the nitty of determining if they
# NOTE: We are only support basic authentication for now.
#
if auth[0].lower() == "basic":
- uname, passwd = base64.b64decode(auth[1]).split(':')
+ uname, passwd = base64.b64decode(auth[1].encode('utf-8')).decode('utf-8').split(':')
user = authenticate(username=uname, password=passwd)
if user is not None:
if user.is_active:
response.status_code = 401
response['WWW-Authenticate'] = 'Basic realm="%s"' % realm
return response
-
+
#
-def logged_in_or_basicauth(realm = ""):
+def logged_in_or_basicauth(realm=""):
"""
A simple decorator that requires a user to be logged in. If they are not
logged in the request is examined for a 'authorization' header.
def view_decorator(func):
def wrapper(request, *args, **kwargs):
return view_or_basicauth(func, request,
- lambda u: u.is_authenticated(),
+ lambda u: u.is_authenticated,
realm, *args, **kwargs)
return wrapper
return view_decorator