diff options
author | Emmanuel ROHEE <erohee@amdocs.com> | 2014-09-05 17:23:41 +0200 |
---|---|---|
committer | Emmanuel ROHEE <erohee@amdocs.com> | 2014-09-05 17:23:41 +0200 |
commit | cf4c17deaf7110f52a22456fa3cb63a80825de14 (patch) | |
tree | e71a91c51be4930ce1e6f0cb9e046b4a9035a6cc /webclient/room/room-controller.js | |
parent | BF: Make /unban work again (diff) | |
download | synapse-cf4c17deaf7110f52a22456fa3cb63a80825de14.tar.xz |
Added sanity checks in commands
Diffstat (limited to 'webclient/room/room-controller.js')
-rw-r--r-- | webclient/room/room-controller.js | 89 |
1 files changed, 55 insertions, 34 deletions
diff --git a/webclient/room/room-controller.js b/webclient/room/room-controller.js index 5a2f06d8ee..39f8635d76 100644 --- a/webclient/room/room-controller.js +++ b/webclient/room/room-controller.js @@ -313,32 +313,44 @@ angular.module('RoomController', ['ngSanitize', 'matrixFilter', 'mFileInput']) case "/nick": // Change user display name - promise = matrixService.setDisplayName(args); + if (args) { + promise = matrixService.setDisplayName(args); + } + else { + $scope.feedback = "Usage: /nick <display_name>"; + } break; case "/kick": - var matches = args.match(/^(\S+?)( +(.*))?$/); - if (matches.length === 2) { - promise = matrixService.setMembership($scope.room_id, matches[1], "leave"); - } - else if (matches.length === 4) { - promise = matrixService.setMembershipObject($scope.room_id, matches[1], { - membership: "leave", - reason: matches[3] // TODO: we need to specify resaon in the spec - }); + // Kick a user from the room with an optional reason + if (args) { + var matches = args.match(/^(\S+?)( +(.*))?$/); + if (matches.length === 2) { + promise = matrixService.setMembership($scope.room_id, matches[1], "leave"); + } + else if (matches.length === 4) { + promise = matrixService.setMembershipObject($scope.room_id, matches[1], { + membership: "leave", + reason: matches[3] // TODO: we need to specify resaon in the spec + }); + } } - else { + + if (!promise) { $scope.feedback = "Usage: /kick <userId> [<reason>]"; } break; case "/ban": - // Ban a user from the room with optional reason - var matches = args.match(/^(\S+?)( +(.*))?$/); - if (matches) { - promise = matrixService.ban($scope.room_id, matches[1], matches[3]); + // Ban a user from the room with an optional reason + if (args) { + var matches = args.match(/^(\S+?)( +(.*))?$/); + if (matches) { + promise = matrixService.ban($scope.room_id, matches[1], matches[3]); + } } - else { + + if (!promise) { $scope.feedback = "Usage: /ban <userId> [<reason>]"; } break; @@ -348,29 +360,35 @@ angular.module('RoomController', ['ngSanitize', 'matrixFilter', 'mFileInput']) // FIXME: this feels horribly asymmetrical - why are we banning via RPC // and unbanning by editing the membership list? // Why can't we specify a reason? - var matches = args.match(/^(\S+)$/); - if (matches) { - // Reset the user membership to "leave" to unban him - promise = matrixService.setMembership($scope.room_id, matches[1], "leave"); + if (args) { + var matches = args.match(/^(\S+)$/); + if (matches) { + // Reset the user membership to "leave" to unban him + promise = matrixService.setMembership($scope.room_id, matches[1], "leave"); + } } - else { + + if (!promise) { $scope.feedback = "Usage: /unban <userId>"; } break; case "/op": // Define the power level of a user - var matches = args.match(/^(\S+?)( +(\d+))?$/); - var powerLevel = 50; // default power level for op - if (matches) { - var user_id = matches[1]; - if (matches.length === 4) { - powerLevel = parseInt(matches[3]); - } - if (powerLevel !== NaN) { - promise = matrixService.setUserPowerLevel($scope.room_id, user_id, powerLevel); + if (args) { + var matches = args.match(/^(\S+?)( +(\d+))?$/); + var powerLevel = 50; // default power level for op + if (matches) { + var user_id = matches[1]; + if (matches.length === 4) { + powerLevel = parseInt(matches[3]); + } + if (powerLevel !== NaN) { + promise = matrixService.setUserPowerLevel($scope.room_id, user_id, powerLevel); + } } } + if (!promise) { $scope.feedback = "Usage: /op <userId> [<power level>]"; } @@ -378,11 +396,14 @@ angular.module('RoomController', ['ngSanitize', 'matrixFilter', 'mFileInput']) case "/deop": // Reset the power level of a user - var matches = args.match(/^(\S+)$/); - if (matches) { - promise = matrixService.setUserPowerLevel($scope.room_id, args, undefined); + if (args) { + var matches = args.match(/^(\S+)$/); + if (matches) { + promise = matrixService.setUserPowerLevel($scope.room_id, args, undefined); + } } - else { + + if (!promise) { $scope.feedback = "Usage: /deop <userId>"; } break; |