mirror of
https://github.com/taobataoma/meanTorrent.git
synced 2026-03-12 07:00:29 +01:00
Merge commit '84ec1c80d283cbea8b186629e7b1de49d91cf9ba'
* commit '84ec1c80d283cbea8b186629e7b1de49d91cf9ba': fix(heroku): fix invalid app.json (#1901) feat(deps): dependencies upgrade (#1887) release(0.6.0): MEAN.JS 0.6.0 (#1863) feat(readme): Deploy to Heroku button (#1854) fix(users): Spacing Issues Abstracted OAuth routes to use req param to identify strategy & moved scope to actual strategy definition. Save profile images to Amazon S3 (#1857) fix(build): Require correct dependencies for prod build (#1855) fix(eslint): Make `space-before-function-paren` rule consistent with other rules (#1858) fix(gulpfile): show error on uglify (#1860) feat(core): Add manifest.json (#1851) # Conflicts: # CHANGELOG.md # README.md # modules/core/client/views/header.client.view.html # modules/users/client/views/settings/change-profile-picture.client.view.html # modules/users/server/controllers/users/users.profile.server.controller.js # package.json
This commit is contained in:
@@ -9,6 +9,9 @@ var _ = require('lodash'),
|
||||
errorHandler = require(path.resolve('./modules/core/server/controllers/errors.server.controller')),
|
||||
mongoose = require('mongoose'),
|
||||
multer = require('multer'),
|
||||
multerS3 = require('multer-s3'),
|
||||
aws = require('aws-sdk'),
|
||||
amazonS3URI = require('amazon-s3-uri'),
|
||||
config = require(path.resolve('./config/config')),
|
||||
User = mongoose.model('User'),
|
||||
validator = require('validator');
|
||||
@@ -16,6 +19,18 @@ var _ = require('lodash'),
|
||||
var whitelistedFields = ['firstName', 'lastName', 'email', 'username'];
|
||||
var mtDebug = require(path.resolve('./config/lib/debug'));
|
||||
|
||||
var useS3Storage = config.uploads.storage === 's3' && config.aws.s3;
|
||||
var s3;
|
||||
|
||||
if (useS3Storage) {
|
||||
aws.config.update({
|
||||
accessKeyId: config.aws.s3.accessKeyId,
|
||||
secretAccessKey: config.aws.s3.secretAccessKey
|
||||
});
|
||||
|
||||
s3 = new aws.S3();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update user details
|
||||
*/
|
||||
@@ -58,10 +73,24 @@ exports.update = function (req, res) {
|
||||
exports.changeProfilePicture = function (req, res) {
|
||||
var user = req.user;
|
||||
var existingImageUrl;
|
||||
var multerConfig;
|
||||
|
||||
|
||||
if (useS3Storage) {
|
||||
multerConfig = {
|
||||
storage: multerS3({
|
||||
s3: s3,
|
||||
bucket: config.aws.s3.bucket,
|
||||
acl: 'public-read'
|
||||
})
|
||||
};
|
||||
} else {
|
||||
multerConfig = config.uploads.profile.image;
|
||||
}
|
||||
|
||||
// Filtering to upload only images
|
||||
var multerConfig = config.uploads.profile.image;
|
||||
multerConfig.fileFilter = require(path.resolve('./config/lib/multer')).imageFileFilter;
|
||||
|
||||
var upload = multer(multerConfig).single('newProfilePicture');
|
||||
|
||||
if (user) {
|
||||
@@ -96,7 +125,7 @@ exports.changeProfilePicture = function (req, res) {
|
||||
|
||||
function updateUser() {
|
||||
return new Promise(function (resolve, reject) {
|
||||
user.profileImageURL = config.uploads.profile.image.dest + req.file.filename;
|
||||
user.profileImageURL = config.uploads.storage === 's3' && config.aws.s3 ? req.file.location : '/' + req.file.path;
|
||||
user.save(function (err, theuser) {
|
||||
if (err) {
|
||||
reject(err);
|
||||
@@ -110,24 +139,47 @@ exports.changeProfilePicture = function (req, res) {
|
||||
function deleteOldImage() {
|
||||
return new Promise(function (resolve, reject) {
|
||||
if (existingImageUrl !== User.schema.path('profileImageURL').defaultValue) {
|
||||
fs.unlink(existingImageUrl, function (unlinkError) {
|
||||
if (unlinkError) {
|
||||
if (useS3Storage) {
|
||||
try {
|
||||
var { region, bucket, key } = amazonS3URI(existingImageUrl);
|
||||
var params = {
|
||||
Bucket: config.aws.s3.bucket,
|
||||
Key: key
|
||||
};
|
||||
|
||||
// If file didn't exist, no need to reject promise
|
||||
if (unlinkError.code === 'ENOENT') {
|
||||
mtDebug.debugRed('Removing profile image failed because file did not exist.');
|
||||
return resolve();
|
||||
}
|
||||
s3.deleteObject(params, function (err) {
|
||||
if (err) {
|
||||
console.log('Error occurred while deleting old profile picture.');
|
||||
console.log('Check if you have sufficient permissions : ' + err);
|
||||
}
|
||||
|
||||
console.error(unlinkError);
|
||||
|
||||
reject({
|
||||
message: 'Error occurred while deleting old profile picture'
|
||||
resolve();
|
||||
});
|
||||
} else {
|
||||
resolve();
|
||||
} catch (err) {
|
||||
console.warn('${existingImageUrl} is not a valid S3 uri');
|
||||
|
||||
return resolve();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
fs.unlink(path.resolve('.' + existingImageUrl), function (unlinkError) {
|
||||
if (unlinkError) {
|
||||
|
||||
// If file didn't exist, no need to reject promise
|
||||
if (unlinkError.code === 'ENOENT') {
|
||||
console.log('Removing profile image failed because file did not exist.');
|
||||
return resolve();
|
||||
}
|
||||
|
||||
console.error(unlinkError);
|
||||
|
||||
reject({
|
||||
message: 'Error occurred while deleting old profile picture'
|
||||
});
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
}
|
||||
} else {
|
||||
resolve();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user