code: def course_is_open_to_user(self, course, username=None, lti=None):
          
          if username is None:
              username = self.session_username()
          if lti == "auto":
              lti = self.session_lti_info() is not None
  
          if self.has_staff_rights_on_course(course, username):
              return True
  
          if not course.get_accessibility().is_open() or (not self.course_is_user_registered(course, username) and not course.allow_preview()):
              return False
  
          if lti and course.is_lti() != lti:
              return False
  
          if lti is False and course.is_lti():
              return not course.lti_send_back_grade()
  
          return True
docs: Checks if a user is can access a course
          :param course: a Course object
          :param username: The username of the user that we want to check. If None, uses self.session_username()
          :param lti: indicates if the user is currently in a LTI session or not.
              - None to ignore the check
              - True to indicate the user is in a LTI session
              - False to indicate the user is not in a LTI session
              - "auto" to enable the check and take the information from the current session
          :return: True if the user can access the course, False else