2016-03-03 28 views
0

我在我的網站上有一個界面,用戶可以爲另一個用戶創建一個「無人認領」的訂單並向他們發送邀請。邀請鏈接將被格式化爲/enrollment/orders/:_id,其中_id是訂單的ID。重定向用戶,如果他們在發佈前沒有設置密碼

一個問題是,這可以發送多次。第一次,被邀請的用戶可能沒有設置密碼。

Meteor.publish('enrolled_order', function (token) { 
    // if user has their password reset, token will also be set for user's account 
    return Orders.find({ 
    'enrollment.token': token 
    }); 
}); 

這裏的漁獲:本出版物中,我要檢查用戶記錄的某些方面,採取不同的行動,而不是發佈它。爲了安全起見,我相信這需要在服務器上完成才能正常工作。

  • 如果沒有this.userId,我想將它們發送到login
  • 如果用戶沒有設置密碼,我想將它們重定向到重置密碼頁面。

這是可能通過流星刊物嗎?

回答

0

我認爲你需要在路由器中這樣做。如果您使用路由器鐵,你可以使用onBeforeAction檢查用戶是否登錄:

Router.route('/enrollment/orders/:_id', { 
    subscriptions: function() { 
    return Meteor.subscribe('enrolled_order', this.params._id); 
    }, 
    onBeforeAction: function() { 
    if(! Meteor.userId()) { 
     Router.go('loginTemplateName'); 
    } 
    } 
}); 

你不會想直接返回哈希密碼給客戶,所以也許設置變量說密碼是否存在可能是最好的方法?

我不記得onBeforeAction是否發生在waitOn之前,但是您可能能夠用waitOn而不是訂閱逃脫。

+0

不幸的是,這意味着它將被髮布到客戶端 – corvid

+0

嗯如果你設置了一箇中間頁面,只檢查用戶的狀態並適當地重定向,該怎麼辦?然後你可以重定向到登錄/等。或您訂閱的頁面? –

相關問題