Как пройти все узлы в firebase - PullRequest
0 голосов
/ 05 апреля 2019

Я новичок в реагировании и в настоящее время занимаюсь разработкой приложения,

ПРЕДПОСЫЛКИ:

У него есть администратор, преподаватель, студент, информационные панелии статическая целевая страница с кнопками / admin / login, / faculty / login, / student / login.который открывает соответствующие информационные панели.

ПРОБЛЕМА:

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

* при входе в систему я проверяю роль пользователя, и она не позволяет другим пользователям с другими ролями войти в систему, но однажды после входа я могуполучить доступ ко всем панелям мониторинга (что не должно происходить), включая панель, которую я должен открыть, я использую реагирование и маршруты.js, мои публичные и частные маршруты.

enter image description here

Я пытаюсь использовать флаги isstudent, isfaculty, isadmin для получения роли и ограничения доступа, но не могу понять, как пройти через все узлы.

любое предложение будет полезно, спасибозаранее.

ROUTES.js

  const Routes = props => {
              if (props.user) {
                 let isStudent=false;
                 let isFaculty=false;
     let isAdmin=false;
                const uid = props.user.uid;
                const request = firebase
                  .database()
                  .ref(`student/${uid}`)
                  .once("value")
                  .then(snapshot => {
                    if (snapshot.val().role === "student") {
         // isStudent=true
                     console.log(snapshot.val());
                    }
                  });

                firebase
                  .database()
                  .ref(`faculty/${uid}`)
                  .once("value")
                  .then(snapshot => {
                    if (snapshot.val().role === "faculty") {
                      console.log(snapshot.val());
    //isFaculty=true
                    }
                  });

                firebase
                  .database()
                  .ref(`admin/${uid}`)
                  .once("value")
                  .then(snapshot => {
                    if (snapshot.val().role === "admin") {
                      console.log(snapshot.val());
    //isAdmin=true
                    }
                  });
              return (
                <MainLayout>
                  <Switch>
                    <AdminPublicRoute
                      {...props}
                      exact
                      restricted={true}
                      path="/admin/login"
                      component={AdminLogin}
                    />
                 {isAdmin&&<AdminPrivateRoute
                      {...props}
                      path="/admin/admindashboard"
                      exact
                      component={AdminDash}
                    />}
            <FacultyPublicRoute
                      {...props}
                      exact
                      restricted={true}
                      path="/faculty/login"
                      component={FacultyLogin}
                    />
 {isFaculty && <FacultyPrivateRoute
                      {...props}
                      path="/faculty/facultydashboard"
                      exact
                      component={FacultyDash}
                    />}

            <StudentPublicRoute
                      {...props}
                      exact
                      restricted={true}
                      path="/student/login"
                      component={StudentLogin}
                    />
                    {isStudent&& <StudentPrivateRoute
                      {...props}
                      path="/student/studentdashboard"
                      exact
                      component={StudentDash}
                    />}
             </Switch>
                </MainLayout>

1 Ответ

0 голосов
/ 05 апреля 2019

Самая красивая - карта Лодаша:

const roles = _.map(obj.admin, item => item.role)

Самый простой - Object.keys

const roles = Object.keys(obj.admin).map(key => key.role)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...