let callbacks = []; let bannedCallbacks = []; export default { ready: false, authenticated: false, username: '', userId: '', role: 'default', banned: null, ban: {}, getStatus: function (cb) { if (this.ready) cb(this.authenticated, this.role, this.username, this.userId); else callbacks.push(cb); }, setBanned: function (ban) { let _this = this; _this.banned = true; _this.ban = ban; bannedCallbacks.forEach(callback => { callback(true, _this.ban); }); }, isBanned: function (cb) { if (this.ready) return cb(false); if (!this.ready && this.banned === true) return cb(true, this.ban); bannedCallbacks.push(cb); }, data: function (authenticated, role, username, userId) { this.authenticated = authenticated; this.role = role; this.username = username; this.userId = userId; this.ready = true; callbacks.forEach(callback => { callback(authenticated, role, username, userId); }); bannedCallbacks.forEach(callback => { callback(false); }); callbacks = []; } }