summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2014-06-09 12:44:59 -0400
committerJules Laplace <jules@okfoc.us>2014-06-09 12:44:59 -0400
commitb1974b9c2fe6ee1f35b3e34895f134d906299cec (patch)
tree288f0cff83dc2e656fb8782d83addf49f68c42fb /server
parente5dc46846ce9fb1c990d291ef852c0cad3f74957 (diff)
save profile, update avatar
Diffstat (limited to 'server')
-rw-r--r--server/index.js5
-rw-r--r--server/lib/api.js41
-rw-r--r--server/lib/upload.js24
3 files changed, 49 insertions, 21 deletions
diff --git a/server/index.js b/server/index.js
index 3f9aad0..a1efaf2 100644
--- a/server/index.js
+++ b/server/index.js
@@ -11,6 +11,8 @@ var config = require('../config.json'),
var http = require('http'),
express = require('express'),
+ bodyParser = require('body-parser'),
+ multer = require('multer'),
MongoStore = require('connect-mongo')(express),
passport = require('passport'),
path = require('path'),
@@ -39,7 +41,8 @@ app.use(express.session({
cookie: { domain: '.' + config.hostName, maxAge: 43200000 },
store: SessionStore
}));
-app.use(express.bodyParser());
+app.use(bodyParser());
+app.use(multer());
app.use(express.query());
app.use(express.csrf());
app.use(express.methodOverride());
diff --git a/server/lib/api.js b/server/lib/api.js
index 85c5b85..cf2a911 100644
--- a/server/lib/api.js
+++ b/server/lib/api.js
@@ -6,6 +6,7 @@ var passport = require('passport'),
crypto = require('crypto'),
_ = require('lodash'),
util = require('./util'),
+ upload = require('./upload'),
config = require('../../config.json'),
User = require('./schemas/User');
@@ -21,9 +22,9 @@ var api = {
update: function(req, res){
var data = util.cleanQuery(req.body)
- if (data.new_password.length) {
- if (req.user.checkPassword(data.old_password)) {
- res.json({ error: { errors: { username: { message: "Old password is incorrect" } } } })
+ if (data.new_password && data.new_password.length) {
+ if (! data.old_password || ! req.user.checkPassword(data.old_password)) {
+ res.json({ error: { errors: { password: { message: "Old password is incorrect" } } } })
}
var shasum = crypto.createHash('sha1')
@@ -35,11 +36,35 @@ var api = {
delete data.old_password
delete data.new_password
delete data.isAdmin
- _.extend( req.user, data )
- req.user.save(function(err, msg) {
- err ? res.json({ status: "FAIL", error: err })
- : res.json({ status: "OK", payload: req.user })
- })
+
+ if (req.files.avatar) {
+ // handle the upload here
+ console.log("GOT SOME FILES")
+ upload.put("avatars", req.files.avatar, {
+ acceptable: function(){
+ console.log("acceptable")
+ },
+ unacceptable: function(err){
+ console.log("unacceptable")
+ res.json({ error: { errors: { avatar: { message: "Problem saving avatar: " + err } } } })
+ },
+ success: function(url){
+ data.photo = url
+ done()
+ }
+ })
+ }
+ else {
+ done()
+ }
+
+ function done () {
+ _.extend( req.user, data )
+ req.user.save(function(err, msg) {
+ err ? res.json({ status: "FAIL", error: err })
+ : res.json({ status: "OK", payload: req.user })
+ })
+ }
}
}
diff --git a/server/lib/upload.js b/server/lib/upload.js
index 5c130a2..4346a99 100644
--- a/server/lib/upload.js
+++ b/server/lib/upload.js
@@ -16,18 +16,18 @@ var acceptableuploadTypes = {
'image/png': 'png'
}
-module.exports.put = function (key, image, opt) {
- var imageSize, imageType, filename
+module.exports.put = function (key, file, opt) {
+ var fileSize, fileType, filename
var err
var now = new Date()
var ts = moment().format('YYYYMMDD')
- var extension = acceptableuploadTypes[image.type]
+ var extension = acceptableuploadTypes[file.mimetype]
filename = (+now) + "-"
- + image.name.replace(/\..*$/,"")
+ + file.originalname.replace(/\..*$/,"")
.replace(/[^0-9a-zA-Z]+/g,"-")
- .substr(-64)
+ .substr(-128)
+ "." + extension;
var remote_path = "/images/" + key + "/" + ts + "/" + filename
@@ -35,10 +35,10 @@ module.exports.put = function (key, image, opt) {
if (! extension) {
err = "unacceptable filetype"
}
- else if (image.size < 10) {
+ else if (file.size < 10) {
err = "file too small"
}
- else if (image.size > 2097152) { // 2mb limit
+ else if (file.size > 2097152) { // 2mb limit
err = "file too large"
}
@@ -51,9 +51,9 @@ module.exports.put = function (key, image, opt) {
opt.acceptable && opt.acceptable(err)
console.log("upload > ", remote_path)
- s3.putFile(image.path, remote_path, {
- 'Content-Length': image.size,
- 'Content-Type': image.type,
+ s3.putFile(file.path, remote_path, {
+ 'Content-Length': file.size,
+ 'Content-Type': file.mimetype,
'x-amz-acl': 'public-read'
}, function(err, s3res) {
if (err || s3res.statusCode !== 200) {
@@ -62,9 +62,9 @@ module.exports.put = function (key, image, opt) {
return;
}
- var image_url = s3res.url || s3res.req.url
+ var file_url = s3res.url || s3res.req.url
- opt.success && opt.success(image_url)
+ opt.success && opt.success(file_url)
}).on('error', function(err, s3res){
console.error(err)
s3res && s3res.resume && s3res.resume()