Papeis em um sistema

Pessoal,

Como vocês implementam/modelam os papéis que o usuário pode assumir no sistema? Como esta informação fica armazenada para consultas futuras?

Ex. O usuário ao entrar no sistema pode optar por ser Administrador ou operador. Esta escolha vai impactar nos menus que serão apresentados, nas operações/módulos que serão disponibilizadas.
Devo ter um objeto para guardar estes valores e lança-los em sessão ou minha modelagem deve considerá-los.

E se estivesse falando de setor ao qual o usuário pertence, ele vai ser usado para filtrar várias informações nos módulos do sistema, mas não teria necessidade de manter em sessão um objeto usuário, por exemplo.
Qual a melhor prática ou a mais adequada a este caso?

Grato.

uma tabela de permissões.

cada ação está atrelada a um tipo de permissão. se vc não tem, não acessa.

ou seja, um if bem no começo procurando se vc, usuario, tem uma determinada flag.

peczenyj,

Esta é a parte lógica.
Acho que não fui claro.
Como/onde armazenar este tipo de informação: perfil do usuário, uma seleção que ele tenha feito no sistema que será usada em todos os módulos(tipo gerência, sendo que só necessito do código ou id da gerencia), estado, etc.

Minha dúvida é como fazer isso OO.