Système d'interdiction avec les comptes Meteor?

Je travaille sur une application de chat avec un météore qui utilise accounts-ui et accounts-twitter. Je veux pouvoir interdire aux gens s'ils abusent du site mais je ne suis pas sûr de savoir comment le faire ou si cela est possible. Y a-t-il un moyen de faire cela? Voici le code que j'utilise pour exécuter la partie de l'application de chat:

Ui.js:

// render all of our messages in the ui Template.chatBox.helpers({ "messages": function() { return chatCollection.find(); } }); // get the value for handlerbar helper user Template.chatMessage.helpers({ "user": function() { if(this.userId == 'me') { return this.userId; } else if(this.userId) { getUsername(this.userId); return Session.get('user-' + this.userId); } else { return 'anonymous-' + this.subscriptionId; } } }); // when Send Chat clicked at the message to the collection Template.chatBox.events({ "click #send": function() { if (Meteor.user() == null) { alert("You must login to post"); return; } $('#messages').animate({"scrollTop": $('#messages')[0].scrollHeight}, "fast"); var message = $('#chat-message').val(); // check to see if the message has any characters in it if (message.length < 1) { alert("You must enter a message to post."); return; } if (message.length > 200) { alert("Your message is too long... they can't read that fast!"); return; } chatCollection.insert({ userId: 'me', message: message }); $('#chat-message').val(''); //Validation var bot =Check_bots(); if(bot==false) { //add the message to the stream chatStream.emit('chat', message); } else { alert("Slow down! No need to post that fast."); return false; } }, "keypress #chat-message": function(e) { if (Meteor.user() == null) { alert("You must login to post"); return; } if (e.which == 13) { //Validation var bot =Check_bots(); if(bot==false) { $('#messages').animate({"scrollTop": $('#messages')[0].scrollHeight}, "fast"); console.log("you pressed enter"); e.preventDefault(); //repeat function from #send click event here var message = $('#chat-message').val(); // check to see if the message has any characters in it if (message.length < 1) { alert("You must enter a message to post."); return; } if (message.length > 200) { alert("Your message is too long... they can't read that fast!"); return; } chatCollection.insert({ userId: 'me', message: message }); $('#chat-message').val(''); //add the message to the stream chatStream.emit('chat', message); } else { alert("Slow down! No need to post that fast."); return false; } } } }); chatStream.on('chat', function(message) { chatCollection.insert({ userId: this.userId, subscriptionId: this.subscriptionId, message: message }); }); var lastintime=0; var defference=0; var msg_count=0; function Check_bots() { var seconds = new Date().getTime() / 1000; seconds=parseInt(seconds); if(lastintime < seconds) { defference = seconds -lastintime; lastintime=seconds; if(defference<=5 && msg_count>=3) { return true; } else { return false; } } } 

Users.js:

 Accounts.ui.config({ passwordSignupFields: "USERNAME_ONLY" }); getUsername = function(id) { Meteor.subscribe('user-info', id); Deps.autorun(function() { var user = Meteor.users.findOne(id); if(user) { Session.set('user-' + id, user.username); } }); } 

Quelqu'un sait-il une façon de faire cela?

Vous pouvez utiliser Accounts.validateLoginAttempt

Code côté serveur

 Accounts.validateLoginAttempt(function(info) { var user = info.user; if(user.isBanned) throw new Meteor.Error(403, 'You are banned'); }); 

Avec le code ci-dessus: Si vous avez ajouté isBanned: true à tout utilisateur dans votre base de données MongoDB, cet utilisateur ne pourra pas vous connecter.