       .then -> Promise.resolve()
 
   # @private
-  roomCreate : (roomName, whitelistOnly) ->
-    unless @enableRoomsManagement
+  roomCreate : (roomName, whitelistOnly, {bypassPermissions}) ->
+    if not @enableRoomsManagement and not bypassPermissions
       error = new ChatServiceError 'notAllowed'
       return Promise.reject error
     checkNameSymbols roomName

    @getMode @userName

  # @private
  directMessage : (recipientName, msg, params) ->
    id = params.id || null
    unless @enableDirectMessages
      error = new ChatServiceError 'notAllowed'
      return Promise.reject error

    .then -> Promise.resolve()

  # @private
  roomSetWhitelistMode : (roomName, mode, {bypassPermissions}) ->
    @state.getRoom roomName
    .then (room) =>
      room.changeMode @userName, mode, bypassPermissions
    .spread (userNames, mode) =>
      if @enableAccessListsUpdates
        @transport.sendToChannel roomName, 'roomModeChanged', roomName, mode
      @removeRoomUsers roomName, userNames

  # @private
  systemMessage : (data, {id}) ->
    @transport.sendToOthers id, @echoChannel, 'systemMessage', data


