Выставляйте текущего вошедшего в систему пользователя глобально в Angular и Firebase

Я ищу четкий и элегантный способ показать текущего вошедшего в систему пользователя везде в моем приложении, потому что у меня есть частичное представление навигации, которое содержит информацию о пользователе, а также кнопку выхода, но я не смог этого сделать .

Моя отправная точка — это пример приложения https://github.com/firebase/angularfire-seed и Я только что добавил AppCtrl, где я могу показать текущего вошедшего в систему пользователя. Я попытался добавить провайдера пользователя, но это тоже не работает.

controllers.js

.controller('AppCtrl', ['$scope', '$rootScope','simpleLogin', 'fbutil', '$location', function($scope, $rootScope, simpleLogin, fbutil, $location) {
  $scope.user = simpleLogin.getUser();
  $scope.logout = function() {
    var profile = fbutil.syncObject(['users', simpleLogin.getUser().uid]);
    profile.$destroy();
    simpleLogin.logout();
    $location.path('/login');
  };
}])

index.html

<body ng-controller="AppCtrl">

Ваша помощь будет очень признательна.


person Maher Manoubi    schedule 25.09.2014    source источник


Ответы (2)


Взгляните на параметр resolve — он существует как в $routerProvider, так и в $stateProvide. resolve разрешает объекты (включая разрешение промиса), после чего эти объекты становятся доступными для ваших контроллеров. В этом случае вы «разрешаете» свою переменную loggedInUser (делая все, что вам нужно, через службу аутентификации.

$routeProvider
   .when("/someSecuredContent", {
     templateUrl: 'someSecuredContent.html',
     controller: 'SecuredController',
     resolve: {
        loggedInUser: function(MyAuth){
           return MyAuth.loggedIn(); // MyAuth.loggedIn() should return a $q promise
        }
     }
});

Затем в контроллере будет введено loggedInUser.

Вот сайт. с большим количеством примеров.

person New Dev    schedule 26.09.2014
comment
Это также описано в руководстве по AngularFire. с некоторыми рабочими примерами для аутентификации Firebase. - person Kato; 30.09.2014

После использования нескольких методов для глобального представления текущего вошедшего в систему пользователя, я думаю, это лучше всего описано в этом руководство, особенно в разделе "Доступ к текущему пользователю во всем приложении". Кроме того, учебник потрясающий, и я думаю, что у них есть правильная архитектура для этого типа приложений.

person Maher Manoubi    schedule 01.10.2014