Skip to content
Snippets Groups Projects
Commit d0735ac9 authored by Rodrigo Nascimento's avatar Rodrigo Nascimento
Browse files

Uploads: Migrate old avatars

parent b29b03d9
No related branches found
No related tags found
No related merge requests found
import fs from 'fs';
import path from 'path';
RocketChat.Migrations.add({ RocketChat.Migrations.add({
version: 96, version: 96,
up() { up() {
...@@ -59,5 +62,62 @@ RocketChat.Migrations.add({ ...@@ -59,5 +62,62 @@ RocketChat.Migrations.add({
}, { }, {
multi: true multi: true
}); });
const avatarOrigins = [
'upload',
'gravatar',
'facebook',
'twitter',
'github',
'google',
'url',
'gitlab',
'linkedin'
];
const avatarsFileStore = FileUpload.getStore('Avatars');
const oldAvatarGridFS = new RocketChatFile.GridFS({
name: 'avatars'
});
RocketChat.models.Users.find({avatarOrigin: {$in: avatarOrigins}}, {avatarOrigin: 1, username: 1}).forEach((user) => {
const id = `${ user.username }.jpg`;
const gridFSAvatar = oldAvatarGridFS.getFileWithReadStream(id);
if (gridFSAvatar) {
const details = {
userId: user._id,
type: gridFSAvatar.contentType,
size: gridFSAvatar.length
};
avatarsFileStore.insert(details, gridFSAvatar.readStream, () => {
oldAvatarGridFS.deleteFile(id);
});
} else {
const avatarsPath = RocketChat.settings.get('Accounts_AvatarStorePath');
if (avatarsPath && avatarsPath.trim()) {
const filePath = path.join(avatarsPath, id);
const stat = fs.statSync(filePath);
if (stat && stat.isFile()) {
const rs = fs.createReadStream(filePath);
const details = {
userId: user._id,
type: 'image/jpeg',
size: stat.size
};
avatarsFileStore.insert(details, rs, () => {
fs.unlinkSync(filePath);
});
}
}
}
});
RocketChat.models.Settings.remove({_id: 'Accounts_AvatarStoreType'});
RocketChat.models.Settings.remove({_id: 'Accounts_AvatarStorePath'});
} }
}); });
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment