La forma más sencilla de lograrlo es mediante un servicio. Por ejemplo:
app.factory( 'AuthService', function() {
var currentUser;
return {
login: function() { ... },
logout: function() { ... },
isLoggedIn: function() { ... },
currentUser: function() { return currentUser; }
...
};
});
A continuación, puede hacer referencia a esto en cualquiera de sus controladores. El siguiente código busca cambios en un valor del servicio (llamando a la función especificada) y luego sincroniza los valores modificados con el alcance.
app.controller( 'MainCtrl', function( $scope, AuthService ) {
$scope.$watch( AuthService.isLoggedIn, function ( isLoggedIn ) {
$scope.isLoggedIn = isLoggedIn;
$scope.currentUser = AuthService.currentUser();
});
});
Y luego, por supuesto, puede usar esa información como mejor le parezca; por ejemplo, en directivas, en plantillas, etc. Puede repetir esto (personalizado según lo que necesite hacer) en sus controladores de menú, etc. Todo se actualizará automáticamente cuando cambie el estado del servicio.
Cualquier cosa más específica depende de su implementación.
¡Espero que esto ayude!