def __init__(self, request=None): # Only do webauth and issue cud-requests if the session variable not found if not request.session.has_key('DF_USER_SSO_ID'): user_logged_in_name = None df_user_sso_id = None if os.environ.has_key('DF_REMOTE_USER'): df_user_sso_id = os.environ.get('DF_REMOTE_USER') cud_authenticator = settings.get('main:cud_proxy.host') cudReq = CUDRequest(cud_proxy_host=cud_authenticator,filter= {'sso_username':df_user_sso_id}) user_logged_in_name = str(cudReq.get_fullName()) user_email = str(cudReq.get_email()) if not request.session.exists(request.session.session_key): request.session.create() #set up the session variables request.session['DF_USER_SSO_ID'] = df_user_sso_id request.session['DF_USER_FULL_NAME'] = user_logged_in_name request.session['DF_USER_EMAIL'] = user_email #Add the user to the database if already not registered try: users = Users.objects.filter(sso_id=df_user_sso_id) if len(users) == 0: request.session['DF_USER_ROLE'] = "user" newuser = Users() newuser.sso_id = request.session['DF_USER_SSO_ID'] newuser.username = request.session['DF_USER_FULL_NAME'] newuser.role = request.session['DF_USER_ROLE'] newuser.email = request.session['DF_USER_EMAIL'] newuser.save() else: for user in users: request.session['DF_USER_ROLE'] = user.role except Exception: self.authenticated=False request.session.modified = True # Save the session key in DFSessions try: usersession= DFSessions.objects.get(session_id=request.session.session_key) #usersession.session_id = request.session.session_key #usersession.save() except DFSessions.DoesNotExist,e: usersession = DFSessions() usersession.sso_id= request.session['DF_USER_SSO_ID'] usersession.session_id = request.session.session_key usersession.save() except Exception,e: logger.error("User session could not be saved in DF.")
def adduser(request): # A user needs to be authenticated and authorized to be able to administer the DataFinder # Test if the user is now a university authenticated user if 'DF_USER_SSO_ID' not in request.session: return redirect("/login?redirectPath=admin") # Test if the user is Data Finder authorised user if request.session['DF_USER_ROLE'] != "admin" : return redirect("/") context = {} if request.GET.has_key('message'): context["message"]=request.GET['message'] if request.GET.has_key('status'): context["status"]=request.GET['status'] http_method = request.environ['REQUEST_METHOD'] if http_method == "GET": if request.GET.has_key('user_sso_id'): context["user_sso_id"] = request.GET["user_sso_id"] try: user= Users.objects.get(sso_id=context["user_sso_id"]) context['message']="Sorry, the user " + context["user_sso_id"] +" already exists." context['status']="error" return redirect("/admin?message="+context['message']+"&status="+context['status']) except Users.DoesNotExist,e: cud_authenticator = settings.get('main:cud_proxy.host') cudReq = CUDRequest(cud_proxy_host=cud_authenticator,filter={'sso_username':context["user_sso_id"]}) context["user_sso_name"] = str(cudReq.get_fullName()) context["user_sso_email"] = str(cudReq.get_email()) if cudReq.get_fullName() == None or cudReq.get_email() == None: context['message']=" Please enter a valid Oxford SSO ID" context['status']="error" return redirect("/admin?"+"message="+context['message']+"&status="+context['status']) # Set the role to default to 'user' context["user_role"] = "user" return render_to_response('add_user.html',context, context_instance=RequestContext(request)) except Exception,e: logger.error("Oops, an error occurred, sorry...") context['message']="Oops, an error occurred, sorry..." context['status']="error" return redirect("/admin?"+"message="+context['message']+"&status="+context['status'])
def peopleFromCUD(request): try: # A user needs to be authenticated to be able to contribute a record the DataFinder # Test if the user is now a university authenticated user if 'DF_USER_SSO_ID' not in request.session: return redirect("/login?redirectPath=contribute") http_method = request.environ['REQUEST_METHOD'] context = {} if http_method == "POST": cud_authenticator = settings.get('main:cud_proxy.host') data_filter = {} if request.POST.has_key('lastname') and request.POST['lastname'] != "": data_filter['lastname']= request.POST['lastname'] if request.POST.has_key('firstname') and request.POST['firstname'] != "": data_filter['firstname']= request.POST['firstname'] if request.POST.has_key('middlename') and request.POST['middlename'] != "": data_filter['middlename']= request.POST['middlename'] if request.POST.has_key('email') and request.POST['email'] != "": data_filter['oxford_email']= request.POST['email'] cudReq = CUDRequest(cud_proxy_host=cud_authenticator,filter=data_filter) context["firstname"] = sorted(set(cudReq.get_filter_values('firstname'))) #str(cudReq.get_filter_values('sso_username')) context["lastname"] = sorted(set(cudReq.get_filter_values('lastname'))) context["middlename"] = sorted(set(cudReq.get_filter_values('middlenames'))) context["email"] = sorted(set(cudReq.get_filter_values('oxford_email'))) context["affiliation"] = sorted(set(cudReq.get_affiliation())) #cudReq.get_affiliation()#sorted(set(cudReq.get_affiliation())) return HttpResponse(json.dumps(context), mimetype="application/json") #return render_to_response('contribute.html', context, context_instance=RequestContext(request)) # elif http_method == "POST": # return render_to_response('contribute.html', context, context_instance=RequestContext(request)) except Exception, e: raise
logger.error("Oops, an error occurred, sorry...") context['message']="Oops, an error occurred, sorry..." context['status']="error" return redirect("/admin?"+"message="+context['message']+"&status="+context['status']) elif http_method == "POST": try: user = Users.objects.get(sso_id=request.POST.get("user_sso_id")) context['message']="Sorry, the user " + request.POST.get("user_sso_id") +" already exists." context['status']="error" return redirect("/admin?message="+context['message']+"&status="+context['status']) except Users.DoesNotExist,e: cud_authenticator = settings.get('main:cud_proxy.host') context["user_sso_id"] = request.POST.get("user_sso_id") context["user_role"] = request.POST.get("user_role") cudReq = CUDRequest(cud_proxy_host=cud_authenticator, filter={'sso_username':context["user_sso_id"]}) context["user_sso_name"] = str(cudReq.get_fullName()) context["user_sso_email"] = str(cudReq.get_email()) # Set the role to default to 'user' newuser = Users() newuser.sso_id = context["user_sso_id"] newuser.username = context["user_sso_name"] newuser.role = context["user_role"] newuser.email = context["user_sso_email"] newuser.save() context['message']="Thanks, "+ context["user_sso_id"] +" has been successfully added." context['status']="success" return redirect("/admin/users/edit?user_sso_id="+ request.POST.get("user_sso_id")+"&message="+context['message']+"&status="+context['status'])