diff --git a/server/models/User.js b/server/models/User.js index a2f29488f..94b0affce 100644 --- a/server/models/User.js +++ b/server/models/User.js @@ -1,6 +1,7 @@ // @flow import crypto from 'crypto'; import bcrypt from 'bcrypt'; +import uuid from 'uuid'; import { DataTypes, sequelize, encryptedFields } from '../sequelize'; import { uploadToS3FromUrl } from '../utils/s3'; @@ -71,7 +72,7 @@ User.prototype.verifyPassword = function(password) { User.prototype.updateAvatar = async function() { this.avatarUrl = await uploadToS3FromUrl( this.slackData.image_192, - `avatars/${this.id}` + `avatars/${this.id}/${uuid.v4()}` ); }; diff --git a/server/utils/s3.js b/server/utils/s3.js index ba27134d2..14072b5a5 100644 --- a/server/utils/s3.js +++ b/server/utils/s3.js @@ -4,6 +4,7 @@ import moment from 'moment'; import AWS from 'aws-sdk'; import invariant from 'invariant'; import fetch from 'isomorphic-fetch'; +import bugsnag from 'bugsnag'; AWS.config.update({ accessKeyId: process.env.AWS_ACCESS_KEY_ID, @@ -32,7 +33,7 @@ const makePolicy = () => { }; const signPolicy = (policy: any) => { - invariant(AWS_SECRET_ACCESS_KEY); + invariant(AWS_SECRET_ACCESS_KEY, 'AWS_SECRET_ACCESS_KEY not set'); const signature = crypto .createHmac('sha1', AWS_SECRET_ACCESS_KEY) .update(policy) @@ -43,7 +44,7 @@ const signPolicy = (policy: any) => { const uploadToS3FromUrl = async (url: string, key: string) => { const s3 = new AWS.S3(); - invariant(AWS_S3_UPLOAD_BUCKET_NAME); + invariant(AWS_S3_UPLOAD_BUCKET_NAME, 'AWS_S3_UPLOAD_BUCKET_NAME not set'); try { // $FlowIssue dunno it's fine @@ -59,8 +60,8 @@ const uploadToS3FromUrl = async (url: string, key: string) => { }) .promise(); return `https://s3.amazonaws.com/${AWS_S3_UPLOAD_BUCKET_NAME}/${key}`; - } catch (_e) { - return undefined; + } catch (e) { + bugsnag.notify(e); } };