Add permission for sending extra video, fixes #280
parent
08e2c425c6
commit
28bad32f69
|
|
@ -165,6 +165,7 @@ const TopBar = (props) =>
|
||||||
toggleToolArea,
|
toggleToolArea,
|
||||||
openUsersTab,
|
openUsersTab,
|
||||||
unread,
|
unread,
|
||||||
|
canProduceExtraVideo,
|
||||||
canLock,
|
canLock,
|
||||||
canPromote,
|
canPromote,
|
||||||
classes
|
classes
|
||||||
|
|
@ -414,6 +415,7 @@ const TopBar = (props) =>
|
||||||
>
|
>
|
||||||
<MenuItem
|
<MenuItem
|
||||||
dense
|
dense
|
||||||
|
disabled={!canProduceExtraVideo}
|
||||||
onClick={() =>
|
onClick={() =>
|
||||||
{
|
{
|
||||||
handleMoreActionsClose();
|
handleMoreActionsClose();
|
||||||
|
|
@ -435,28 +437,29 @@ const TopBar = (props) =>
|
||||||
|
|
||||||
TopBar.propTypes =
|
TopBar.propTypes =
|
||||||
{
|
{
|
||||||
roomClient : PropTypes.object.isRequired,
|
roomClient : PropTypes.object.isRequired,
|
||||||
room : appPropTypes.Room.isRequired,
|
room : appPropTypes.Room.isRequired,
|
||||||
peersLength : PropTypes.number,
|
peersLength : PropTypes.number,
|
||||||
lobbyPeers : PropTypes.array,
|
lobbyPeers : PropTypes.array,
|
||||||
permanentTopBar : PropTypes.bool,
|
permanentTopBar : PropTypes.bool,
|
||||||
myPicture : PropTypes.string,
|
myPicture : PropTypes.string,
|
||||||
loggedIn : PropTypes.bool.isRequired,
|
loggedIn : PropTypes.bool.isRequired,
|
||||||
loginEnabled : PropTypes.bool.isRequired,
|
loginEnabled : PropTypes.bool.isRequired,
|
||||||
fullscreenEnabled : PropTypes.bool,
|
fullscreenEnabled : PropTypes.bool,
|
||||||
fullscreen : PropTypes.bool,
|
fullscreen : PropTypes.bool,
|
||||||
onFullscreen : PropTypes.func.isRequired,
|
onFullscreen : PropTypes.func.isRequired,
|
||||||
setToolbarsVisible : PropTypes.func.isRequired,
|
setToolbarsVisible : PropTypes.func.isRequired,
|
||||||
setSettingsOpen : PropTypes.func.isRequired,
|
setSettingsOpen : PropTypes.func.isRequired,
|
||||||
setExtraVideoOpen : PropTypes.func.isRequired,
|
setExtraVideoOpen : PropTypes.func.isRequired,
|
||||||
setLockDialogOpen : PropTypes.func.isRequired,
|
setLockDialogOpen : PropTypes.func.isRequired,
|
||||||
toggleToolArea : PropTypes.func.isRequired,
|
toggleToolArea : PropTypes.func.isRequired,
|
||||||
openUsersTab : PropTypes.func.isRequired,
|
openUsersTab : PropTypes.func.isRequired,
|
||||||
unread : PropTypes.number.isRequired,
|
unread : PropTypes.number.isRequired,
|
||||||
canLock : PropTypes.bool.isRequired,
|
canProduceExtraVideo : PropTypes.bool.isRequired,
|
||||||
canPromote : PropTypes.bool.isRequired,
|
canLock : PropTypes.bool.isRequired,
|
||||||
classes : PropTypes.object.isRequired,
|
canPromote : PropTypes.bool.isRequired,
|
||||||
theme : PropTypes.object.isRequired
|
classes : PropTypes.object.isRequired,
|
||||||
|
theme : PropTypes.object.isRequired
|
||||||
};
|
};
|
||||||
|
|
||||||
const mapStateToProps = (state) =>
|
const mapStateToProps = (state) =>
|
||||||
|
|
@ -470,6 +473,9 @@ const mapStateToProps = (state) =>
|
||||||
myPicture : state.me.picture,
|
myPicture : state.me.picture,
|
||||||
unread : state.toolarea.unreadMessages +
|
unread : state.toolarea.unreadMessages +
|
||||||
state.toolarea.unreadFiles + raisedHandsSelector(state),
|
state.toolarea.unreadFiles + raisedHandsSelector(state),
|
||||||
|
canProduceExtraVideo :
|
||||||
|
state.me.roles.some((role) =>
|
||||||
|
state.room.permissionsFromRoles.EXTRA_VIDEO.includes(role)),
|
||||||
canLock :
|
canLock :
|
||||||
state.me.roles.some((role) =>
|
state.me.roles.some((role) =>
|
||||||
state.room.permissionsFromRoles.CHANGE_ROOM_LOCK.includes(role)),
|
state.room.permissionsFromRoles.CHANGE_ROOM_LOCK.includes(role)),
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@ const initialState =
|
||||||
SEND_CHAT : [],
|
SEND_CHAT : [],
|
||||||
MODERATE_CHAT : [],
|
MODERATE_CHAT : [],
|
||||||
SHARE_SCREEN : [],
|
SHARE_SCREEN : [],
|
||||||
|
EXTRA_VIDEO : [],
|
||||||
SHARE_FILE : [],
|
SHARE_FILE : [],
|
||||||
MODERATE_FILES : [],
|
MODERATE_FILES : [],
|
||||||
MODERATE_ROOM : []
|
MODERATE_ROOM : []
|
||||||
|
|
|
||||||
|
|
@ -235,6 +235,8 @@ module.exports =
|
||||||
MODERATE_CHAT : [ userRoles.MODERATOR ],
|
MODERATE_CHAT : [ userRoles.MODERATOR ],
|
||||||
// The role(s) have permission to share screen
|
// The role(s) have permission to share screen
|
||||||
SHARE_SCREEN : [ userRoles.NORMAL ],
|
SHARE_SCREEN : [ userRoles.NORMAL ],
|
||||||
|
// The role(s) have permission to produce extra video
|
||||||
|
EXTRA_VIDEO : [ userRoles.NORMAL ],
|
||||||
// The role(s) have permission to share files
|
// The role(s) have permission to share files
|
||||||
SHARE_FILE : [ userRoles.NORMAL ],
|
SHARE_FILE : [ userRoles.NORMAL ],
|
||||||
// The role(s) have permission to moderate files
|
// The role(s) have permission to moderate files
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ const permissionsFromRoles =
|
||||||
SEND_CHAT : [ userRoles.NORMAL ],
|
SEND_CHAT : [ userRoles.NORMAL ],
|
||||||
MODERATE_CHAT : [ userRoles.MODERATOR ],
|
MODERATE_CHAT : [ userRoles.MODERATOR ],
|
||||||
SHARE_SCREEN : [ userRoles.NORMAL ],
|
SHARE_SCREEN : [ userRoles.NORMAL ],
|
||||||
|
EXTRA_VIDEO : [ userRoles.NORMAL ],
|
||||||
SHARE_FILE : [ userRoles.NORMAL ],
|
SHARE_FILE : [ userRoles.NORMAL ],
|
||||||
MODERATE_FILES : [ userRoles.MODERATOR ],
|
MODERATE_FILES : [ userRoles.MODERATOR ],
|
||||||
MODERATE_ROOM : [ userRoles.MODERATOR ],
|
MODERATE_ROOM : [ userRoles.MODERATOR ],
|
||||||
|
|
@ -747,6 +748,13 @@ class Room extends EventEmitter
|
||||||
)
|
)
|
||||||
throw new Error('peer not authorized');
|
throw new Error('peer not authorized');
|
||||||
|
|
||||||
|
if (
|
||||||
|
appData.source === 'extravideo' &&
|
||||||
|
!peer.roles.some(
|
||||||
|
(role) => permissionsFromRoles.EXTRA_VIDEO.includes(role))
|
||||||
|
)
|
||||||
|
throw new Error('peer not authorized');
|
||||||
|
|
||||||
// Ensure the Peer is joined.
|
// Ensure the Peer is joined.
|
||||||
if (!peer.joined)
|
if (!peer.joined)
|
||||||
throw new Error('Peer not yet joined');
|
throw new Error('Peer not yet joined');
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue