Pues si lo necesitas dinamico, entonces para cada peticion tendras que comprobar cuales son los perfiles de ese usuario en ese momento y ver si puede ejecutar la accion o no.
En este caso podrías guardar en la sesion unicamente el usuario y tendrías que recuperar "cada vez" los perfiles. Más dinámico pero, por supuesto, con menor rendimiento.
Las comillas de "cada vez" vienen a que se podría hacer una cache de permisos para no tener que consultarlos cada vez a la BDD, pero eso ya son palabras mayores
.
S!