Как узнать, что пользователь уже вошел в другой браузер в firebase - PullRequest
0 голосов
/ 18 января 2019

У меня есть административная панель реагирования для модуля администрирования моего проекта. У меня есть требование, что если 2 пользователя имеют одинаковые userId и пароль, то они оба не могут войти в систему одновременно. Если Пользователь1 уже вошел в административную панель, то Пользователь2 не должен быть логином. Я получил Id токен вошедшего в систему пользователя и сохранил его в базе данных. Теперь я хотел проверить, является ли пользователь уже логином или нет. Я не имею ни малейшего представления, как запретить пользователю входить в панель администратора, если другой пользователь уже вошел в систему.

Пожалуйста, покажите немного кода и предложите мне правильный путь для выполнения моего требования

Вот мой код:

//AUTHENTICATION
var loggedIn = false;
var activeSession = true;
if (Config.firebaseConfig.apiKey) {

  firebase.auth().onAuthStateChanged(function (user) {
    // Retriving ID Token

      var Auth = firebase.auth();
      var idToken = Auth.currentUser.getToken();
      firebase.database().ref('activeSession').push({
        idToken:idToken,
        userEmail : user.email,
        userId: user.uid,
        isUserLoggedIn : activeSession
      });

      firebase.auth().verifyIdToken(idToken).then(function(decodedToken) {
        console.log(decodedToken);
          var uid = decodedToken.uid;
          console.log(uid);
          // ...
        }).catch(function(error) {
          // Handle error
        });


    }).catch(function(error) {
      // Handle error
      console.log(error);
    });


    if (user) {
      // User is signed in.
      console.log("User is signed in " + user.email);

      if (Config.adminConfig.allowedUsers != null && Config.adminConfig.allowedUsers.indexOf(user.email) == -1) {
        //Error, this user is not allowed anyway
        alert("The user " + user.email + " doens't have access to this admin panel!");
        firebase.auth().signOut();
      } else {
        loggedIn = true;
        displayApp();
      }



    } else {
      // No user is signed in.
      console.log("No user is signed in ");
      loggedIn = false;
      displayApp();
      if (window.display) {
        window.display();
      }

    }
  } else {
  // No user is signed in.
  console.log("No user is signed in, step 1 ");
  loggedIn = false;
  displayApp();
  if (window.display) {
    window.display();
  }
}


function displayApp() {
  if (loggedIn) {
    ReactDOM.render(
      <Admin />,
      document.getElementById('root')
    );
  } else {
    ReactDOM.render(
      <Login />,
      document.getElementById('root')
    );
  }
}
displayApp();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...