I understand what you're getting at. We have a need for people to be able to register for the site and thus be given appropriate permissions to view certain content. I wrote a module that accomplishes this using roles.
For instance, we need a registration form for Pirates and Ninjas. If you go to oursite.com/ninja/register and complete it successfully, you are placed in the ninja role. Same for oursite.com/pirate/register...
There's also an admin piece that you can setup what roles are available for registration.
I have all of this working, but we just got a requirement in that requires us to also register existing users for that content, so now if I'm already a user of the site and I want to become a ninja, oursite.com/ninja/register should handle that as well.
When you're on that page and the code determines you're an existing user, the last thing I need to do is to check if you're already a ninja and then present them with an appropriate message, otherwise let them click a button that puts them in that role.
So, I'm not actually checking to see if they can do something (permissions), I just need to know if they are in that given role. On the pages where we need to use those permissions to say, restrict content to only ninjas, I think that's where we'd
use the permissions stuff you're talking about. For this purpose, unless you tell me different, I think I still just need to check the role they are in.