You might be able to shorten it code wise using some kind of loop, but in my opinion I don't see anything that should be slowing down your clients.

Considering that the first CASE that it hits will be the one used (the rest will be skipped), and that group memberships are typically cached, it should be fine.