I’ve successfully enabled and configured the Discovery service on Open edX instance using Tutor and was able to create and display programs for authenticated users.
I can access and display the programs tab at <LMS_HOST>/dashboard/programs, which works well for authenticated, logged-in users. However, I need to display the programs for non-authenticated users (i.e., visitors who are not logged in).
So far, the programs feature seems to be restricted to logged-in users only.
My Question:
How can I modify Open edX setup to allow non-authenticated users to view the programs page or at least a public version of it? Is there a configuration change or a way to fetch and display programs in a way that doesn’t require the user to be logged in?
Hi @harout7,
Currently the programs page shows only the programs for which a student is enrolled in one course. So it won’t work like this for non authenticated, even if you could skip the authentication step.
In order to show the available programs, teams usually develop an application that calls the /api/v1/programs/ endpoint of the discovery service to show a catalog.
Please consider that Discovery is in process of being deprecated soon, so probably the whole programs functionality will be reviewed soon.
The Programs functionality will continue to exist, I am sure, but the implementation will certainly be changed. @harout7, can you talk about your use case for wanting to display the programs for non-authenticated users? Right now, the programs tab is part of the learner dashboard, which shows enrolled courses for a logged in learner on the Courses tab, and enrolled programs for the Programs tab. It’s not designed to be meaningful to non-authenticated users. Are you looking for a list of all available programs?
Hi @deborahgu , yes I am looking to list all available programs for not logged-in user, like a user can visit the platform (without logging in) and can explore available programs and courses on this URL <LMS_HOST>/programs and then can enroll for desired program after registering/logging in.
I was wondering if there is any additional configuration needed to achieve this. I came across a suggestion from @Andres.Aulasneo , who mentioned that this could be done by developing an app that calls the /api/v1/programs/ endpoint, skipping the authentication step. However, this seems to add an extra layer of complexity, especially since there doesn’t appear to be a UI for managing program enrollments.
Do you have any insights or recommendations on how to proceed with this approach, or if there’s a simpler way to achieve the same functionality?
Using the API to build a displayed program listing is the suggestion that I would make, as well. The tricky thing to think about with “programs”, as currently coded, is that they don’t really have enrollments per se. You are enrolled in a program if you are enrolled in any of that program’s valid courses.
There are other program-analogues in the system, and people have built out other program-like functionalities. (For example, we have an internal concept of the ability to enroll for a very specific kind of program, that doesn’t use this Programs code; for other use cases we do use Programs).
And again, the way programs are implemented is definitely going to be revisited in the medium-term future as Discovery is deprecated, and when that happens, I’m assuming there will be a lot of use cases that get gathered, and I encourage you to participate in the conversation when it happens. Or start the conversation early, if you want! One thing I have learned is that even within a single company there is a huge number of radically different use cases for how instructional designers conceive of the needs of “programs”.