diff --git a/README.md b/README.md index e38e7d2..3410a78 100755 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# BRAID v1.0.8 +# BRAID v1.2 > Websocket server for the Measure platform [![Build Status](https://semaphoreci.com/api/v1/projects/7767f0f3-4da6-4c84-9167-4db5402a3262/2573412/badge.svg)](https://semaphoreci.com/yardstick/braid) @@ -47,10 +47,10 @@ braid: hmac_secret = "test" payload = { :data => { - :client => 'client name (mhs is only one implemented currently)', - :client_type => 'site (only one in use rite now)', + :channel_type => 'public/private/custom', + :client_type => 'public/private/custom', :user_id => (yardstick user id), - :user_type => '(teacher/user)', + :user_roles => and array with any combination of broadcaster/receiver/super, :channel => 'desired channel name' }, :sub => 'Braid JWT', diff --git a/package-lock.json b/package-lock.json index 08f0605..ad74586 100755 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "braid", - "version": "1.0.0", + "version": "1.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index bc125f4..a79810b 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "braid", - "version": "1.0.0", + "version": "1.2", "description": "", "main": "index.js", "scripts": { diff --git a/src/channels/types/privateChannel.ts b/src/channels/types/privateChannel.ts index 20ba6d7..0215b24 100644 --- a/src/channels/types/privateChannel.ts +++ b/src/channels/types/privateChannel.ts @@ -6,7 +6,7 @@ var logger = require('../../logger'); class PrivateChannel extends ChannelBase { broadcastMessage(from: PrivateClient, message: any) { for (let client of this.clients) { - if (client != from && client.data.user_type != from.data.user_type) { + if (client != from && client.roles.includes('receiver') && from.roles.includes('broadcaster')) { console.log('sending message: ' + JSON.stringify(message)) client.ws.send(JSON.stringify(message)); logger.accessLog.info(`sent to ${client.id}`, { data: { message: message }}); diff --git a/src/clients/clientBase.ts b/src/clients/clientBase.ts index 0ea6c8f..e0e1ad5 100644 --- a/src/clients/clientBase.ts +++ b/src/clients/clientBase.ts @@ -14,6 +14,7 @@ class ClientBase { channel: ChannelBase|Private|null; clientManager: ClientManager; channelManager: ChannelManager; + roles: Array; constructor(data: any, ws: WebSocket, channelManager: ChannelManager, clientManager: ClientManager) { this.ws = ws; @@ -22,6 +23,7 @@ class ClientBase { this.channel = null; this.clientManager = clientManager; this.channelManager = channelManager; + this.roles = ['receiver'] } getData() { diff --git a/src/clients/types/privateClient.ts b/src/clients/types/privateClient.ts index a57b3f3..78d43fe 100644 --- a/src/clients/types/privateClient.ts +++ b/src/clients/types/privateClient.ts @@ -3,11 +3,13 @@ import ClientBase from '../clientBase'; import ClientManager from '../../clientManager'; import ChannelManager from '../../channelManager'; -var logger = require('../logger'); +var logger = require('../../logger'); class PrivateClient extends ClientBase { + constructor(data: any, ws: WebSocket, channelManager: ChannelManager, clientManager: ClientManager) { super(data, ws, channelManager, clientManager); + this.roles = data.user_roles logger.accessLog.info('Private Client Created', {data: data}); } }; diff --git a/src/config/app.ts b/src/config/app.ts index f2887a5..1e0abc6 100644 --- a/src/config/app.ts +++ b/src/config/app.ts @@ -1,5 +1,5 @@ module.exports = { - version : '1.0.8', + version : '1.2', whitelist : (process.env.WHITELIST || "http://admin.localhost").split(','), secret : process.env.SECRET || "test", devToken: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjp7ImNsaWVudCI6InRlc3QiLCJjbGllbnRfdHlwZSI6InNpdGUiLCJ1c2VyX3R5cGUiOiJ1c2VyIiwidXNlcl9pZCI6MjAwLCJjaGFubmVsIjoidGVzdF9jaGFubmVsIn0sImF1ZCI6ImludGVybmFsIiwiaXNzIjoiWWFyZHN0aWNrIFNvZnR3YXJlIiwic3ViIjoiQnJhaWQgSldUIn0.5KNCov_EW1cycT4Ay0oSvk4Z4PHFedd3bWOyqkHHTBQ', diff --git a/src/messageManager.ts b/src/messageManager.ts index ee6cc20..906c7d6 100644 --- a/src/messageManager.ts +++ b/src/messageManager.ts @@ -5,20 +5,11 @@ var app = require('./config/app'); let schema = { message_type: Joi.string().valid(app.messageTypes).insensitive().required(), - current_index: Joi.number().integer(), - total_questions: Joi.number().integer(), - total_questions_answered: Joi.number().integer(), - time_elapsed: Joi.number(), - time_left: Joi.any(), - status: Joi.string(), channel: Joi.string(), channel_type: Joi.string(), client_type: Joi.string(), user_id: Joi.number().integer(), - user_exam_id: Joi.number().integer(), - user_name: Joi.string(), - exam_title: Joi.string(), - message: Joi.string(), + message: Joi.alternatives().try(Joi.string(), Joi.object()), }; module.exports = {