2016-04-29 6 views
1

私は、ユーザーに管理者としての役割がある場合、特定のルートグループのすべてのrouteEnterをチェックするために、flowRouterをalanning:rolesパッケージとともに使用しています。アラニング機能を備えたフロールータ: 'userIsInRole'メソッドの遅延

let adminRoutes = FlowRouter.group({ 
    name: "adminRoutes", 
    triggersEnter: [checkAdmin] 
}); 

checkAdmin =() => { 
console.log(Roles.userIsInRole(Meteor.userId(), 'admin')); // false 
if (! Roles.userIsInRole(Meteor.userId(), 'admin')) { 
    console.log(Roles.userIsInRole(Meteor.userId(), 'admin')); //false 
    FlowRouter.redirect('/notFound'); 
} 

}

私が管理者としてログインすると、コンソールログが最初にfalseになり、notFoundページにリダイレクトされます。私がバックボタンを押すと、役割が初期化され、実際に管理領域が表示されるようです。

管理者ロールの初期化でこの遅延を避けるにはどうすればよいですか?

ありがとうございました!

マフ

答えて

1

ユーザオブジェクトを使用すると、すぐにそれをチェックする場合は、すべてのユーザーのプロパティにアクセスすることはできませんので、完全にロードされるように、いくつかのサイクルを必要とします。ユーザーオブジェクトがロードされるのを待つ間にスピナーを表示するのが最善です。本当に必要なキーだけを含むサブスクリプションを作成し、そのサブスクリプションの準備ができるまで待つことができます。

+0

ありがとうございます - 私は私の問題は私がテンプレートレイヤーにアクセス許可のチェックを入れなければならないと思うし、routes.jsでチェックしようとしました。[リンク](https://github.com/kadirahq/) flow-router/issues/132) admin要素で別のテンプレートを作成し、checkAdminメソッドを提供してみます。 – Raggamuffin

関連する問題