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/deleteUser.coffee

26 lines
962 B

Meteor.methods
deleteUser: (userId) ->
check userId, String
if not Meteor.userId()
throw new Meteor.Error 'error-invalid-user', "Invalid user", { method: 'deleteUser' }
user = RocketChat.models.Users.findOneById Meteor.userId()
unless RocketChat.authz.hasPermission(Meteor.userId(), 'delete-user') is true
throw new Meteor.Error 'error-not-allowed', "Not allowed", { method: 'deleteUser' }
user = RocketChat.models.Users.findOneById userId
unless user?
throw new Meteor.Error 'error-invalid-user', "Invalid user", { method: 'deleteUser' }
# prevent deleting last admin
adminCount = Meteor.users.find({ roles: { $in: ['admin'] } }).count()
userIsAdmin = user.roles.indexOf('admin') > -1
if adminCount is 1 and userIsAdmin
throw new Meteor.Error 'error-action-not-allowed', 'Leaving the app without admins is not allowed', { method: 'deleteUser', action: 'Remove_last_admin' }
RocketChat.deleteUser(userId)
return true