mirror of
https://github.com/lukevella/rallly.git
synced 2025-08-01 23:48:53 +02:00
Untracked Config File
This commit is contained in:
parent
c74b397836
commit
aaf75b4402
17 changed files with 234 additions and 147 deletions
|
@ -1,138 +1,170 @@
|
|||
var express = require('express');
|
||||
var Event = require('./event.model');
|
||||
var debug = require('debug')('eventapi');
|
||||
var debug = require('debug')('rallly');
|
||||
var communicator = require('../../communicator');
|
||||
|
||||
var getRandomString = function(){
|
||||
return require('crypto').randomBytes(16).toString('hex');
|
||||
}
|
||||
|
||||
exports.model = Event;
|
||||
|
||||
exports.verifyEmail = function(req, res, next){
|
||||
var id = req.params.id,
|
||||
code = req.params.code;
|
||||
Event.update({
|
||||
'_id' : id,
|
||||
'__private.verificationCode' : code
|
||||
}, {
|
||||
'creator.isVerified' : true ,
|
||||
'__private.verificationCode' : getRandomString()
|
||||
}, function(err, num){
|
||||
if (err) return handleError(res, err);
|
||||
if (num == 0) return res.status(498).end();
|
||||
next();
|
||||
});
|
||||
|
||||
Event
|
||||
.update({
|
||||
'_id' : id,
|
||||
'__private.verificationCode' : code
|
||||
}, {
|
||||
'creator.isVerified' : true ,
|
||||
'__private.verificationCode' : getRandomString()
|
||||
})
|
||||
.exec(function(err, num){
|
||||
if (err) return handleError(res, err);
|
||||
if (num == 0) return res.status(498).end();
|
||||
next();
|
||||
});
|
||||
}
|
||||
|
||||
exports.create = function(req, res, next){
|
||||
var event = req.body;
|
||||
|
||||
event.__private = {
|
||||
'verificationCode' : getRandomString(),
|
||||
'unsubscribeCode' : getRandomString(),
|
||||
'deleteCode' : getRandomString()
|
||||
}
|
||||
Event.create(req.body, function(err, event){
|
||||
if (err) return handleError(res, err);
|
||||
if (!event) return res.status(404);
|
||||
communicator.emit('event:create', event);
|
||||
req.event = event;
|
||||
next();
|
||||
});
|
||||
|
||||
return Event
|
||||
.create(req.body, function(err, event){
|
||||
if (err) return handleError(res, err);
|
||||
if (!event) return res.status(404);
|
||||
communicator.emit('event:create', event);
|
||||
req.event = event;
|
||||
next();
|
||||
});
|
||||
}
|
||||
|
||||
exports.show = function(req, res, next){
|
||||
Event.findById(req.params.id, function(err, event){
|
||||
if (err) return handleError(res, err);
|
||||
if (!event) return res.status(404).end();
|
||||
req.event = event;
|
||||
next();
|
||||
});
|
||||
Event
|
||||
.findById(req.params.id)
|
||||
.exec(function(err, event){
|
||||
if (err) return handleError(res, err);
|
||||
if (!event) return res.status(404).end();
|
||||
req.event = event;
|
||||
next();
|
||||
});
|
||||
}
|
||||
|
||||
exports.update = function(req, res){
|
||||
var updatedEvent = req.body;
|
||||
updatedEvent.updated = Date.now();
|
||||
Event.findById(req.params.id, function(err, event){
|
||||
if (err) return handleError(res, err);
|
||||
if (!event) return res.status(404).end();
|
||||
// If the creator's email has changed OR the notifications setting has changed - start a new email confirmation transaction
|
||||
if (event.creator.email != updatedEvent.creator.email ||
|
||||
(!event.creator.allowNotifications && updatedEvent.creator.allowNotifications)) {
|
||||
updatedEvent.creator.isVerified = false;
|
||||
updatedEvent.creator.allowNotifications = true;
|
||||
updatedEvent.__private = event.__private;
|
||||
communicator.emit('event:update:creator.email', updatedEvent, event);
|
||||
}
|
||||
Event.update({ '_id' : req.params.id }, updatedEvent, function(){
|
||||
communicator.emit('event:update', updatedEvent, event);
|
||||
return res.status(204).end();
|
||||
|
||||
Event
|
||||
.findById(req.params.id)
|
||||
.exec(function(err, event){
|
||||
if (err) return handleError(res, err);
|
||||
if (!event) return res.status(404).end();
|
||||
// If the creator's email has changed OR the notifications setting has changed - start a new email confirmation transaction
|
||||
if (event.creator.email != updatedEvent.creator.email ||
|
||||
(!event.creator.allowNotifications && updatedEvent.creator.allowNotifications)) {
|
||||
updatedEvent.creator.isVerified = false;
|
||||
updatedEvent.creator.allowNotifications = true;
|
||||
updatedEvent.__private = event.__private;
|
||||
communicator.emit('event:update:creator.email', updatedEvent, event);
|
||||
}
|
||||
|
||||
Event
|
||||
.update({ '_id' : req.params.id }, updatedEvent)
|
||||
.exec(function(){
|
||||
communicator.emit('event:update', updatedEvent, event);
|
||||
return res.status(204).end();
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
exports.delete = function(req, res, next){
|
||||
var eventId = req.params.id,
|
||||
code = req.params.code;
|
||||
|
||||
if (code){
|
||||
Event.update({
|
||||
'_id' : eventId,
|
||||
'__private.deleteCode' : code
|
||||
}, {
|
||||
'isDeleted' : true ,
|
||||
'__private.deleteCode' : getRandomString()
|
||||
}, function(err, num){
|
||||
if (err) return handleError(res, err);
|
||||
if (num == 0) return res.status(498).end();
|
||||
next();
|
||||
});
|
||||
|
||||
Event
|
||||
.update({
|
||||
'_id' : eventId,
|
||||
'__private.deleteCode' : code
|
||||
}, {
|
||||
'isDeleted' : true ,
|
||||
'__private.deleteCode' : getRandomString()
|
||||
})
|
||||
.exec(function(err, num){
|
||||
if (err) return handleError(res, err);
|
||||
if (num == 0) return res.status(498).end();
|
||||
next();
|
||||
});
|
||||
} else {
|
||||
Event.findById(eventId, function(err, event){
|
||||
if (err) return handleError(res, err);
|
||||
if (!event) return res.status(404).end();
|
||||
communicator.emit('event:delete', event);
|
||||
next();
|
||||
});
|
||||
|
||||
Event
|
||||
.findById(eventId)
|
||||
.exec(function(err, event){
|
||||
if (err) return handleError(res, err);
|
||||
if (!event) return res.status(404).end();
|
||||
communicator.emit('event:delete', event);
|
||||
next();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
exports.createComment = function(req, res, next){
|
||||
var eventId = req.params.id,
|
||||
comment = req.body;
|
||||
Event.findById(eventId, function(err, event){
|
||||
if (err) return handleError(res, err);
|
||||
event.comments.push(comment);
|
||||
event.save(function(err, event){
|
||||
if (err) return next(err);
|
||||
req.event = event;
|
||||
next();
|
||||
|
||||
Event
|
||||
.findById(eventId)
|
||||
.exec(function(err, event){
|
||||
if (err) return handleError(res, err);
|
||||
event.comments.push(comment);
|
||||
event.save(function(err, event){
|
||||
if (err) return next(err);
|
||||
req.event = event;
|
||||
next();
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
exports.deleteComment = function(req, res, next){
|
||||
var eventId = req.params.id,
|
||||
commentId = req.params.cid;
|
||||
Event.findById(eventId, function(err, event){
|
||||
if (err) return handleError(res, err);
|
||||
event.comments.pull({ '_id' : commentId });
|
||||
event.save(function(err, event){
|
||||
req.event = event;
|
||||
next();
|
||||
})
|
||||
});
|
||||
|
||||
Event
|
||||
.findById(eventId)
|
||||
.exec(function(err, event){
|
||||
if (err) return handleError(res, err);
|
||||
event.comments.pull({ '_id' : commentId });
|
||||
event.save(function(err, event){
|
||||
req.event = event;
|
||||
next();
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
exports.createParticipant = function(req, res, next){
|
||||
var eventId = req.params.id,
|
||||
participant = req.body;
|
||||
Event.findById(eventId, function(err, event){
|
||||
if (err) return handleError(res, err);
|
||||
event.updated = Date.now();
|
||||
event.participants.push(participant);
|
||||
event.save(function(err, event){
|
||||
if (err) return next(err);
|
||||
req.event = event;
|
||||
next();
|
||||
|
||||
Event
|
||||
.findById(eventId)
|
||||
.exec(function(err, event){
|
||||
if (err) return handleError(res, err);
|
||||
event.updated = Date.now();
|
||||
event.participants.push(participant);
|
||||
event.save(function(err, event){
|
||||
if (err) return next(err);
|
||||
req.event = event;
|
||||
next();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -140,35 +172,42 @@ exports.createParticipant = function(req, res, next){
|
|||
exports.updateParticipant = function(req, res, next){
|
||||
var eventId = req.params.id,
|
||||
participantId = req.params.pid;
|
||||
Event.update({
|
||||
'_id' : eventId,
|
||||
'participants._id': participantId
|
||||
}, {
|
||||
'$set': {
|
||||
'updated' : Date.now(),
|
||||
'participants.$' : req.body
|
||||
}
|
||||
}, function(err, num){
|
||||
if (err) return handleError(res, err);
|
||||
res.status(204).end();
|
||||
});
|
||||
|
||||
Event
|
||||
.update({
|
||||
'_id' : eventId,
|
||||
'participants._id': participantId
|
||||
}, {
|
||||
'$set': {
|
||||
'updated' : Date.now(),
|
||||
'participants.$' : req.body
|
||||
}
|
||||
})
|
||||
.exec(function(err, num){
|
||||
if (err) return handleError(res, err);
|
||||
res.status(204).end();
|
||||
});
|
||||
}
|
||||
|
||||
exports.deleteParticipant = function(req, res, next){
|
||||
var eventId = req.params.id,
|
||||
participantId = req.params.pid;
|
||||
Event.findById(eventId, function(err, event){
|
||||
if (err) return handleError(res, err);
|
||||
event.updated = Date.now();
|
||||
event.participants.pull({ '_id' : participantId });
|
||||
event.save(function(err, event){
|
||||
req.event = event;
|
||||
next();
|
||||
})
|
||||
});
|
||||
|
||||
Event
|
||||
.findById(eventId)
|
||||
.exec(function(err, event){
|
||||
if (err) return handleError(res, err);
|
||||
event.updated = Date.now();
|
||||
event.participants.pull({ '_id' : participantId });
|
||||
event.save(function(err, event){
|
||||
req.event = event;
|
||||
next();
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function handleError(res, err) {
|
||||
debug("ERROR: " + err);
|
||||
return res.status(500).send(err);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
var mongoose = require('mongoose');
|
||||
var Schema = mongoose.Schema;
|
||||
var debug = require('debug')('event.model');
|
||||
var debug = require('debug')('rallly');
|
||||
var ShortId = require('mongoose-shortid');
|
||||
|
||||
var EventSchema = new Schema({
|
||||
|
@ -72,7 +72,6 @@ model.schema
|
|||
.path('creator.email')
|
||||
.required('You need to type in your email')
|
||||
.validate(function(email) {
|
||||
debug("email: " + email);
|
||||
var emailRegex = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
|
||||
return emailRegex.test(email);
|
||||
}, 'You need to type in a valid email')
|
||||
|
@ -91,4 +90,5 @@ model.schema
|
|||
}
|
||||
return true;
|
||||
}, 'Participants must have a name')
|
||||
|
||||
module.exports = model
|
||||
|
|
|
@ -1,24 +1,10 @@
|
|||
var express = require('express');
|
||||
var router = express.Router();
|
||||
var controller = require('./event.controller');
|
||||
var debug = require('debug')('api/event/index');
|
||||
var debug = require('debug')('rallly');
|
||||
/* GET home page. */
|
||||
|
||||
router.post('/', controller.create);
|
||||
router.get('/:id', controller.show);
|
||||
router.put('/:id', controller.update);
|
||||
router.delete('/:id', controller.delete);
|
||||
router.delete('/:id/code/:code', controller.delete);
|
||||
router.get('/:id/code/:code', controller.verifyEmail);
|
||||
|
||||
router.post('/:id/comment', controller.createComment);
|
||||
router.delete('/:id/comment/:cid', controller.deleteComment);
|
||||
|
||||
router.post('/:id/participant', controller.createParticipant);
|
||||
router.delete('/:id/participant/:pid', controller.deleteParticipant);
|
||||
router.put('/:id/participant/:pid', controller.updateParticipant);
|
||||
|
||||
router.all('/*', function(req, res){
|
||||
var after = function(req, res) {
|
||||
if (req.event){
|
||||
var event = req.event.toObject();
|
||||
delete event['__private'];
|
||||
|
@ -26,6 +12,23 @@ router.all('/*', function(req, res){
|
|||
} else {
|
||||
res.status(204).end();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
router.post('/', controller.create, after);
|
||||
router.get('/:id', controller.show, after);
|
||||
router.put('/:id', controller.update, after);
|
||||
router.delete('/:id', controller.delete, after);
|
||||
router.delete('/:id/code/:code', controller.delete, after);
|
||||
router.get('/:id/code/:code', controller.verifyEmail, after);
|
||||
|
||||
router.post('/:id/comment', controller.createComment, after);
|
||||
router.delete('/:id/comment/:cid', controller.deleteComment, after);
|
||||
|
||||
router.post('/:id/participant', controller.createParticipant, after);
|
||||
router.delete('/:id/participant/:pid', controller.deleteParticipant, after);
|
||||
router.put('/:id/participant/:pid', controller.updateParticipant, after);
|
||||
|
||||
|
||||
|
||||
|
||||
module.exports = router;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue