Para ejemplos de eventos:
http://www.craighooghiem.com/applica...aravel-events/.
Volviendo al tema, lo que necesitas hacer es mover el codigo que repites fuera del controlador las lineas 6-44 solo determinan detalles del usuario que ya debieras de saber cuando llega al controlador. Para lograr eso segun la documentación de Laravel puedes hacer uso de los filtros de esa forma puedes determinar el perfil, estaciones y el menú antes de que cargues el controlador correspondiente para detalles mira:
http://laravel.com/docs/routing#route-filters para un ejemplo con sentry:
http://laravelsnippets.com/snippets/...-route-filters.
En tu código no entiendo por que esta separado el perfil en una sesion el usuario por un lado y la entidad a la que pertenece por otro. No debieran de estar relacionados ? si ya tengo el usuario ya debiera de conocer su perfil y entidad. y no tener que determinarlos como lo haces en tu código.
Lo de los controladores no necesariamente. tu tienes 20 controladores y supongo que es uno por cada entidad de tu modelo debido al uso de los generadores de CRUD. Pero generalmente este tipo de herramientas te generan mucho código repetido y no reflejan el comportamiento real de los objetos de tu dominio.