def ManageExternalTools(request, template='lti_manager/external_tools.html'): user = UserService().get_original_user() authz = Group() if not authz.is_member_of_group( user, getattr(settings, 'CANVAS_MANAGER_ADMIN_GROUP', '')): return HttpResponseRedirect('/') params = {'read_only': False if can_manage_external_tools() else True} return render_to_response(template, params, RequestContext(request))
def override(request): logger = logging.getLogger(__name__) user_service = UserService() user_service.get_user() override_error_username = None override_error_msg = None # Do the group auth here. if not hasattr(settings, "USERSERVICE_ADMIN_GROUP"): print "You must have a group defined as your admin group." print 'Configure that using USERSERVICE_ADMIN_GROUP="foo_group"' raise Exception("Missing USERSERVICE_ADMIN_GROUP in settings") actual_user = user_service.get_original_user() if not actual_user: raise Exception("No user in session") g = Group() group_name = settings.USERSERVICE_ADMIN_GROUP is_admin = g.is_member_of_group(actual_user, group_name) if is_admin is False: return render_to_response('no_access.html', {}) context = {} if request.method == "POST": _handle_post(request, context) try: extra_template = "userservice/user_override_extra_info.html" template.loader.get_template(extra_template) context['has_extra_template'] = True context['extra_template'] = 'userservice/user_override_extra_info.html' except template.TemplateDoesNotExist: # This is a fine exception - there doesn't need to be an extra info # template pass try: template.loader.get_template("userservice/user_override_wrapper.html") context['wrapper_template'] = 'userservice/user_override_wrapper.html' except template.TemplateDoesNotExist: context['wrapper_template'] = 'support_wrapper.html' # This is a fine exception - there doesn't need to be an extra info # template pass add_session_context(request, context) add_date_term_info(request, context) add_seen_registration_context(request, context) return render_to_response("display_dates/override.html", context, context_instance=RequestContext(request))
def override(request): logger = logging.getLogger(__name__) user_service = UserService() user_service.get_user() override_error_username = None override_error_msg = None # Do the group auth here. if not hasattr(settings, "USERSERVICE_ADMIN_GROUP"): print "You must have a group defined as your admin group." print 'Configure that using USERSERVICE_ADMIN_GROUP="foo_group"' raise Exception("Missing USERSERVICE_ADMIN_GROUP in settings") actual_user = user_service.get_original_user() if not actual_user: raise Exception("No user in session") g = Group() group_name = settings.USERSERVICE_ADMIN_GROUP is_admin = g.is_member_of_group(actual_user, group_name) if is_admin is False: return render(request, 'no_access.html', {}) context = {} if request.method == "POST": _handle_post(request, context) try: extra_template = "userservice/user_override_extra_info.html" template.loader.get_template(extra_template) context['has_extra_template'] = True context['extra_template'] = 'userservice/user_override_extra_info.html' except template.TemplateDoesNotExist: # This is a fine exception - there doesn't need to be an extra info # template pass try: template.loader.get_template("userservice/user_override_wrapper.html") context['wrapper_template'] = 'userservice/user_override_wrapper.html' except template.TemplateDoesNotExist: context['wrapper_template'] = 'support_wrapper.html' # This is a fine exception - there doesn't need to be an extra info # template pass add_session_context(request, context) add_date_term_info(request, context) add_seen_registration_context(request, context) return render(request, "display_dates/override.html", context)
def recorders(request, template='scheduler/recorders.html'): user = UserService().get_original_user() if not Group().is_member_of_group(user, settings.PANOPTO_ADMIN_GROUP): return HttpResponseRedirect("/") status_code = 200 try: term = get_current_term() except DataFailureException as ex: logger.exception(ex) raise StudentWebServiceUnavailable() t = loader.get_template(template) c = RequestContext( request, { 'canvas_host': settings.RESTCLIENTS_CANVAS_HOST if hasattr( settings, 'RESTCLIENTS_CANVAS_HOST') else '', 'panopto_server': settings.PANOPTO_SERVER if hasattr(settings, 'PANOPTO_SERVER') else '', 'STATIC_URL': settings.STATIC_URL, }) return HttpResponse(t.render(c), status=status_code)
def wrapper(*args, **kwargs): if not hasattr(settings, "RESTCLIENTS_ADMIN_GROUP"): print "You must have a group defined as your admin group." print 'Configure that using RESTCLIENTS_ADMIN_GROUP="u_foo_bar"' raise Exception("Missing RESTCLIENTS_ADMIN_GROUP in settings") user_service = UserService() actual_user = user_service.get_original_user() g = Group() is_admin = g.is_member_of_group(actual_user, settings.RESTCLIENTS_ADMIN_GROUP) if not is_admin: return HttpResponseRedirect("/") return view_func(*args, **kwargs)
def authorize(self, request): try: self.blti_authorize(request) except RESTDispatchAuthorization: try: BLTI().oauth_validate(request) except BLTIException: if (request.user.is_authenticated() and Group().is_member_of_group( request.user.username, settings.PANOPTO_ADMIN_GROUP)): return raise RESTDispatchAuthorization("Access Denied")
def index(request, template='ems_wheniwork/serviceorders.html'): user = request.user.username if not Group().is_member_of_group(user, settings.EMSTOOLS_SCHEDULER_GROUP): return HttpResponseRedirect("/") status_code = 200 os.environ['TZ'] = 'America/Los_Angeles' tzset() context = { 'todays_date': strftime("%Y-%m-%d"), 'thirty_date': strftime("%Y-%m-%d", localtime(time() + 60 * 60 * 24 * 30)), 'STATIC_URL': settings.STATIC_URL, } return render(request, template, context, status=status_code)
def proxy(request, service, url): if not hasattr(settings, "RESTCLIENTS_ADMIN_GROUP"): print "You must have a group defined as your admin group." print 'Configure that using RESTCLIENTS_ADMIN_GROUP="u_foo_bar"' raise Exception("Missing RESTCLIENTS_ADMIN_GROUP in settings") user_service = UserService() actual_user = user_service.get_original_user() g = Group() is_admin = g.is_member_of_group(actual_user, settings.RESTCLIENTS_ADMIN_GROUP) if not is_admin: return HttpResponseRedirect("/") use_pre = False headers = {} if service == "sws": dao = SWS_DAO() headers["X-UW-Act-as"] = actual_user elif service == "pws": dao = PWS_DAO() elif service == "gws": dao = GWS_DAO() elif service == "nws": dao = NWS_DAO() elif service == "hfs": dao = Hfs_DAO() elif service == "book": dao = Book_DAO() elif service == "canvas": dao = Canvas_DAO() elif service == "grad": dao = Grad_DAO() elif service == "uwnetid": dao = Uwnetid_DAO() elif service == "libraries": dao = MyLibInfo_DAO() elif service == "libcurrics": dao = LibCurrics_DAO() elif service == "myplan": dao = MyPlan_DAO() elif service == "iasystem": dao = IASYSTEM_DAO() headers = {"Accept": "application/vnd.collection+json"} subdomain = None if url.endswith('/evaluation'): if url.startswith('uwb/') or url.startswith('uwt/'): subdomain = url[:3] url = url[4:] else: subdomain = url[:2] url = url[3:] elif service == "calendar": dao = TrumbaCalendar_DAO() use_pre = True else: return HttpResponseNotFound("Unknown service: %s" % service) url = "/%s" % quote(url) if request.GET: try: url = "%s?%s" % (url, urlencode(request.GET)) except UnicodeEncodeError: err = "Bad URL param given to the restclients browser" return HttpResponse(err) start = time() try: if service == "iasystem" and subdomain is not None: response = dao.getURL(url, headers, subdomain) else: response = dao.getURL(url, headers) except Exception as ex: response = MockHTTP() response.status = 500 response.data = str(ex) end = time() # Assume json, and try to format it. try: if not use_pre: content = format_json(service, response.data) json_data = response.data else: content = response.data json_data = None except Exception as e: content = format_html(service, response.data) json_data = None context = { "url": unquote(url), "content": content, "json_data": json_data, "response_code": response.status, "time_taken": "%f seconds" % (end - start), "headers": response.headers, "override_user": user_service.get_override_user(), "use_pre": use_pre, } try: loader.get_template("restclients/extra_info.html") context["has_extra_template"] = True context["extra_template"] = "restclients/extra_info.html" except TemplateDoesNotExist: pass try: loader.get_template("restclients/proxy_wrapper.html") context["wrapper_template"] = "restclients/proxy_wrapper.html" except TemplateDoesNotExist: context["wrapper_template"] = "proxy_wrapper.html" try: search_template_path = re.sub(r"\..*$", "", url) search_template = "proxy/%s%s.html" % (service, search_template_path) loader.get_template(search_template) context["search_template"] = search_template context["search"] = format_search_params(url) except TemplateDoesNotExist: context["search_template"] = None return render_to_response("proxy.html", context, context_instance=RequestContext(request))
def proxy(request, service, url): if not hasattr(settings, "RESTCLIENTS_ADMIN_GROUP"): print "You must have a group defined as your admin group." print 'Configure that using RESTCLIENTS_ADMIN_GROUP="u_foo_bar"' raise Exception("Missing RESTCLIENTS_ADMIN_GROUP in settings") user_service = UserService() actual_user = user_service.get_original_user() g = Group() is_admin = g.is_member_of_group(actual_user, settings.RESTCLIENTS_ADMIN_GROUP) if not is_admin: return HttpResponseRedirect("/") use_pre = False headers = {} if service == "sws": dao = SWS_DAO() headers["X-UW-Act-as"] = actual_user elif service == "pws": dao = PWS_DAO() elif service == "gws": dao = GWS_DAO() elif service == "nws": dao = NWS_DAO() elif service == "hfs": dao = Hfs_DAO() elif service == "book": dao = Book_DAO() elif service == "canvas": dao = Canvas_DAO() elif service == "uwnetid": dao = Uwnetid_DAO() elif service == "libraries": dao = Libraries_DAO() elif service == "myplan": dao = MyPlan_DAO() elif service == "calendar": dao = TrumbaCalendar_DAO() use_pre = True else: return HttpResponseNotFound("Unknown service: %s" % service) url = "/%s" % quote(url) if request.GET: url = "%s?%s" % (url, urlencode(request.GET)) start = time() try: response = dao.getURL(url, headers) except Exception as ex: response = MockHTTP() response.status = 500 response.data = str(ex) end = time() # Assume json, and try to format it. try: if not use_pre: content = format_json(service, response.data) json_data = response.data; else: content = response.data json_data = None except Exception as e: content = format_html(service, response.data) json_data = None; context = { "url": unquote(url), "content": content, "json_data": json_data, "response_code": response.status, "time_taken": "%f seconds" % (end - start), "headers": response.headers, "override_user": user_service.get_override_user(), "use_pre": use_pre, } try: loader.get_template("restclients/extra_info.html") context["has_extra_template"] = True context["extra_template"] = "restclients/extra_info.html" except TemplateDoesNotExist: pass try: loader.get_template("restclients/proxy_wrapper.html") context["wrapper_template"] = "restclients/proxy_wrapper.html" except TemplateDoesNotExist: context["wrapper_template"] = "proxy_wrapper.html" try: search_template_path = re.sub(r"\..*$", "", url) search_template = "proxy/%s%s.html" % (service, search_template_path) loader.get_template(search_template) context["search_template"] = search_template context["search"] = format_search_params(url) except TemplateDoesNotExist: context["search_template"] = None return render_to_response("proxy.html", context, context_instance=RequestContext(request))
def support(request): #timer = Timer() logger = logging.getLogger(__name__) user_service = UserService() user_service.get_user() override_error_username = None override_error_msg = None # Do the group auth here. if not hasattr(settings, "USERSERVICE_ADMIN_GROUP"): print "You must have a group defined as your admin group." print 'Configure that using USERSERVICE_ADMIN_GROUP="foo_group"' raise Exception("Missing USERSERVICE_ADMIN_GROUP in settings") actual_user = user_service.get_original_user() if not actual_user: raise Exception("No user in session") g = Group() group_name = settings.USERSERVICE_ADMIN_GROUP is_admin = g.is_member_of_group(actual_user, group_name) if is_admin == False: return render_to_response('no_access.html', {}) if "override_as" in request.POST: new_user = request.POST["override_as"].strip() validation_module = _get_validation_module() validation_error = validation_module(new_user) if validation_error is None: logger.info("%s is impersonating %s", user_service.get_original_user(), new_user) user_service.set_override_user(new_user) else: override_error_username = new_user override_error_msg = validation_error if "clear_override" in request.POST: logger.info("%s is ending impersonation of %s", user_service.get_original_user(), user_service.get_override_user()) user_service.clear_override() context = { 'original_user': user_service.get_original_user(), 'override_user': user_service.get_override_user(), 'override_error_username': override_error_username, 'override_error_msg': override_error_msg, } try: template.loader.get_template("userservice/user_override_extra_info.html") context['has_extra_template'] = True except template.TemplateDoesNotExist: # This is a fine exception - there doesn't need to be an extra info # template pass return render_to_response('support.html', context, context_instance=RequestContext(request))
def has_access_to_service(self, user_name, service): backend = Group() for group in service.groups.all(): if backend.is_member_of_group(user_name, group.source_id): return True return False