def lti_wrapper(*args, **kwargs): """ Pass LTI reference to function or return error. """ try: the_lti = LTI(lti_args, lti_kwargs) the_lti.verify() kwargs['lti'] = the_lti old_user = g.user g.user = User.from_lti("canvas", session["pylti_user_id"], session.get("lis_person_contact_email_primary", ""), session.get("lis_person_name_given", "Canvas"), session.get("lis_person_name_family", "User")) g.roles = session["roles"].split(",") if "roles" in session else [] g.course = Course.from_lti("canvas", session["context_id"], session.get("context_title", ""), g.user.id) session['lti_course'] = g.course.id g.user.update_roles(g.roles, g.course.id) if old_user != g.user: flask_security.utils.logout_user() flask_security.utils.login_user(g.user, remember = True) if not old_user: flask_security.utils.login_user(g.user, remember = True) except LTIException as lti_exception: kwargs['lti'] = None kwargs['lti_exception'] = dict() kwargs['lti_exception']['exception'] = lti_exception kwargs['lti_exception']['kwargs'] = kwargs kwargs['lti_exception']['args'] = args flash("LTI Error: "+str(lti_exception)+".\nTry reloading!") return function(*args, **kwargs)
def ensure_canvas_arguments(): ''' Translates the current session data into a valid user ''' user = User.from_lti("canvas", session["pylti_user_id"], session.get("lis_person_contact_email_primary", ""), session.get("lis_person_name_given", "Canvas"), session.get("lis_person_name_family", "User")) if "roles" in session: roles = session["roles"].split(",") else: roles = [] course = Course.from_lti("canvas", session["context_id"], session.get("context_title", ""), user.id) return user, roles, course