Example #1
0
var validateAppForm = function() {
  return form(
    field("name").trim().required().isAlphanumeric(),
    field("description").trim().required(),
    field("url").trim().isUrl()
   )
};
Example #2
0
module.exports = function (app) {
	function save(req, res) {
		var payload = req.form,
			user = req.user;

		user.name(payload.name);
		user.email(payload.email);
		user.type(payload.type);

		app.models.user.save(user, function () {
			res.redirect('.');
		});
	}

	var router = express.Router();

	router
		.all('*', app.helpers.loggedIn('/auth/login'))
		.get('/', app.helpers.render('dashboard/main'))
		.get('/edit', app.helpers.render('dashboard/edit'))
		.post('/edit',
			form(
				field('name').trim().required(),
				field('email').trim().required(),
				field('type').trim().required()
			), save)
		.all('*', app.helpers.redirect('.'));

	app.use('/dashboard', router);
};
Example #3
0
function blogform(req, res, next) {
  return form(
      filter('title').trim(),
      filter('body').trim(),
      validate('title').required(),
      validate('body').required()
      )(req, res, next);
}
Example #4
0
function commentform(req, res, next) {
  return form(
      filter('name').trim(),
      filter('comment').trim(),
      validate('name').required(),
      validate('name').minLength(3),
      validate('comment').required()
      )(req, res, next);
}
Example #5
0
'use strict';

var form = require("express-form"),
      filter = form.filter,
      validate = form.validate;

exports.reg_form = form( // Form filter and validation middleware
      filter("email").trim(),
      validate("email").required("", "请输入您的邮箱").isEmail("邮箱地址不合法"),
      filter("password").trim(),
      validate("password").required("", "请输入您的密码"),
      filter("confirm").trim(),
      validate("confirm").required("", "请确认您的密码").equals("field::password", "两次输入的密码不一致"),
      filter("agree").trim(),
      validate("agree").required("", "请同意用户协议")
);

exports.init = function(req, res){
  if (req.isAuthenticated()) {
    res.redirect("/");
  }
  else {
    res.render('signup/index', {
      role: "login"
    });
  }
};

exports.signup = function(req, res){
  var loads = {role:"login"};
  var workflow = require("../../utils").workflow(req, res);
Example #6
0
///////////////////////////////////////////
// School domain creator form validatior //
///////////////////////////////////////////

'use strict';

var form  = require('express-form');
var field = form.field;

module.exports = form(
    field('domain')
        .trim()
        .required()
        .is(/^\b((?=[a-z0-9-]{1,63}\.)(xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,63}\b$/i)
);
Example #7
0
app.get('/list', function(req, res) {
	Course.listRandomCourses(null, function(err, randomCourses) {
		console.log(randomCourses);
	});
});


app.get('/test', function(req, res) {
	req.session.authenticatedUser = false;
	res.redirect('/');
});

// User Requests
app.get('/user/register', userRoutes.userRegistration); // Display registration form
app.post('/user/create', form( validate("fname", "First Name").required("First Name is Required"), validate("lname", "Last Name").required("Last Name is Required"), validate("email", "Email Address").required("Email is Required").isEmail(), validate("phone", "Phone Number").required().custom(function(value) { if(value.length != 10) {throw new Error("Phone number must be 10 digits with no special characters!")} }), validate("pass", "Password").required().custom(function(value) { if(value.length < 6 || value.length > 25) throw new Error("Password must be between 7 and 25 characters long!") }) ), userRoutes.createUser); // Process registration form

app.get('/user/login/:redirect?', userRoutes.userLogin);
app.post('/user/login/process', userRoutes.userProcessLogin);
app.get('/user/home', requireuserLogin, userRoutes.userHome);

// Course Endpoints
app.get('/courses', userRoutes.courseHome);
app.get('/courses/all', userRoutes.allCourses);
app.post('/course/search', userRoutes.courseSearch);
app.get('/course/search', function(req, res) {
	res.render('courseSearch', { title: 'Technology Grows Course Search', dataSet: {searchResults: null} });
});
app.get('/course/:id', userRoutes.getCourseInfo);
app.post('/course/register', userRoutes.registerStudent);
app.get('/enrollment_success', function(req, res) {
Example #8
0
module.exports = function(app, db) {

  // ## Forgot password form
  app.get('/forgot-password', function(req, res) {
    if(req.loggedIn) {
      return res.redirect('/login');
    } else {
      res.render('forgot-password', {
        title: "Forgot Password",
      });
    }
  });

  // ## Process recovery
  app.post('/forgot-password', form(
        filter("email").trim()
      , validate("email").required().isEmail()
    ),
    function(req, res) {
      if(!req.form.isValid) {
        res.redirect('/forgot-password');
      } else {
        // Check if account exists and dispatch /account-recovery/:hash link
        //  This hash link will allow user to change their password
        var Users = db.model('Users');
        Users.findOne(req.form, function(err, user) {
          if(err) {
            req.flash('error', 'An error occured, please try again');
            res.redirect('/forgot-password');
          }
          if(!user) {
            req.flash('error', 'No account exists with an email address of '
              + '<strong>'
              + req.form.email
              + '</strong>');
            res.redirect('/forgot-password');
          } else {
            // Store random string in user's table as user.random_string
            var randomString = require('../lib/random-string.js');
            user.random_string = randomString(16);
            user.save(function(err, user) {
              if(user) {
                // Send user an email to reset their password
                var nodemailer = require('nodemailer')
                  , emailSignature = require('../lib/email-signature')
                  , htmlMsg = ''
                      + '<p>' + user.name.first + ',</p>'
                      + '<p>You can reset your password by clicking the unique link below:</p>'
                      + '<p><a href="http://yourdomain.com/reset-password/' + user.random_string + '" target="_blank" title="Reset your password">'
                      + 'http://yourdomain.com/reset-password/' + user.random_string + '</a></p>'
                      + emailSignature("html")
                  , plainMsg = ''
                      + user.name.first + ',\n\n'
                      + 'You can reset your password by clicking the unique link below:\n\n'
                      + 'http://yourdomain.com/reset-password/' + user.random_string + '\n\n'
                      + emailSignature("text");
                nodemailer.SMTP = {
                    host: 'smtp.gmail.com'
                  , port: 465
                  , ssl: true
                  , use_authentication: true
                  , user: '******'
                  , pass: '******'
                };
                nodemailer.send_mail(
                  {
                      sender: '"Llamas" <*****@*****.**>'
                    , to: req.form.email
                    , subject: user.name.first + ', reset your password using this link'
                    , html: htmlMsg
                    , body: plainMsg
                  },
                  function(err, success) {
                    if(success) {
                      req.flash('success', ''
                        + 'An email has been sent to '
                        + '<strong>' + req.form.email + '</strong> '
                        + 'with a link to reset the account\'s password');
                    } else {
                      req.flash('error', 'An error occured, please try again');
                    }
                    res.redirect('/forgot-password');
                  }
                );
              } else {
                console.log(err);
                req.flash('error', 'An error occured, please try again');
              }
            });
          }
        });
      }
    }
  );

};
Example #9
0
File: login.js Project: crowi/crowi
'use strict'

var form = require('express-form')
var field = form.field

module.exports = form(
  field('loginForm.email').required(),
  field('loginForm.password')
    .required()
    .is(/^[\x20-\x7F]{6,}$/),
)
var form = require("express-form");
var field = form.field;

var login_form = form(
  field("email").trim().required().isEmail(),
  field("password").trim().required().regex(/^(?=.*[A-z])(?=.*[!@#$&*])(?=.*[0-9]).{8,}$/,
    "Passwords must be at least 8 characters, include a letter, a number and a special character")
);

module.exports = login_form;
Example #11
0
'use strict';

var form = require('express-form')
  , field = form.field;

module.exports = form(
  field('userForm.name').trim().required(),
  field('userForm.email').trim().isEmail().required()
);
Example #12
0
(function (module) {
	'use strict';

	var models = require('./atlas.models'),
		form = require('express-form'),
		filter = form.filter,
		validate = form.validate,
		User = models.User,
		passwordHash = require('password-hash');

	var API = {
		index: function (req, res) {
			models.User.findOne({}, function (err, user) {

				if (err) {
					return res.send(500, {
						error: err
					});
				} else if (!user) {
					res.render('atlas/setup', {
						subtitle: 'Setup & Configuration'
					});
				} else {
					res.render('atlas/index');
				}
			});
		},
		setupValidation: form(
			filter('name').trim(),
			validate('name').required(),
			filter('email').trim(),
			validate('email').isEmail().required(),
			filter('password').trim(),
			validate('password').required(),
			filter('password-conf').trim(),
			validate('password-conf').equals('field::password')
		),
		setup: function (req, res) {

			if (req.form.isValid) {
				models.User.findOne({}, function (err, user) {

					if (err) {
						return res.send(500, {
							error: err
						});
					} else if (!user) {

						// create user in db

						var tmp = new User({
							Name: req.form.name,
							Email: req.form.email,
							PasswordHash: passwordHash.generate(req.form.password),
							Role: 'Administrator',
						});

						tmp.save(function (err, user) {
							// login with that user & redirect to the login
							res.redirect('/login');
						});
					} else {
						res.render('atlas/index');
					}
				});
			} else {
				res.render('atlas/setup', {
					subtitle: 'Setup & Configuration',
					messages: req.form.messages
				});
			}
		},
		login: function (req, res) {
			res.render('atlas/login', {
				subtitle: 'User Login'
			});
		},
		logout: function (req, res) {
			req.session.destroy(function () {
				res.redirect('/');
			});
		},
		overview: function (req, res) {
			res.render('atlas/overview', {
				subtitle: 'Overview'
			});
		}
	};

	module.exports = API;
})(module);
var form = require('express-form'),
    field = form.field;

module.exports = form(
    field('eventId')
        .required()
        .isInt(),

    field('availableAt')
        .required()
        .regex(/\d{4}\-\d{1,2}\-\d{1,2}\s\d{1,2}:\d{2}/)
);
Example #14
0
'use strict';

var form = require('express-form')
  , field = form.field;

module.exports = form(
  field('registerForm.username').required().is(/^[\da-zA-Z\-_]+$/),
  field('registerForm.name').required(),
  field('registerForm.email').required(),
  field('registerForm.password').required().is(/^[\da-zA-Z@#$%-_&\+\*\?]{6,64}$/),
  field('registerForm.fbId').isInt(),
  field('registerForm.googleId').isInt()
);
Example #15
0
var parsed = JSON.parse(json);
 
app.use(express.static('public'));
app.set('view engine', 'html');
app.engine('html', hbs.__express);
app.use(express.bodyParser());
 
 
app.get('/', function(req, res) {
    res.render('index',{entries:blogEngine.getBlogEntries()});
});


app.get('/inscription', 
		form(
			field("search").trim()
		),
		function(req, res) {
			res.render('inscription', {title:"About Me"});
			if (!req.form.isValid) {
			   // Handle errors 
			   console.log(req.form.errors);
		 
			} 
			else if(req.query['search'] != null && req.query['search'] != '')
			{
				console.log('Recherche: ' + req.query['search']);
			}
});
app.post('/inscription',
  form(
const jwt = require('jwt-simple');
const form = require('express-form');

const User = require('../models/user');
const hlpr = require('../lib/helpers');

function tokenForUser(user) {
  const timestamp = new Date().getTime();
  const newJWT = jwt.encode({ sub: user.id, iat: timestamp }, process.env.AUTH_SECRET);
  hlpr.consLog(['tokenForUser', newJWT]);
  return newJWT;
}

// Form validation middleware
exports.userForm = form(
  form.field('userName').array().custom(value => value.replace(/[^a-z0-9-_]/gi, '')) /* eslint comma-dangle: ["error", "never"] */
);

exports.signinError = (err, req, res, next) => {
  hlpr.consLog(['signin', `AUTH ERROR: Signin - Bad Email or Password @ ${req.ip}`]);
  return res.status(422).send({ error: 'Signin failed: Bad Email or Password.' });
};

exports.signin = (req, res, next) => {
  hlpr.consLog(['signin', `res.send signin token ${req.user}`]);
  res.send({ token: tokenForUser(req.user) });
};

exports.signup = (req, res, next) => {
  const email = req.body.email;
  const password = req.body.password;
Example #17
0
var form = require("express-form"),
    filter = form.filter,
    validate = form.validate;

OrderFinalForm = form(
    filter("spUserEmail").trim(),
        validate("spUserEmail").required(null, 'please enter email')
        .isEmail('need some email'),

    filter("orderId").trim(),
        validate("orderId")
        .required(null, 'please enter orderId'),

    filter("userName").trim(),
        validate("userName")
        .required(null, 'please enter userName'),

    filter("cellPhone").trim(),


    filter("description").trim(),
        validate("description")
        .required(null, 'please enter description'),

   filter("deliveryAddress").trim()
)

OrderAnswerForm = form(
    filter("spPaymentId").trim(),
        filter("spShopId").trim(),
             filter("spShopPaymentId").trim(),
Example #18
0
var form = require('express-form'),
    field = form.field;

module.exports = form(
    field('eventId')
        .required()
        .isInt(),

    field('name')
        .required()
        .trim()
        .maxLength(255),

    field('email')
        .required()
        .trim()
        .toLower()
        .isEmail(),

    field('message')
        .trim()
);
Example #19
0
app.get('/contact/:id', loggedIn, function(req, res){
  Contacts.findById(req.params.id, function(err, doc) {
    if(err || !doc) {
      res.redirect('/404');
      return;
    }
    Data.find({userid: req.session.user._id, contactid: req.params.id}, {sort: {date: -1}}).toArray(function(err, docs){
      res.render('contact', {js: 'contact', title: 'Touchbase - ' + doc.name, docs: docs, contact: doc})
    });
  });
});

app.post('/login', 
  form(
    field('email').required('Email', 'Please enter an email').toLower().trim().isEmail('Email address is not valid'), 
    field('password').required('Password', 'Please enter a password')
  ), 
  function(req, res) {
    if (!req.form.isValid) {
      res.render('login', {js: 'login', message: req.form.errors[0], title: 'Touchbase - Login' });
      return;
    }
    Users.findOne({email: req.form.email}, function(err, doc){
      if(!doc || hash.sha256(req.form.password, doc.salt) !== doc.password) {
        res.render('login', {js: 'login', message: 'Incorrect email and password combination', title: 'Touchbase - Login'});
      } else {
        doc._id = doc._id.toString();
        req.session.user = doc;
        res.redirect('/dashboard');
      }
    });
Example #20
0
  });
}

function account_exist(email, source, callback) {
  User.findOne({ email: email }, function(err, user) {
    if (err) throw new Error();
    if (!user) return callback(new Error('Account not exist'));
    callback(null);
  });
}

function is_password_correct(password, source, callback) {
  User.findOne({ email: source.email }, function(err, user) {
    if (err || !user) throw new Error();
    if (!user.authenticate(password)) return callback(new Error('Wrong password'));
    callback(null);
  });
}

exports.signup_form = form(
  field('email').trim().required().isEmail().custom(email_unique),
  field('username').trim().required(),
  field('password').trim().required().minLength(6),
  field('password_confirm').trim().required().equals('field::password', 'Password not matched')
);

exports.signin_form = form(
  field('email').trim().required().isEmail().custom(account_exist),
  field('password').trim().required().custom(is_password_correct)
);
module.exports = function(app){
	app.get('/news', function(req, res){
		var query = NewsPost.find({});
		if(!req.user || req.user.role < 10){
			query.where('active', true);
		}else{
			query.populate('recentEvents');
		}
		query.sort('-date').exec(function(err, newsPosts){
			for(var i=0; i<newsPosts.length; i++){
				newsPosts[i].text = newsPosts[i].text.replace(/\r\n/gmi, '<br/>').replace(/\r/gmi, '<br/>').replace(/\n/gmi, '<br/>');
			}
			res.render('news', {title: 'All News', newsPosts: newsPosts, moment: moment});
		});
	});
	
	app.get('/news/publish/:id', auth.authorize(2, 10), function(req, res){
		if(!req.params.id){
			req.flash('error', 'News Post ID required.');
			res.redirect('/news');
			return;
		}
		NewsPost.findById(req.params.id).exec(function(err, newsPost){
			if(err || !newsPost){
				req.flash('error', 'News Post not found.');
				res.redirect('/news');
				return;
			}
			newsPost.active = true;
			newsPost.save(function(err){
				req.flash('info', 'News Post published.');
				res.redirect('/news');
				return;
			});
			return;
		});
	});
	
	app.get('/news/unpublish/:id', auth.authorize(2, 10), function(req, res){
		if(!req.params.id){
			req.flash('error', 'News Post ID required.');
			res.redirect('/news');
			return;
		}
		NewsPost.findById(req.params.id).exec(function(err, newsPost){
			if(err || !newsPost){
				req.flash('error', 'News Post not found.');
				res.redirect('/news');
				return;
			}
			newsPost.active = false;
			newsPost.save(function(err){
				req.flash('info', 'News Post unpublished.');
				res.redirect('/news');
				return;
			});
			return;
		});
	});
	
	// (as, populate, title, object, template, varNames, redirect, beforeRender, beforeSave)
	var as = 'newsPost'
	  , populate = []
	  , template = 'news/form'
	  , varNames = ['date', 'title', 'text', 'image', 'link']
	  , redirect = '/news'
	  , formValidate = form(
			field('text').trim().required(),
			field('date').trim().isDate(),
			field('title').trim().required(),
//			field('image').trim(),
			field('link').trim().required()
		)
	  , beforeRender = function(req, res, item, callback){
/*
			if(item.newsPost && req.params && req.params.number){
				item.newsPost.text = 'This is in reply to confession #'+req.params.number+': ';
			}
			item.action = '/confessional';
*/
			return callback(item);
	/* 		return item; */
		}
	  , beforeSave = function(req, res, item, complete){
			if(req.files && req.files.image && req.files.image.size){
				s3.uploadFile(req.files.image, null, function(err, url){
					if(err){
						console.log('error uploading file: ', err);
					}else if(url){
						item.image = url;
					}
					return complete(item);
				});
			}else{
				return complete(item);
			}
		}
	  , layout = 'layout';
	
	app.get('/news/add', utilities.doForm(as, populate, 'Add News Post', NewsPost, template, varNames, redirect, beforeRender, null, layout));
	app.post('/news/add', formValidate, utilities.doForm(as, populate, 'Add News Post', NewsPost, template, varNames, redirect, beforeRender, beforeSave, layout));

	app.get('/news/edit/:id', utilities.doForm(as, populate, 'Edit News Post', NewsPost, template, varNames, redirect, beforeRender, null, layout));
	app.post('/news/edit/:id', formValidate, utilities.doForm(as, populate, 'Edit News Post', NewsPost, template, varNames, redirect, beforeRender, beforeSave, layout));
}
Example #22
0
'use strict';

var form = require('express-form')
  , field = form.field;

module.exports = form(
  field('slackSetting[slack:clientId]', 'clientId').is(/(\d+)\.(\d+)/).required(),
  field('slackSetting[slack:clientSecret]', 'clientSecret').required().is(/([0-9a-f]+)/)
);

Example #23
0
            var transfer1Line = transfer1['line']
            var transfer2Line = transfer2['line']
            var trainHeadStation1 = transfer1['trainHeadStation']
            var trainHeadStation2 = transfer2['trainHeadStation']
            res.render('trains', {transferO: transferOrigin, transferP: transferPoint, transferD: transferDestination, transferStart: transfer1origTimeMin, transferMid: transfer2origTimeMin, transferEnd: transfer2destTimeMin, origin: origin, dest: destination, fare: fare, origTime: origTimeMin, origDate: origTimeDate, destTime: destTimeMin, destDate: destTimeDate})
            }   else {
                    res.render('trains', {origin: origin, dest: destination, fare: fare, origTime: origTimeMin, origDate: origTimeDate, destTime: destTimeMin, destDate: destTimeDate})
        }
                
    }
    bart.getTimes(req.form.origin, req.form.destination, req.form.time, done);
}

exports.validateBart = form(
    field('origin').required('Origin', 'Please enter your current station').toUpper().trim(),
    field('destination').required('Destination', 'Please enter a destination').toUpper().trim(),
    field('time').required('Time', 'Please enter a valid #:##am/pm time').trim()
);

exports.validateLogin = form(
  field('email').required('Email', 'Please enter an email').toLower().trim().isEmail('Email address is not valid'), 
  field('password').required('Password', 'Please enter a password')
);

exports.validateRegistration = form(
    field('email').required('Email', 'Please enter an email').toLower().trim().isEmail('Email address is not valid'), 
    field('password').required('Password', 'Please enter a password').minLength(6, 'Passwords must be 6 characters long'),
    field('name').trim()
)

exports.login = function(req, res){
Example #24
0
"use strict";

var path = require('path'),
    form = require('express-form'),
    field = form.field,
    mail = require(path.join(__dirname, '..', 'lib', 'mail'));


// Form filter and validation middleware
exports.formMiddleWare = form(
    field('name').trim().required().isAlphanumeric(),
    field('email').trim().required().isEmail(),
    field('subject').trim().required(),
    field('text').trim().required()
);

exports.contact = function (req, res, next) {
// Express request-handler now receives filtered and validated data
    var errs = [],
        mailSent = false,
        key = '';

    if (!req.form.isValid) {
        // pass errors on to user. this are only form errors, not email errors!
        errs = req.form.errors;
    } else {
        //send mail
        mail.sendMail(req.form, res.locals.config);
        mailSent = true;        //this actually says nothing. emails should be logged before sending.
    }
Example #25
0
module.exports = function(app, db) {

  var Users = db.model('Users')
    , access = Users.access;

  app.get('/login', access(), function(req, res) {
    res.render('login', {
      title: "Login"
    });
  });

  app.post('/login', access(), form(
      filter("email").trim()
    , validate("email").required().isEmail()
    , filter("password").trim()
    , validate("password").required()
  ), function(req, res) {
    if(!req.form.isValid) {
      res.render('login', {
          title: "Login"
        , email: req.form.email
      });
    } else {
      Users.authenticate(req.form.email, req.form.password, function(err, user) {
        if(err) {
          req.flash('error', err);
          res.redirect('/login');
        }
        if(user) {
          req.session.auth = user;
          Users
            .findById(req.session.auth._id)
            .populate('_group')
            .run(function (err, user) {
              if(err) {
                console.log(err);
                req.flash('error', err);
                return res.redirect('/');
              }
              if(user) {
                req.flash('success', 'You have successfully logged in');
                if(req.session.redirectTo) {
                  var redirectTo = req.session.redirectTo;
                  delete req.session.redirectTo;
                  res.redirect(redirectTo);
                } else {
                  res.redirect('/');
                  /*
                  if(typeof user._group === "undefined") {
                    res.redirect('/');
                  } else {
                    if(typeof user._group.id !== "undefined"
                      && ((user._group.id === "super_admin")
                      || (user._group.id === "admin"))) {
                      res.redirect('/admin');
                    } else {
                      res.redirect('/my-account');
                    }
                  }
                  */
                }
              } else {
                req.flash('error', 'Your account no longer exists');
                res.redirect('/logout');
              }
            });
        }
      });
    }
  });
};
Example #26
0
"use strict";

var form = require("express-form"),
    field = form.field,
    models = require("../models"),
    User = models.User,
    bcrypt = require("bcrypt-nodejs"),
    auth = require("./auth");

var validator = form(
    field("email", "Email").trim()
        .required()
        .isEmail("Email address is not valid"),
    field("username", "Username").trim()
        .required()
        .isAlphanumeric("Username must contain only alphanumeric characters"),
    field("password", "Password")
        .required()
        .minLength(8, "Password must be at least 8 characters"),
    field("confirmPassword", "Password confirmation")
        .required()
        .equals("field::password", "Passwords do not match")
);

module.exports = function(app) {
    app.get("/signup", function(req, res){
        res.render("signup", {
            title: "Sign Up"
        });
    });

    app.post("/signup", validator, function(req, res) {
Example #27
0
module.exports = function(app, db) {
  // ## Check Access
  var access = require('../schemas/users')(db).access;
  // ## Pages
  var Pages = require('../schemas/pages')(db);
  // ## Routes
  var routes = {
      index: function(req, res, next) {
        // Paginate the results and check for page and limit params
        var page = (req.param('page')) ? req.param('page') : 0
          , limit = (req.param('limit')) ? req.param('limit') : 10;
        // Load the pages ordered by date created
        Pages
          .find({})
          .asc('title')
          //.skip(page * limit)
          //.limit(limit)
          .run(function(err, pages) {
            if(_.isEmpty(pages)) {
              // Flash message
              req.flash('notice', 'No pages exist');
              res.render('pages', {
                title: 'Pages'
              });
            } else {
              // Render the view with pages
              res.render('pages', {
                  title: 'Pages'
                , pages: pages
                , currentPage: page
                , pageLimit: limit
              });
            }
          });
      }
    , new: function(req, res, next) {
        // Render the view with form to create a new page
        res.render('pages/new', { title: 'Create Page' });
      }
    , create: function(req, res, next) {
        // Check that form is valid
        if (!req.form.isValid) {
          res.render('pages/new', {
              title: 'Create Page'
            , form: req.form
          });
        } else {
          // Create the new page
          Pages.create(req.form, function(err, page) {
            if (err) {
              // err, null
              if (/duplicate key/.test(err)) {
                req.flash('error', 'Page already exists with the same title and/or handle');
              } else {
                req.flash('error', err);
              }
              res.render('pages/new', {
                  title: 'Create Page'
                , form: req.form
              });
            } else if (page) {
              // null, page
              req.flash('success', 'Page was successfully created');
              res.redirect('/pages');
            } else {
              // null, null
              req.flash('error', 'An unknown error occured, try again');
              res.redirect('/pages/new');
            }
          });
        }
      }
    , show: function(req, res, next) {
        // Load the specific page
        Pages.findOne({ handle: req.param('handle') }, function(err, page) {
          if (err) {
            // err, null
            // Redirect to index of pages
            req.flash('error', 'No page found with that handle');
            res.redirect('/');
          } else if (page) {
            // null, page
            // Render view to show the page
            res.render('pages/show', {
                title: page.title
              , meta: page.meta
              , page: page
            });
          } else {
            // null, null
            req.flash('error', 'An unknown error occured, try again');
            res.redirect('/');
          }
        });
      }
    , edit: function(req, res, next) {
        // Load the specific page
        Pages.findOne({ handle: req.param('handle') }, function(err, page) {
          if (err) {
            // err, null
            req.flash('error', 'No page found with that handle');
            res.redirect('/');
          } else if (page) {
            // null, page
            // Render view to edit the page
            res.render('pages/edit', {
                title: 'Edit Page'
              , form: page
            });
          } else {
            // null, null
            req.flash('error', 'An unknown error occured, try again');
            res.redirect('/pages');
          }
        });
      }
    , update: function(req, res, next) {
        // Check that form is valid
        if (!req.form.isValid) {
          res.render('pages/edit/' + req.param('handle'), {
              title: 'Edit Page'
            , form: req.form
          });
        } else {
          // Load the specific page
          Pages.findOne({ handle: req.param('handle') }, function(err, page) {
            if (err) {
              // err, null
              req.flash('error', 'No page found with that handle');
              res.redirect('/pages');
            } else if (page) {
              // null, page
              // Save the page
              page.title = req.form.title;
              page.handle = req.form.page_handle;
              page.meta = req.form.meta;
              page.content = req.form.content;
              page.save(function(err) {
                if(err) {
                  res.render('/pages/edit/' + req.param('handle'), {
                      title: 'Edit Page'
                    , form: req.form
                  });
                } else {
                  req.flash('success', 'Successfully updated page');
                  res.redirect('/page/' + page.handle);
                }
              });
            } else {
              // null, null
              req.flash('error', 'An unknown error occured, try again');
              res.redirect('/pages');
            }
          });
        }
      }
    , delete: function(req, res, next) {
        // Load the specific page
        Pages.findOne({ handle: req.param('handle') }, function(err, page) {
          if (err) {
            // err, null
            req.flash('error', 'No page found with that handle');
            res.redirect('/pages');
          } else if (page) {
            // null, page
            // Remove the page
            page.remove(function(err) {
              if(err) {
                req.flash('error', 'Page was not removed');
              } else {
                req.flash('success', 'Successfully removed page');
              }
              res.redirect('/pages');
            });
          } else {
            // null, null
            req.flash('error', 'An unknown error occured, try again');
            res.redirect('/pages');
          }
        });
      }
  };
  // ## Index
  app.get('/pages', access(admins), routes.index);
  // ## New
  app.get('/pages/new', access(admins), routes.new);
  // ## Create
  app.post(
    '/pages'
    , access(admins)
    , form(
        filter("title")
      , validate("title").required()
      , filter("handle")
      , validate("handle").required()
      , filter("meta")
      , filter("content")
    )
    , routes.create
  );
  // ## Show
  app.get('/page/:handle', checkHandle, routes.show);
  // ## Edit
  app.get(
      '/pages/edit/:handle'
    , access(admins)
    , checkHandle
    , routes.edit);
  // ## Update
  app.post(
      '/pages/update/:handle'
    , access(admins)
    , checkHandle
    , form(
        filter("title")
      , validate("title").required()
      , filter("page_handle")
      , validate("page_handle").required()
      , filter("meta")
      , filter("content")
    )
    , routes.update);
  // ## Delete
  app.post('/pages/delete/:handle', access(admins), checkHandle, routes.delete);
  // ## Paginated Index
  app.get('/pages/:page/:limit', access(admins), routes.index);
};
Example #28
0
module.exports = function(app, db) {

  // ## Schemas
  var Users = db.model('Users')
    , access = Users.access(admins);

  // ## Routes
  var routes = {
      index: function(req, res, next) {
        Users
          .find({})
          .asc('email')
          .run(function(err, items) {
            if(_.isEmpty(items)) {
              req.flash('notice', 'No users exist');
              res.render('admin/users', {
                title: 'Admin - Users'
              });
            } else {
              res.render('admin/users', {
                  title: 'Admin - Users'
                , items: items
              });
            }
          });
      }
    , new: function(req, res, next) {
        res.render('admin/users/new', { title: 'Create User - Admin' });
      }
    , create: function(req, res, next) {
        // Check that form is valid
        if (!req.form.isValid) {
          res.render('admin/users/new', {
              title: 'Create User - Admin'
            , form: req.form
          });
        } else {
          delete req.form.password_confirmation;
          // Create the new user
          Users.create(req.form, function(err, item) {
            if (err) {
              // err, null
              if (/duplicate key/.test(err)) {
                req.flash('error', 'User already exists with the same email');
              } else {
                req.flash('error', err);
              }
              res.render('admin/users/new', {
                  title: 'Create User - Admin'
                , form: req.form
              });
            } else if (item) {
              // null, item
              req.flash('success', 'User was successfully created');
              res.redirect('/admin/users');
            } else {
              // null, null
              req.flash('error', 'An unknown error occured, try again');
              res.redirect('/admin/users/new');
            }
          });
        }
      }
    , show: function(req, res, next) {
        // Load the specific user
        Users.findById(req.param('item_id'), function(err, item) {
          if (err) {
            // err, null
            // Redirect to index of users
            req.flash('error', 'No user found with that id');
            res.redirect('/admin/users');
          } else if (item) {
            // null, item
            // Render view to show the user
            res.render('admin/users/show', {
                title: item.email
              , item: item
            });
          } else {
            // null, null
            req.flash('error', 'An unknown error occured, try again');
            res.redirect('/admin/users');
          }
        });
      }
    , edit: function(req, res, next) {
        // Load the specific user
        Users.findById(req.param('item_id'), function(err, item) {
          if (err) {
            // err, null
            req.flash('error', 'No user found with that id');
            res.redirect('/admin/users');
          } else if (item) {
            // null, item
            // Render view to edit the user
            res.render('admin/users/edit', {
                title: 'Edit User'
              , form: item
            });
          } else {
            // null, null
            req.flash('error', 'An unknown error occured, try again');
            res.redirect('/admin/users');
          }
        });
      }
    , update: function(req, res, next) {
        // Check that form is valid
        if (!req.form.isValid) {
          res.render('admin/users/edit/' + req.param('item_id'), {
              title: 'Edit User'
            , form: req.form
          });
        } else {
          // Check if user wants to change password
          if(req.form.password !== "" && req.form.password_confirmation !== "") {
            if(req.form.password !== req.form.password_confirmation) {
              req.flash('error', 'Password confirmation does not match entered password, try again');
              res.redirect('/admin/users');
            } else {
              delete req.form.password_confirmation;
            }
          } else {
            delete req.form.password;
            delete req.form.password_confirmation;
          }
          // Load the specific user
          Users.findById(req.param('item_id'), function(err, item) {
            if (err) {
              // err, null
              req.flash('error', 'No user found with that id');
              res.redirect('/admin/users');
            } else if (item) {
              // null, item
              // Iterate through object properties
              var changed = false;
              for(var attr in req.form) {
                if(item[attr] !== req.form[attr]) {
                  if(attr !== "name") {
                    changed = true;
                    item[attr] = req.form[attr];
                  } else {
                    if(item.name.first !== req.form.name.first) {
                      changed = true;
                      item.name.first = req.form.name.first;
                    }
                    if(item.name.last !== req.form.name.last) {
                      changed = true;
                      item.name.last = req.form.name.last;
                    }
                  }
                }
              }
              if(changed) {
                // Save the user's object
                item.save(function(err, item) {
                  if(err) {
                    if(/duplicate key/.test(err)) {
                      req.flash('error', 'An account is already registered for ' + req.form.email);
                      res.render('admin/users/edit/' + req.param('item_id'), {
                          title: 'Edit User'
                        , form: req.form
                      });
                    } else {
                      req.flash('error', err);
                      res.redirect('/admin/users');
                    }
                  } else if(item) {
                    req.flash('success', 'Changes to the user\'s account information have been saved');
                    res.redirect('/admin/users');
                  }
                });
              } else {
                req.flash('notice', 'No changes were made to the user\'s information');
                res.redirect('/admin/users');
              }
            } else {
              // null, null
              req.flash('error', 'An unknown error occured, try again');
              res.redirect('/admin/users');
            }
          });
        }
      }
    , delete: function(req, res, next) {
        // Load the specific user
        Users.findById(req.param('item_id'), function(err, item) {
          if (err) {
            // err, null
            req.flash('error', 'No user found with that id');
            res.redirect('/admin/users');
          } else if (item) {
            // null, item
            // Remove the user
            item.remove(function(err) {
              if(err) {
                req.flash('error', 'User was not removed');
              } else {
                req.flash('success', 'Successfully removed user');
              }
              res.redirect('/admin/users');
            });
          } else {
            // null, null
            req.flash('error', 'An unknown error occured, try again');
            res.redirect('/admin/users');
          }
        });
      }
  };

  // ## Users
  // Index
  app.get('/admin/users', access, routes.index);
  // New
  app.get('/admin/users/new', access, routes.new);
  // Create
  app.post(
      '/admin/users'
    , access
    , form(
          filter("package").trim()
        , validate("package").required().is(/[0-1]/)
        , filter("email").trim()
        , validate("email").required().isEmail()
        , filter("password").trim()
        , validate("password").required()
        , filter("password_confirmation").trim()
        , validate("password_confirmation").required()
            .equals(
              "field::password",
              "Password confirmation does not match entered password, try again")
        , filter("name.first").trim()
        , validate("name.first").required()
        , filter("name.last").trim()
        , validate("name.last").required()
        , filter("company").trim()
        , validate("company").required()
      )
    , routes.create
  );
  // Show
  app.get('/admin/users/:item_id', access, checkItemId, routes.show);
  // Edit
  app.get('/admin/users/edit/:item_id', access, checkItemId, routes.edit);
  // Update
  app.post(
      '/admin/users/update/:item_id'
    , access
    , checkItemId
    , form(
          filter("email").trim()
        , validate("email").required().isEmail()
        , filter("password").trim()
        , filter("password_confirmation").trim()
        , filter("name.first").trim()
        , validate("name.first").required()
        , filter("name.last").trim()
        , validate("name.last").required()
        , filter("company").trim()
        , validate("company").required()
      )
    , routes.update
  );
  // Delete
  app.post('/admin/users/delete/:item_id', access, checkItemId, routes.delete);
};
Example #29
0
    });
});

router.get('/events', auth.getUserRoles, function(req, res, next) {
    res.render('events/event-list', {
        module: 'events',
        events: Event.find().populate('venue'),
        roles: req._roles
    });
});

router.post('/events', form(
    field("name").trim().required().is(/^[\w]+$/),
    field("start-date").trim(),
    field("start-time").trim(),
    field("end-date").trim(),
    field("end-time").trim(),
    field("venue").trim(),
    field("description")
), function(req, res, next) {
    var start_date = new Date(req.form['start-date'] + ' ' + req.form['start-time']);
    var end_date = new Date(req.form['end-date'] + ' ' + req.form['end-time']);
    var params = {
            name: req.form.name,
            date: {
                start: start_date,
                end: end_date
            },
            venue: req.form.venue,
            description: req.form.description
        }
Example #30
0
    function(data) {
      response.send(data);
    }
  );
});

app.delete("/songs/:id", function(request, response){
  var id = request.params.id;
  console.log('Deleting song: '+ id)
  mongoModel.delete('songs', id, function(data){
    console.log('deleted ' + id + ':'+ data)
  });
})
app.post("/songs",
  form(
    field("artist").trim().required(),
    field("song").trim().required()
   ),
  function(request, response){
    if (!request.form.isValid) {
       // Handle errors 
       response.send(request.form.errors);
 
     } else {
       // Or, use filtered form data from the form object: 
       console.log("artist:", request.form.artist);
       console.log("song:", request.form.song);
       mongoModel.save('songs',
        {
          'artist' : request.form.artist, 
          'song' : request.form.song
        },