Я новичок в реагировании и в настоящее время занимаюсь разработкой приложения,
ПРЕДПОСЫЛКИ:
У него есть администратор, преподаватель, студент, информационные панелии статическая целевая страница с кнопками / admin / login, / faculty / login, / student / login.который открывает соответствующие информационные панели.
ПРОБЛЕМА:
* при входе в систему с помощью учетной записи учащегося я могу получить доступ ко всем информационным панелям и т.наоборот, у меня есть поле с именем role в моих узлах firebase,
* при входе в систему я проверяю роль пользователя, и она не позволяет другим пользователям с другими ролями войти в систему, но однажды после входа я могуполучить доступ ко всем панелям мониторинга (что не должно происходить), включая панель, которую я должен открыть, я использую реагирование и маршруты.js, мои публичные и частные маршруты.
![enter image description here](https://i.stack.imgur.com/KBLhQ.png)
Я пытаюсь использовать флаги 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>