Pull to refresh

Comments 7

Статья состоит из простыни кода и перевода названий методов на русский.

Расскажите лучше про ACL в Firebase.
В данной статье я хоте показать, насколько просто происходит работа с авторизацией/регистрацией пользователей используя Firebase.

Что касается ACL, то можно реализовать некое подобие средствами AngularJS используя сервис Auth, который поставляется с библиотекой AngularFire. Учитывая, что в текущем примере я использую ngBoilerplate и UI Router, вот пример из официальной документации:
// for ui-router
app.run(["$rootScope", "$state", function($rootScope, $state) {
  $rootScope.$on("$stateChangeError", function(event, toState, toParams, fromState, fromParams, error) {
    // We can catch the error thrown when the $requireAuth promise is rejected
    // and redirect the user back to the home page
    if (error === "AUTH_REQUIRED") {
      $state.go("home");
    }
  });
}]);

app.config(["$stateProvider", function ($stateProvider) {
  $stateProvider
    .state("home", {
      // the rest is the same for ui-router and ngRoute...
      controller: "HomeCtrl",
      templateUrl: "views/home.html",
      resolve: {
        // controller will not be loaded until $waitForAuth resolves
        // Auth refers to our $firebaseAuth wrapper in the example above
        "currentAuth": ["Auth", function(Auth) {
          // $waitForAuth returns a promise so the resolve waits for it to complete
          return Auth.$waitForAuth();
        }]
      }
    })
    .state("account", {
      // the rest is the same for ui-router and ngRoute...
      controller: "AccountCtrl",
      templateUrl: "views/account.html",
      resolve: {
        // controller will not be loaded until $requireAuth resolves
        // Auth refers to our $firebaseAuth wrapper in the example above
        "currentAuth": ["Auth", function(Auth) {
          // $requireAuth returns a promise so the resolve waits for it to complete
          // If the promise is rejected, it will throw a $stateChangeError (see above)
          return Auth.$requireAuth();
        }]
      }
    });
}]);

app.controller("HomeCtrl", ["currentAuth", function(currentAuth) {
  // currentAuth (provided by resolve) will contain the
  // authenticated user or null if not logged in
}]);

app.controller("AccountCtrl", ["currentAuth", function(currentAuth) {
  // currentAuth (provided by resolve) will contain the
  // authenticated user or null if not logged in
}]);


Дополнительно можно хранить данные о пользователе в Firebase и настроить RBAC. Вот пример, как это можно реализовать.

Немного позже я могу описать процесс реализации RBAC с использованием AngularJS и Firebase. Пока я этого не делал, поэтому кидать дополнительные ссылки на документацию не буду)
Я поэтому взял kinvey потому что там работа с правами гораздо гораздо удобнее.
SaaS на несколько аккаунтов в Firebase просто физически нельзя реализовать
Мне вот интересно authUser.data, то что Вы записываете в локальное хранилище, это то что отдает firebase, а что именно он отдает, какие поля?
В переменной authUser лежат данные следующего вида:
{
    "status": true,
    "data": {
        "provider": "password",
        "uid": "simplelogin:11",
        "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.bUi5oKnJT1KIVALcmpaSYEHKkn5eQEolrvlXHjNMjC0",
        "password": {
            "email": "qweqew@mail.com",
            "isTemporaryPassword": false
        },
        "auth": {
            "provider": "password",
            "uid": "simplelogin:11"
        },
        "expires": 1419625534
    }
}
Спасибо, буду думать, смогу ли я применить это у себя
Sign up to leave a comment.

Articles

Change theme settings