I like that you extracted this separate class to represent the teacher, separately from the right to create course sites. That keeps the caching logic at one cache key per class, and is also pretty easy to understand.