How can I make some courses accessible only to the internal staff in my company and

I have created some courses on our training site http://www.smartedtechu.com. I want some of the courses accessible only to the internal staff in my company and not to anyone else. With the courses available to everyone else, I want to filter the courses based on the registration. If a teacher registers, they should have access to a certain set of courses, if it is Principal, they should have access to a certain set of courses. How can I do that?
1. Some courses accessible only to internal staff.
2. Based on Profession title at the time of registration, how to assign courses automatically?