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 플래그 변경됩니다. 현재 정적이며 새로 고침이 필요합니다.
null 확인을 위해 upvoted! – zim