diff --git a/webclient/components/matrix/matrix-service.js b/webclient/components/matrix/matrix-service.js index 2ae55bea9f..869c1f731d 100644 --- a/webclient/components/matrix/matrix-service.js +++ b/webclient/components/matrix/matrix-service.js @@ -165,6 +165,17 @@ angular.module('matrixService', []) // TODO: Use PUT with transaction IDs return doRequest("POST", path, undefined, data); }, + + // Bans a user from from a room + ban: function(room_id, user_id, reason) { + var path = "/rooms/$room_id/ban/"; + path = path.replace("$room_id", encodeURIComponent(room_id)); + + return doRequest("PUT", path, undefined, { + user_id: user_id, + reason: reason + }); + }, // Retrieves the room ID corresponding to a room alias resolveRoomAlias:function(room_alias) { @@ -408,7 +419,8 @@ angular.module('matrixService', []) state: presence }); }, - + + /****** Permanent storage of user information ******/ // Returns the current config diff --git a/webclient/room/room-controller.js b/webclient/room/room-controller.js index da2a9b0e77..fcd24c2749 100644 --- a/webclient/room/room-controller.js +++ b/webclient/room/room-controller.js @@ -269,6 +269,22 @@ angular.module('RoomController', ['ngSanitize', 'mFileInput']) promise = matrixService.setDisplayName(args[1]); } break; + + case "/ban": + // Ban the user id from the room + if (2 <= args.length) { + + // TODO: The user may have entered the display name + // Need display name -> user_id resolution. Pb: how to manage user with same display names? + var user_id = args[1]; + + // Does the user provide a reason? + if (3 <= args.length) { + var reason = args.slice(2).join(' '); + } + promise = matrixService.ban($scope.room_id, user_id, reason); + } + break; } } else {