Я пытаюсь иметь такие защищенные маршруты: 1). loggedin user group routes 2.) admin routes, 3.) student routes, 4.) public routes
. LoggedInUser
работает, как и ожидалось, но 2 других маршрута - schooladmin
и students
не работают должным образом.
После входа в систему в качестве администратора или студента, в соответствии с ожиданиями, соответствующие пользователи должны иметь возможность переходить по разрешенным URL-адресам, но всякий раз, например, если администратор школы переходит на http://localhost/students автоматически перенаправляет обратно на панель инструментов, а также для студента. Что мне делать правильно?
Эта группа маршрутов допускает только зарегистрированных пользователей.
var LoggedInUser = FlowRouter.group({
name: 'currentUser', triggersEnter: [function (context, redirect) {
if (Meteor.loggingIn() || Meteor.userId()) {
FlowRouter.watchPathChange();
let currentRoute = FlowRouter.current();
if (!currentRoute.path) {
FlowRouter.go('/dashboard');
} else {
FlowRouter.go(currentRoute.path);
}
} else {
redirect('/');
}
}]
});
Это группа маршрутов для школьных администраторов.
var schooladmin = LoggedInUser.group({
name: 'schooladmins', triggersEnter: [function (context, redirect) {
FlowRouter.watchPathChange();
let currentRoute = FlowRouter.current();
if (Roles.userIsInRole(Meteor.userId(), ['super-admin', 'admin'])) {
console.log(currentRoute.path);
FlowRouter.go(currentRoute.path);
} else {
redirect('dashboard');
}
}]
});
Это маршрут для студентов
var students = LoggedInUser.group({
name: 'students', triggersEnter:[function (context, redirect) {
FlowRouter.watchPathChange();
let currentRoute = FlowRouter.current();
if (Roles.userIsInRole(Meteor.userId(), ['manage-team', 'student-page'])) {
FlowRouter.go(currentRoute.path);
} else {
redirect('dashboard');
}
}]
});
Примеры маршрутов, к которым привязаны группы Этот пример маршрута предназначен только для администраторов школы.
schooladmin.route('/students', {
name: 'students', action(){
BlazeLayout.render('formrender', {formrend: 'student'});
}
});
этот маршрут предназначен для доступа студента
students.route('/student/dashboard', {
name: 'students-dashboard', action(){
BlazeLayout.render('studentlayout', {studentrender: 'studentdashboard'});
}
});