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/startup/migrations/v019.js

61 lines
1.4 KiB

RocketChat.Migrations.add({
version: 19,
up() {
/*
* Migrate existing admin users to Role based admin functionality
* 'admin' role applies to global scope
*/
const admins = Meteor.users.find({
admin: true
}, {
fields: {
_id: 1,
username: 1
}
}).fetch();
admins.forEach((admin) => {
RocketChat.authz.addUserRoles(admin._id, ['admin']);
});
Meteor.users.update({}, {
$unset: {
admin: ''
}
}, {
multi: true
});
let usernames = _.pluck(admins, 'username').join(', ');
console.log((`Migrate ${ usernames } from admin field to 'admin' role`).green);
// Add 'user' role to all users
const users = Meteor.users.find().fetch();
users.forEach((user) => {
RocketChat.authz.addUserRoles(user._id, ['user']);
});
usernames = _.pluck(users, 'username').join(', ');
console.log((`Add ${ usernames } to 'user' role`).green);
// Add 'moderator' role to channel/group creators
const rooms = RocketChat.models.Rooms.findByTypes(['c', 'p']).fetch();
return rooms.forEach((room) => {
const creator = room && room.u && room.u._id;
if (creator) {
if (Meteor.users.findOne({
_id: creator
})) {
return RocketChat.authz.addUserRoles(creator, ['moderator'], room._id);
} else {
RocketChat.models.Subscriptions.removeByRoomId(room._id);
RocketChat.models.Messages.removeByRoomId(room._id);
return RocketChat.models.Rooms.removeById(room._id);
}
}
});
}
});