The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/server/methods/removeRoomOwner.coffee

34 lines
1.4 KiB

Meteor.methods
removeRoomOwner: (rid, userId) ->
check rid, String
check userId, String
unless Meteor.userId()
throw new Meteor.Error 'error-invalid-user', 'Invalid user', { method: 'removeRoomOwner' }
unless RocketChat.authz.hasPermission Meteor.userId(), 'set-owner', rid
throw new Meteor.Error 'error-not-allowed', 'Not allowed', { method: 'removeRoomOwner' }
subscription = RocketChat.models.Subscriptions.findOneByRoomIdAndUserId rid, userId
unless subscription?
throw new Meteor.Error 'error-invalid-room', 'Invalid room', { method: 'removeRoomOwner' }
numOwners = RocketChat.authz.getUsersInRole('owner', rid).count()
if numOwners is 1
throw new Meteor.Error 'error-remove-last-owner', 'This is the last owner. Please set a new owner before removing this one.', { method: 'removeRoomOwner' }
RocketChat.models.Subscriptions.removeRoleById(subscription._id, 'owner')
user = RocketChat.models.Users.findOneById userId
fromUser = RocketChat.models.Users.findOneById Meteor.userId()
RocketChat.models.Messages.createSubscriptionRoleRemovedWithRoomIdAndUser rid, user,
u:
_id: fromUser._id
username: fromUser.username
role: 'owner'
if RocketChat.settings.get('UI_DisplayRoles')
RocketChat.Notifications.notifyAll('roles-change', { type: 'removed', _id: 'owner', u: { _id: user._id, username: user.username }, scope: rid });
return true