Fixed perms for schedule/channel playlists
This commit is contained in:
parent
8c990c14e6
commit
e61d9deb52
|
|
@ -66,7 +66,7 @@ module.exports = class{
|
||||||
chanDB = await channelModel.findOne({name: this.channel.name});
|
chanDB = await channelModel.findOne({name: this.channel.name});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(await chanDB.permCheck(socket.user, 'editChannelPlaylists')){
|
||||||
//If the title is too long
|
//If the title is too long
|
||||||
if(!validator.isLength(data.playlist, {max:30})){
|
if(!validator.isLength(data.playlist, {max:30})){
|
||||||
//Bitch, moan, complain...
|
//Bitch, moan, complain...
|
||||||
|
|
@ -109,6 +109,7 @@ module.exports = class{
|
||||||
|
|
||||||
//Return playlists from channel doc
|
//Return playlists from channel doc
|
||||||
socket.emit('chanPlaylists', chanDB.getPlaylists());
|
socket.emit('chanPlaylists', chanDB.getPlaylists());
|
||||||
|
}
|
||||||
}catch(err){
|
}catch(err){
|
||||||
return loggerUtils.socketExceptionHandler(socket, err);
|
return loggerUtils.socketExceptionHandler(socket, err);
|
||||||
}
|
}
|
||||||
|
|
@ -122,11 +123,13 @@ module.exports = class{
|
||||||
chanDB = await channelModel.findOne({name: this.channel.name});
|
chanDB = await channelModel.findOne({name: this.channel.name});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(await chanDB.permCheck(socket.user, 'editChannelPlaylists')){
|
||||||
//Delete playlist name
|
//Delete playlist name
|
||||||
await chanDB.deletePlaylistByName(data.playlist);
|
await chanDB.deletePlaylistByName(data.playlist);
|
||||||
|
|
||||||
//Return playlists from channel doc
|
//Return playlists from channel doc
|
||||||
socket.emit('chanPlaylists', chanDB.getPlaylists());
|
socket.emit('chanPlaylists', chanDB.getPlaylists());
|
||||||
|
}
|
||||||
}catch(err){
|
}catch(err){
|
||||||
return loggerUtils.socketExceptionHandler(socket, err);
|
return loggerUtils.socketExceptionHandler(socket, err);
|
||||||
}
|
}
|
||||||
|
|
@ -140,6 +143,7 @@ module.exports = class{
|
||||||
chanDB = await channelModel.findOne({name: this.channel.name});
|
chanDB = await channelModel.findOne({name: this.channel.name});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(await chanDB.permCheck(socket.user, 'editChannelPlaylists')){
|
||||||
let url = data.url
|
let url = data.url
|
||||||
|
|
||||||
//If we where given a bad URL
|
//If we where given a bad URL
|
||||||
|
|
@ -172,6 +176,7 @@ module.exports = class{
|
||||||
|
|
||||||
//Return playlists from channel doc
|
//Return playlists from channel doc
|
||||||
socket.emit('chanPlaylists', chanDB.getPlaylists());
|
socket.emit('chanPlaylists', chanDB.getPlaylists());
|
||||||
|
}
|
||||||
}catch(err){
|
}catch(err){
|
||||||
return loggerUtils.socketExceptionHandler(socket, err);
|
return loggerUtils.socketExceptionHandler(socket, err);
|
||||||
}
|
}
|
||||||
|
|
@ -185,6 +190,8 @@ module.exports = class{
|
||||||
chanDB = await channelModel.findOne({name: this.channel.name});
|
chanDB = await channelModel.findOne({name: this.channel.name});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Permcheck to make sure the user can fuck w/ the queue
|
||||||
|
if((!this.channel.queue.locked && await chanDB.permCheck(socket.user, 'scheduleMedia')) || await chanDB.permCheck(socket.user, 'scheduleAdmin')){
|
||||||
//Pull a valid start time from input, or make one up if we can't
|
//Pull a valid start time from input, or make one up if we can't
|
||||||
let start = this.channel.queue.getStart(data.start);
|
let start = this.channel.queue.getStart(data.start);
|
||||||
|
|
||||||
|
|
@ -208,6 +215,7 @@ module.exports = class{
|
||||||
|
|
||||||
//Convert array of standard media objects to queued media objects, and push to schedule
|
//Convert array of standard media objects to queued media objects, and push to schedule
|
||||||
this.channel.queue.scheduleMedia(queuedMedia.fromMediaArray(mediaList, start), socket, chanDB);
|
this.channel.queue.scheduleMedia(queuedMedia.fromMediaArray(mediaList, start), socket, chanDB);
|
||||||
|
}
|
||||||
}catch(err){
|
}catch(err){
|
||||||
return loggerUtils.socketExceptionHandler(socket, err);
|
return loggerUtils.socketExceptionHandler(socket, err);
|
||||||
}
|
}
|
||||||
|
|
@ -221,6 +229,7 @@ module.exports = class{
|
||||||
chanDB = await channelModel.findOne({name: this.channel.name});
|
chanDB = await channelModel.findOne({name: this.channel.name});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(await chanDB.permCheck(socket.user, 'editChannelPlaylists')){
|
||||||
//If the title is too long
|
//If the title is too long
|
||||||
if(!validator.isLength(data.name, {max:30})){
|
if(!validator.isLength(data.name, {max:30})){
|
||||||
//Bitch, moan, complain...
|
//Bitch, moan, complain...
|
||||||
|
|
@ -251,6 +260,7 @@ module.exports = class{
|
||||||
|
|
||||||
//Return playlists from channel doc
|
//Return playlists from channel doc
|
||||||
socket.emit('chanPlaylists', chanDB.getPlaylists());
|
socket.emit('chanPlaylists', chanDB.getPlaylists());
|
||||||
|
}
|
||||||
}catch(err){
|
}catch(err){
|
||||||
return loggerUtils.socketExceptionHandler(socket, err);
|
return loggerUtils.socketExceptionHandler(socket, err);
|
||||||
}
|
}
|
||||||
|
|
@ -264,6 +274,7 @@ module.exports = class{
|
||||||
chanDB = await channelModel.findOne({name: this.channel.name});
|
chanDB = await channelModel.findOne({name: this.channel.name});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(await chanDB.permCheck(socket.user, 'editChannelPlaylists')){
|
||||||
//Find playlist
|
//Find playlist
|
||||||
let playlist = chanDB.getPlaylistByName(data.playlist);
|
let playlist = chanDB.getPlaylistByName(data.playlist);
|
||||||
|
|
||||||
|
|
@ -287,6 +298,7 @@ module.exports = class{
|
||||||
|
|
||||||
//Return playlists from channel doc
|
//Return playlists from channel doc
|
||||||
socket.emit('chanPlaylists', chanDB.getPlaylists());
|
socket.emit('chanPlaylists', chanDB.getPlaylists());
|
||||||
|
}
|
||||||
}catch(err){
|
}catch(err){
|
||||||
return loggerUtils.socketExceptionHandler(socket, err);
|
return loggerUtils.socketExceptionHandler(socket, err);
|
||||||
}
|
}
|
||||||
|
|
@ -300,6 +312,7 @@ module.exports = class{
|
||||||
chanDB = await channelModel.findOne({name: this.channel.name});
|
chanDB = await channelModel.findOne({name: this.channel.name});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(await chanDB.permCheck(socket.user, 'editChannelPlaylists')){
|
||||||
//If we don't have a valid UUID
|
//If we don't have a valid UUID
|
||||||
if(!validator.isUUID(data.uuid)){
|
if(!validator.isUUID(data.uuid)){
|
||||||
//Bitch, moan, complain...
|
//Bitch, moan, complain...
|
||||||
|
|
@ -313,6 +326,7 @@ module.exports = class{
|
||||||
|
|
||||||
//Return playlists from channel doc
|
//Return playlists from channel doc
|
||||||
socket.emit('chanPlaylists', chanDB.getPlaylists());
|
socket.emit('chanPlaylists', chanDB.getPlaylists());
|
||||||
|
}
|
||||||
}catch(err){
|
}catch(err){
|
||||||
return loggerUtils.socketExceptionHandler(socket, err);
|
return loggerUtils.socketExceptionHandler(socket, err);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ module.exports = class{
|
||||||
|
|
||||||
defineListeners(socket){
|
defineListeners(socket){
|
||||||
socket.on("queue", (data) => {this.queueURL(socket, data)});
|
socket.on("queue", (data) => {this.queueURL(socket, data)});
|
||||||
socket.on("stop", (data) => {this.stopMedia(socket)});
|
socket.on("stop", (data) => {this.stopMedia(socket)}); //needs perms
|
||||||
socket.on("delete", (data) => {this.deleteMedia(socket, data)});
|
socket.on("delete", (data) => {this.deleteMedia(socket, data)});
|
||||||
socket.on("clear", (data) => {this.deleteRange(socket, data)});
|
socket.on("clear", (data) => {this.deleteRange(socket, data)});
|
||||||
socket.on("move", (data) => {this.moveMedia(socket, data)});
|
socket.on("move", (data) => {this.moveMedia(socket, data)});
|
||||||
|
|
@ -121,7 +121,14 @@ module.exports = class{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stopMedia(socket){
|
async stopMedia(socket){
|
||||||
|
//Get the current channel from the database
|
||||||
|
const chanDB = await channelModel.findOne({name: socket.chan});
|
||||||
|
|
||||||
|
console.log(!this.locked && await chanDB.permCheck(socket.user, 'scheduleMedia')) || await chanDB.permCheck(socket.user, 'scheduleAdmin');
|
||||||
|
//Permcheck to make sure the user can fuck w/ the queue
|
||||||
|
if((!this.locked && await chanDB.permCheck(socket.user, 'scheduleMedia')) || await chanDB.permCheck(socket.user, 'scheduleAdmin')){
|
||||||
|
|
||||||
//If we're not currently playing anything
|
//If we're not currently playing anything
|
||||||
if(this.nowPlaying == null){
|
if(this.nowPlaying == null){
|
||||||
//If an originating socket was provided for this request
|
//If an originating socket was provided for this request
|
||||||
|
|
@ -143,6 +150,7 @@ module.exports = class{
|
||||||
//End the media
|
//End the media
|
||||||
this.end();
|
this.end();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async deleteMedia(socket, data){
|
async deleteMedia(socket, data){
|
||||||
//Get the current channel from the database
|
//Get the current channel from the database
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,12 @@ const channelPermissionSchema = new mongoose.Schema({
|
||||||
default: "admin",
|
default: "admin",
|
||||||
required: true
|
required: true
|
||||||
},
|
},
|
||||||
|
editChannelPlaylists:{
|
||||||
|
type: mongoose.SchemaTypes.String,
|
||||||
|
enum: rankEnum,
|
||||||
|
default: "admin",
|
||||||
|
required: true
|
||||||
|
},
|
||||||
deleteChannel: {
|
deleteChannel: {
|
||||||
type: mongoose.SchemaTypes.String,
|
type: mongoose.SchemaTypes.String,
|
||||||
enum: rankEnum,
|
enum: rankEnum,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue