私は1). loggedin user group routes 2.) admin routes, 3.) student routes, 4.) public routes
のような経路を保護しようとしています。 LoggedInUser
は期待通りに機能しますが、他の2つのルート - schooladmin
とstudents
は必要に応じて機能しません。管理者または学生としてログインしたら、それぞれのユーザーは許可されたURLにアクセスできるはずですが、例として、学校管理者の管理者がhttp://localhost/studentsに行くと自動的にダッシュボードにリダイレクトされ、同様に学生のために。私は何をすべきか?ありがとう。FlowRouterはデフォルトでリンク先ページにリダイレクトされます
このルートグループでは、ログインしているユーザーのみが許可されます。
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 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');
}
}]
});
サンプルルートのルートである学校の管理者のためのルートグループ
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');
}
}]
});
ですアクセスするには
schooladmin.route('/students', {
name: 'students', action(){
BlazeLayout.render('formrender', {formrend: 'student'});
}
});
このルートは
students.route('/student/dashboard', {
name: 'students-dashboard', action(){
BlazeLayout.render('studentlayout', {studentrender: 'studentdashboard'});
}
});