Во-первых: оформите код так, как надо.
Во-вторых: Вы не понимаете основного принципа JavaScript - асинхронности. Так что вам рано использовать angular.
В функции run у Вас выполняется запрос на сервер, он асинхронный, и когда инициализируется контроллер, $rootScope.profile не существует.
Чтобы всё это работало... Сомневаюсь, что вы поймёте, но всё же:
Если хотите получить данные в контроллере до его загрузки, то у роутинга есть свойство resolve. Почитайте об этом.
AngularJS прелоад,как запилить?