summary refs log tree commit diff
path: root/webclient/room/room-controller.js
diff options
context:
space:
mode:
authorEmmanuel ROHEE <erohee@amdocs.com>2014-09-05 17:23:41 +0200
committerEmmanuel ROHEE <erohee@amdocs.com>2014-09-05 17:23:41 +0200
commitcf4c17deaf7110f52a22456fa3cb63a80825de14 (patch)
treee71a91c51be4930ce1e6f0cb9e046b4a9035a6cc /webclient/room/room-controller.js
parentBF: Make /unban work again (diff)
downloadsynapse-cf4c17deaf7110f52a22456fa3cb63a80825de14.tar.xz
Added sanity checks in commands
Diffstat (limited to 'webclient/room/room-controller.js')
-rw-r--r--webclient/room/room-controller.js89
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;