Yo lo hago simple... al inicio de cada pagina mando llamar un archivo que se encarga de revisar los permisos... y en base a eso voy construyendo los menus...
Al loguearse el usuario le asigno un token que almaceno en la variable de sesion, despues cuando entra a diferentes partes reviso ese token contra lo que esta almacenado en la base de datos y ejecuto una serie de acciones secuenciales
primero se revisa si la sesion ha expirado, en caso negativo redirijo a la persona a la ventana de login para que se de de alta de nuevo, en el caso contrario actualizo la hora de expiracion y obtengo los permisos del usuario, que almaceno en un objeto
Y con eso voy construyendo el menu del siguiente modo:
Código PHP:
$menu_sup = new menu();
$menu_sup->anadir('Opcion 1', 'opcion1.php', 'clase_menu');
if ($utilz->(level1))
$menu_sup->anadir('level1', 'level1.php', 'clase_menu');
if ($utilz->admin())
$menu_sup->anadir('Admin', 'admin.php', 'clase_menu');
Y asi me la voy llevando hasta terminar los menus...