aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/controllers/users.js
diff options
context:
space:
mode:
authorDennis Eriksen <dennis.se@gmail.com>2013-05-25 11:17:42 +0200
committerDennis Eriksen <dennis.se@gmail.com>2013-05-25 11:17:42 +0200
commite582c3b84c6090b08f33d599c354968fcd868d14 (patch)
treeb6de1b7b1f708bf9126ccb709d5129e91a67c7d5 /controllers/users.js
parentchanged what gets collected (diff)
downloadDivid-e582c3b84c6090b08f33d599c354968fcd868d14.tar.gz
moved and renamed files to match the filesetup we want.
havebeen using a dev-setup till now.
Diffstat (limited to 'controllers/users.js')
-rw-r--r--controllers/users.js293
1 files changed, 0 insertions, 293 deletions
diff --git a/controllers/users.js b/controllers/users.js
deleted file mode 100644
index 86cbd35..0000000
--- a/controllers/users.js
+++ /dev/null
@@ -1,293 +0,0 @@
-
-/**
- * Module dependencies
- */
-
-var mongoose = require('mongoose')
- , User = mongoose.model('User')
- , Project = mongoose.model('Project')
- , Access = mongoose.model('Access')
- , env = process.env.NODE_ENV || 'development'
- , config = require('../config/config')[env]
- , Validator = require('validator').Validator
- , v = new Validator()
- , sanitize = require('validator').sanitize;
-
-// validation error handling. This collects all errors before pushing them out in getErrors()
-Validator.prototype.error = function(msg) {
- this._errors.push(msg);
- return this;
-}
-Validator.prototype.getErrors = function() {
- var returnThis = this._errors;
- this._errors = ''; // need to reset errors between sessions because of object model
- return returnThis;
-}
-
-
-/**
- * Login
- */
-exports.login = function(req, res) {
- res.render('login', {
- title: 'Login'
- });
-
-}
-
-
-/**
- * Logout
- */
-exports.logout = function(req, res) {
- req.logout();
- res.redirect('/');
-}
-
-
-/**
- * Signin
- * This is triggered when the user post to /login
- */
-exports.signin = function(req, res) {
- res.redirect('/dashboard');
-}
-
-exports.randomLogin = function(req, res) {
- Access.findOne({ randomToken: req.params.hash }).populate('project', 'shortURL').exec(function(err, access) {
- if (err) return res.status(500).render('error', { title: '500', text: 'En serverfeil oppstod', error: err.stack });
- return res.redirect('/project/' + access.project.shortURL);
-
- });
-}
-
-
-/**
- * Signup
- */
-exports.signup = function(req, res) {
- res.render('signup', { title: 'Registrer deg', invite: false });
-}
-
-/**
- * Create users
- */
-exports.create = function(req, res) {
- var user = new User(req.body);
- user.provider = 'local';
- user.save(function(err) {
- if (err) return res.render('signup', { errors: err.errors, user: user });
- req.logIn(user, function(err) {
- if (err) return next(err);
- return res.redirect('/dashboard');
- });
- });
-}
-
-
-/**
- * AuthCallback
- * This is what happends when a user has signed in using facebook/twitter
- */
-
-exports.authCallback = function(req, res, next) {
- // if the user hasn't registered an email, we need to do so
- if (!req.user.email || req.user.email === undefined) return res.redirect('/registerEmail');
-
- res.redirect('/dashboard');
-}
-
-
-/**
- * registerEmail
- * Will register the users email if they don't have already
- */
-
-exports.registerEmail = function(req, res) {
- // in case some user who has alreadu registered an email gets on this page
- if (req.user.email !== undefined) return res.redirect('/dashboard');
- res.render('registerEmail', { title: 'Registrer din e-post' });
-}
-
-
-/**
- * postRegisterEmail
- */
-
-exports.postRegisterEmail = function(req, res) {
-
- v.check(req.body.email, 'You need to supply a proper email').isEmail();
- var errors = v.getErrors();
- if (errors.length !== 0) return res.status(500).render('error', { title: '500', text: 'Det oppstod en valideringsfeil<br>' + errors, error: errors });
-
- // first we need to check if the email is already in use
- User.findOne({ email: req.body.email }, function(err, user) {
- if (err) return res.status(500).render('error', { title: '500', text: 'En serverfeil oppstod', error: err.stack });
-
- // if mail is in use..
- if (user) return res.render('registerEmail', { title: 'Den e-posten er allerede i bruk. Vennligs registrer en annen.' });
-
- User.update({ _id: req.user._id }, { email: req.body.email, status: 3 }, function(err) {
- if (err) return res.status(500).render('error', { title: '500', text: 'En serverfeil oppstod', error: err.stack });
- return res.redirect('/dashboard');
- });
- });
-}
-
-
-/**
- * postProjectParticipants
- * This callback is in this file because it treats users.
- */
-exports.postProjectParticipants = function(req, res) {
- Project.loadShort(req.params.short, function(err, project) {
- if (err || !project) return res.status(500).render('error', { title: '500', text: 'En serverfeil oppstod', error: err.stack });
-
- Access.checkAccess(req.user._id, project._id, 3, function(err, access) {
- if (err || !access) return res.status(403).render('error', { title: '403', text: 'No sir! NO ACCESS FOR YOU', error: err });
-
- // validate
- var emails = sanitize(req.body.emails).xss();
- v.check(emails, 'You need to enter some emails to invite someone').notEmpty();
- //var emails = sanitize(req.body.emails).xss();
- emails = emails.split('\r\n');
- emails.forEach(function(m) { // m = each mailaddress
- if (m) {
- v.check(m, m + ' is not a valid email').isEmail();
- }
- });
-
- // error when validation fails
- var errors = v.getErrors();
- if (errors.length !== 0) return res.status(500).render('error', { title: '500', text: 'Det oppstod en valideringsfeil<br>' + errors, error: errors });
-
- // EMAIL
- // Require dependencies. We require them here so that they're not fetched until they're actually needed.
- var email = require('emailjs')
- , server = email.server.connect(config.email)
- , message = {
- subject: 'You were invited to use Divid',
- text: 'VIL DU BRUK DIVID?',
- from: 'Divid <divid@divid.no>',
- }
- emails.forEach(function(mailAddress) { // loops through all the emails and sets up each user
- User.loadUser(mailAddress, function(err, user) {
- if (err) return res.status(500).render('error', { title: '500', text: 'En serverfeil oppstod', error: err.stack });
- if (!user) { //if the user doesn't exist, create one
- console.log('fant ingen brukere med den eposten. må invitere og stasj');
- var newUser = new User();
- newUser.email = mailAddress;
- newUser.username = mailAddress;
- newUser.name = mailAddress + ' <span class="muted">(ikke registrert)</span>';
- newUser.status = 1;
- newUser.password = newUser.generateRandomToken(32);
- newUser.randomToken = newUser.generateRandomToken(10, true);
- newUser.save(function(err) {
- if (err) return res.render('projectParticipants', { title: 'Nytt prosjekt - en feil oppstod', loggedin: true });
- console.log('made new user ' + newUser._id);
- var access = new Access();
- access.user = newUser._id;
- access.creator = req.user._id;
- access.project = project._id;
- access.randomToken = access.generateRandomToken(15);
- access.save(function(err) {
- if (err) {
- console.log(err.errors);
- return res.render('projectParticipants', { title: 'Nytt prosjekt - en feil oppstod', loggedin: true });
- }
- console.log('made new access for user ' + newUser._id);
- message.to = newUser.email;
- message.text = 'Hei! Du har blitt invitert til å delta i et Divid-prosjekt! https://divid.no/invite/' + newUser.randomToken + '\n Du kan også gå direkte til prosjektet her: https://divid.no/login/' + access.randomToken;
- server.send(message, function(err, message) { console.log(err || message);});
- });
- });
-
- } else { // if the user exists, add him to the project
- Access.checkAccess(user._id, project._id, 0, function(err, acc) {
- if (err) return res.render('projectParticipants', { title: 'Nytt prosjekt - en feil oppstod', loggedin: true });
- if (acc) { // if the user already has access to the project.. do nothing
- console.log('user ' + user.email + ' already has access to project ' + project.name);
- } else {
- console.log('fant en bruker. må lage ny access til han og si i fra.');
- var access = new Access();
- access.user = user._id;
- access.creator = req.user._id;
- access.project = project._id;
- message.text = 'Du ble lagt til projektet "' + project.name + '"';
- if (Number(user.status) < 3) {
- access.randomToken = access.generateRandomToken(15);
- message.text += '.\nDu kan få direkte tilgang til dette prosjektet her: https://divid.no/login/' + access.randomToken + ' \nDu kan bruke denne linken for å registrere deg, for å få tilgang til flere funksjoner: https://divid.no/invite/' + user.randomToken;
- }
- access.save(function(err) {
- if (err) {
- console.log(err.errors);
- return res.render('projectParticipants', { title: 'Nytt prosjekt - en feil oppstod', loggedin: true });
- }
- console.log('made new access for user ' + user.username);
- message.to = user.email;
- server.send(message, function(err, message) { console.log(err || message);});
- });
- }
- });
- }
- });
- });
-
- res.redirect('back');
- });
- });
-}
-
-
-/**
- * claimInvite
- * So users can use their inviteEmail
- */
-
-exports.claimInvite = function(req, res) {
-
- // first we need to check if the invite is valid!
- User.findOne({ randomToken: sanitize(req.params.randomToken).escape(), status: 1 }, function(err, user) {
- if (err) return res.status(500).render('error', { title: '500', text: 'En serverfeil oppstod', error: err.stack });
- if (!user) return res.render('error', { title: 'This invite does not exist', text: 'Invitasjonen din er ugyldig' });
-
- res.render('signup', {
- invite: true,
- title: 'Registrer deg!',
- email: user.email }
- );
- });
-
-
-}
-
-
-exports.postClaimInvite = function(req, res) {
-
- User.findOne({ randomToken: sanitize(req.params.randomToken).escape(), status: 1 }, function(err, user) {
- if (err) return res.status(500).render('error', { title: '500', text: 'En serverfeil oppstod', error: err.stack });
- if (!user) return res.render('error', { title: 'This invite does not exist', text: 'Invitasjonen din er ugyldig' });
-
- v.check(req.body.password).notEmpty();
- v.check(req.body.name).notEmpty();
- v.check(req.body.username).notEmpty();
-
- errors = v.getErrors();
- if (errors.length !== 0) return res.status(500).render('error', { title: '500', text: 'Det oppstod en valideringsfeil<br>' + errors, error: errors });
-
- user.name = sanitize(req.body.name).escape();
- user.username = sanitize(req.body.username).escape();
- user.password = req.body.password;
- user.provider = 'local';
- user.status = 3;
- user.randomToken = '';
- user.save(function(err) {
- if (err) return res.render('signup', { errors: err.errors, user: user });
- req.logIn(user, function(err) {
- if (err) return next(err);
- return res.redirect('/dashboard');
- });
- });
- });
-}
-