2017-05-15 2 views
0

하나 이상의 브라우저를 열어 로그인 한 사용자를 차단하려고합니다. 위의 코드를 참조Meteor.user 필드를 활성화하는 방법

{ 
    "_id" : "uSS2RqZnnFwui67wk", 
    "createdAt" : ISODate("2017-05-15T07:28:10.546Z"), 
    "services" : { 
     "password" : { 
      "bcrypt" : "$2a$10$DPgA59Gmob4ajzjYZyh5auoHRUyQuF1/7M0KaWz.nzW0mIEqzlDK6" 
     }, 
     "resume" : { 
      "loginTokens" : [ 
       { 
        "when" : ISODate("2017-05-15T13:42:29.322Z"), 
        "hashedToken" : "tkoQnweSQhgRKGzaJTAkUU3/Ljd3p4wrBJfrRvRRlcY=" 
       } 
      ] 
     } 
    }, 
    "username" : "johndoe", 
    "emails" : [ 
     { 
      "address" : "[email protected]", 
      "verified" : false 
     } 
    ], 
    "profile" : { 
     "name" : "John Doe", 
     "mobile" : "9637637941", 
     "email" : "[email protected]", 
     "address" : "kfasd, asdas,d as dsad", 
     "gender" : "M", 
     "state" : "Uttar Pradesh", 
     "customerType" : "CLIENT", 
     "isBlocked" : true 
    }, 
    "status" : { 
     "online" : true, 
     "lastLogin" : { 
      "date" : ISODate("2017-05-15T14:12:02.094Z"), 
      "ipAddr" : "127.0.0.1", 
      "userAgent" : "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0" 
     }, 
     "idle" : false 
    } 
} 

, 나는 user.profile.isBlocked* 상태에 따라 UI를 업데이트하려고 :

나는 최대 사용자가 로그인 할 때 다음과 같이 Meteor.user() 객체가 채워 있습니다.

UI.html은 다음과 같습니다 :

<template name="App_watch"> 
    {{#if isBlocked}} 
     User Has been Blocked. 
    {{else}} 
     User has Access. 
    {{/if}} 
</template> 

UI.js

은 다음과 같습니다 : 코드에서

import { Meteor } from 'meteor/meteor'; 
import './UI.html'; 

Template.App_watch.helpers({ 
    isBlocked() { 
    user = Meteor.users.find({_id: Meteor.userId}); 
    return user.profile.isBlocked; 
    } 
}); 

이상이 있는지 여부를 단순히 모니터링하고 아래로 1 개의 브라우저가 동일한 로그인으로 열려 있습니다. 그렇다면 사용자를 차단하고, 그렇지 않으면 사용자 차단을 해제하십시오.

import './fixtures.js'; 
import './register-api.js'; 

UserStatus.events.on("connectionLogin", function(fields) { 
    var count = UserStatus.connections.find({userId : fields.userId}).count(); 
    if(count > 1) { //Block 
    Meteor.users.update({_id: Meteor.userId()}, {$set: {"profile.isBlocked": true}}); 
    } else { // Unblock 
    Meteor.users.update({_id: Meteor.userId()}, {$set: {"profile.isBlocked": false}}); 
    } 
}); 

문제 설명 :

이 나는대로 isBlocked 변수 반응을 할 때 사용자의 isBlocked 플래그 변경됩니다. 현재 정적이며 새로 고침이 필요합니다.

답변

3

시도 :

Template.App_watch.helpers({ 
    isBlocked() { 
    return Meteor.user() && Meteor.user().profile && Meteor.user().profile.isBlocked; 
    } 
}); 

당신이 후자의 반환 등 .findOne() 대신 .find() 커서를 사용할 필요가 하나의 객체를 찾고 있다면. 또한 Meteor.userId() 아니요 Meteor.userId

+1

null 확인을 위해 upvoted! – zim