Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // for now, we're mocking NewsletterSignup:
- function NewsletterSignup() {
- }
- NewsletterSignup.prototype.save = function(cb) {
- cb();
- };
- var VALID_EMAIL_REGEX = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/;
- app.post('/newsletter', function(req, res) {
- var name = req.body.name || '', email = req.body.email || '';
- // input validation
- if (!email.match(VALID_EMAIL_REGEX)) {
- if(req.xhr) return res.json({ error: 'Invalid email address. '});
- req.session.flash = {
- type: 'danger',
- intro: 'Validation error!',
- message: 'The email address you entered was not valid.'
- };
- return res.redirect(303, '/newsletter/archive');
- }
- new NewsletterSignup({ name: name, email: email }).save(function(err){
- if (err) {
- // couldn't save to database
- if(req.xhr) return res.json({ error: 'Database error.'});
- req.session.flash = {
- type: 'danger',
- intro: 'Database error!',
- message: 'There was a database error; please try again later.'
- };
- return res.redirect(303, '/newsletter/archive');
- }
- if(req.xhr) return res.json({ success: true });
- req.session.flash = {
- type: 'success',
- intro: 'Thank you!',
- message: 'You have now been signed up to the newsletter.'
- };
- return res.redirect(303, '/newsletter/archive');
- });
- });
- app.get('/newsletter/archive', function(req, res){
- res.render('newsletter/archive');
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement