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 {
|