code: def GET(self):
          
          data = self.user_manager.session_lti_info()
          if data is None:
              raise web.notfound()
  
          try:
              course = self.course_factory.get_course(data["task"][0])
              if data["consumer_key"] not in course.lti_keys().keys():
                  raise Exception()
          except:
              return self.template_helper.get_renderer().lti_bind(False, "", None, "Invalid LTI data")
  
          user_profile = self.database.users.find_one({"ltibindings." + data["task"][0] + "." + data["consumer_key"]: data["username"]})
          if user_profile:
              self.user_manager.connect_user(user_profile["username"], user_profile["realname"], user_profile["email"], user_profile["language"])
  
          if self.user_manager.session_logged_in():
              raise web.seeother(self.app.get_homepath() + "/lti/task")
  
          return self.template_helper.get_renderer().lti_login(False)
docs: Checks if user is authenticated and calls POST_AUTH or performs login and calls GET_AUTH.
              Otherwise, returns the login template.