Prevent users from having two different roles in the same course

Idea created by James Ashby on Jan 23, 2018
    Open for Voting

    In Canvas, it's possible to add someone as a student to section 1 of a course, and then add that same user to section 2 as a TA. At this point, they'll still be listed as a student in section 1, but they'll effectively be a TA in the course, which seems really strange to me. Is there a use case out there for this that I'm not aware of?


    At our university, we'd prefer if this never happened. My idea is a feature that would trigger a pop-up whenever someone tried to add a user to a course in a different section with a different role than they already have. The pop up would say something like, "This user is already enrolled in this course as a Student. Is it okay to change their role to TA?" And if the user says "Yes", then Canvas will change the role of their existing section enrollments to match the role of the new enrollment (assuming that user has the permissions to make such a change). And something similar would happen for API enrollments (not sure what: any ideas?).


    This would avoid a lot of accidental confusion when someone tries to add a user that they don't realize is already enrolled in the course under a different role. It would also help us as admins control data privacy. We have the permission turned off that would allow Teachers to change Student roles in courses, because we don't want them adjusting those roles. But we do want Teachers to be able to add or remove TAs, Teachers, etc. Right now, this means they can essentially overwrite a Student enrollment with a TA enrollment in a different section, even though they don't have the permissions to change Student enrollments. I know, confusing!


    This might be relevant to the Priority: Granular Permissions discussion, but it looks like they're still discussing overall design, not specific permissions. Ideally, though, I think this would be more of a functionality change than something related to permissions.


    Thanks for reading!