def xmlrpc_basic_auth_required(view_func): """ decorator which performs basic http auth authentication against the known userbase """ def _auth(request, *args, **kwargs): if 'HTTP_AUTHORIZATION' in request.META: auth = request.META['HTTP_AUTHORIZATION'].split() if len(auth) == 2: if auth[0].lower() == "basic": uname, passwd = base64.b64decode(auth[1]).split(':') user = authenticate(username=uname, password=passwd) if user is not None: if user.active: return view_func(request, *args, **kwargs) response = HttpResponse(mimetype="text/xml") response.write(xmlrpclib.dumps( xmlrpclib.Fault(401, "Authorization required") )) return response return _auth