no message

This commit is contained in:
2018-03-04 18:49:00 -05:00
parent 27162fa220
commit c131f42632
3 changed files with 119 additions and 63 deletions

View File

@@ -151,6 +151,42 @@ module.exports = {
}); });
}, },
deleteMessage: (e, profileId, messageId) => {
const promise = new Promise((resolve, reject) => {
ProfileModel.findById(prodileId, (err, profile) => {
if (err) {
reject(err);
}
if (result) {
let message = profile.messages.id(messageId);
if (message) {
message.remove();
profile.save((err, result) => {
if (err) {
reject(err);
}
if (result) {
resolve(result);
}
});
} else {
reject('The specified message does not exist');
}
}
});
});
promise.then((result) => {
e.emit('deleteMessage', null, result);
})
.catch((err) => {
e.emit('deleteMessage', err, null);
});
},
find: (e, find) => { find: (e, find) => {
const promise = new Promise((resolve, reject) => { const promise = new Promise((resolve, reject) => {
var query = ProfileModel var query = ProfileModel
@@ -232,7 +268,11 @@ module.exports = {
update: (e, id, profile) => { update: (e, id, profile) => {
const promise = new Promise((resolve, reject) => { const promise = new Promise((resolve, reject) => {
ProfileModel.findByIdAndUpdate(id, { $set: profile }, { new: true }, (err, result) => { ProfileModel.findOneAndUpdate(
{ _id: profileId },
{ $set: profile },
{ new: true },
(err, result) => {
if (err) { if (err) {
reject(err); reject(err);
} }
@@ -251,5 +291,28 @@ module.exports = {
}); });
}, },
updateMessage: (e, profileId, messageId, data) => {} updateMessage: (e, profileId, messageId, data) => {
const promise = new Promise((resolve, reject) => {
ProfileModel.findOneAndUpdate(
{ _id: profileId, 'messages._id': messageId },
{ $set: { 'messages.$': data } },
{ new: true },
(err, result) => {
if (err) {
reject(err);
}
if (result) {
resolve(result);
}
});
});
promise.then((result) => {
e.emit('updateMessage', null, result);
})
.catch((err) => {
e.emit('updateMessage', err, null);
});
}
}; };

View File

@@ -26,10 +26,6 @@ function createAnonymousToken (e) {
}); });
} }
function createHmac (e, options) {
}
function createAuthenticatedToken (e, user, event = 'token:create') { function createAuthenticatedToken (e, user, event = 'token:create') {
Token.create({ user: user.userName, permission: user.permission._id, uid: user.uid }, (err, token) => { Token.create({ user: user.userName, permission: user.permission._id, uid: user.uid }, (err, token) => {
if (err) { if (err) {
@@ -92,21 +88,7 @@ function validateToken (e, token, callback) {
} }
} }
function verifyTokenAndUserThen (token, minimumPermission, callback) { function verifyTokenThen (token, action, callback, log = false) {
validateToken(null, token, (err, decoded) => {
if (err) {
callback(err, null);
}
if (decoded && decoded.valid && decoded.data.permission >= minimumPermission) {
callback(null, decoded);
} else {
callback('User role does not have permission', null);
}
});
}
function verifyTokenAndRoleThen (token, action, callback, log = false) {
logger.debug('verifyTokenAndRoleThen', { token: token, action: action }); logger.debug('verifyTokenAndRoleThen', { token: token, action: action });
validateToken(null, token, (err, decoded) => { validateToken(null, token, (err, decoded) => {
logger.debug('verifyTokenAndRoleThen::validateToken', { err: err, decoded: decoded.data }); logger.debug('verifyTokenAndRoleThen::validateToken', { err: err, decoded: decoded.data });
@@ -141,6 +123,5 @@ module.exports = {
create: createAuthenticatedToken, create: createAuthenticatedToken,
refresh: refreshToken, refresh: refreshToken,
validate: validateToken, validate: validateToken,
verifyRoleThen: verifyTokenAndRoleThen, verifyThen: verifyTokenThen
verifyThen: verifyTokenAndRoleThen
}; };

View File

@@ -68,11 +68,11 @@ function update (req, res, next) {
} }
function updateMessage (req, res, next) { function updateMessage (req, res, next) {
Token.verifyThen(req.get('authorization'), 'edit', (err, decoded) => { // Token.verifyThen(req.get('authorization'), 'edit', (err, decoded) => {
if (err) { // if (err) {
res.status(403).json({ message: 'User not authorized to perform this action.', err: err }); // res.status(403).json({ message: 'User not authorized to perform this action.', err: err });
return; // return;
} // }
var ProfileEvents = new EventEmitter(); var ProfileEvents = new EventEmitter();
var profileId = req.params.profileId; var profileId = req.params.profileId;
@@ -95,34 +95,8 @@ function updateMessage (req, res, next) {
}); });
Profiles.updateMessage(ProfileEvents, profileId, messageId, data); Profiles.updateMessage(ProfileEvents, profileId, messageId, data);
});
}
Router.route('/')
.post((req, res) => {
// Token.verifyThen(req.get('authorization'), 'add', (err, decoded) => {
// if (err) {
// res.status(403).json({ message: 'User not authorized to perform this action.', err: err });
// return;
// }
var ProfileEvents = new EventEmitter();
var profile = Array.isArray(req.body) ? req.body : [ req.body ];
var multi = profile.length > 1;
ProfileEvents.once('create', (err, result) => {
if (err) {
res.status(500).json({ message: 'Could not create profile' + (multi ? 's' : ''), err: err, profile: profile });
}
if (result) {
res.status(200).json(result);
}
});
Profiles.create(ProfileEvents, profile);
// }); // });
}); }
Router.route('/find' + ParamStr) Router.route('/find' + ParamStr)
.get((req, res) => { .get((req, res) => {
@@ -182,7 +156,21 @@ Router.route('/list' + ParamStr)
Router.route('/:profileId?/messages/:messageId?') Router.route('/:profileId?/messages/:messageId?')
.delete((req, res) => { .delete((req, res) => {
var ProfileEvents = new EventEmitter();
var profileId = req.params.profileId || null;
var messageId = req.params.messageId || null;
ProfileEvents.once('deleteMessage', (err, result) => {
if (err) {
res.status(500).json({ message: 'Could not delete message id: ' + messageId + ' [' + err + ']', err: err });
}
if (result) {
res.status(200).json(result);
}
});
Profiles.deleteMessage(ProfileEvents, profileId, messageId);
}) })
.get((req, res) => { .get((req, res) => {
var ProfileEvents = new EventEmitter(); var ProfileEvents = new EventEmitter();
@@ -254,6 +242,30 @@ Router.route('/:id?')
// }); // });
}) })
.patch( update ) .patch( update )
.post((req, res) => {
// Token.verifyThen(req.get('authorization'), 'add', (err, decoded) => {
// if (err) {
// res.status(403).json({ message: 'User not authorized to perform this action.', err: err });
// return;
// }
var ProfileEvents = new EventEmitter();
var profile = Array.isArray(req.body) ? req.body : [ req.body ];
var multi = profile.length > 1;
ProfileEvents.once('create', (err, result) => {
if (err) {
res.status(500).json({ message: 'Could not create profile' + (multi ? 's' : ''), err: err, profile: profile });
}
if (result) {
res.status(200).json(result);
}
});
Profiles.create(ProfileEvents, profile);
// });
})
.put( update ); .put( update );
module.exports = Router; module.exports = Router;