Hi ravmitterhoff,
I will pull together a bit of what I know from a couple of your other discussions as I think that helps give me some extra context.
From what I understand you are trying to achieve is:
- Have a publicly browsable list of courses that also lets people enrol and sign up to courses they wish to enrol in
- Gather additional demographic information about the Students
- Be able to vet the enrolment request for prior to enabling the enrolment
- Handle the pre-learning experience (i.e. how you get the students into Canvas).
As Valerie mentioned in Where Do Students Join Classes? larger institutions generally have entire systems dedicated to the 'pre LMS experience'. This would include something to display available courses to students, manage the enrolment process (including approvals), take payments and so on. Generally Canvas then sits at the end of that chain and relies on information being provided to it for what you want to happen.
Canvas the learning management system (from what I have seen) largely assumes that an element of this is already in place. There are the basic features available for registering and then browsing the publicly available list, however for anything more advanced than letting anyone register for anything, you would have additional systems in place to take care of the more advanced functions you require.
There are a couple of options I would foresee, the first you could consider is Canvas Catalog, this is only available hosted with Instructure, unlike the externally hosted Canvas LMS you are already using. You would need to contact Instructure to ask about pricing for this option. You can see Canvas Catalog in action at Canvas Network | Free online courses | MOOCs and it would take care of some of the features you need.
The second option would be to build something to do this yourself. Canvas has quite advanced APIs, therefore if you built a solution which gathered the advanced demographic information, that could then provision users into Canvas. This would essentially be building something new on top (including the whole interface to go with it), and if you wanted to go down that path, you might want to check out the Canvas Developers group for a lot of good information.
Hope that helps.
Stuart