diff options
author | Dennis Eriksen <dennis.se@gmail.com> | 2013-05-25 11:17:42 +0200 |
---|---|---|
committer | Dennis Eriksen <dennis.se@gmail.com> | 2013-05-25 11:17:42 +0200 |
commit | e582c3b84c6090b08f33d599c354968fcd868d14 (patch) | |
tree | b6de1b7b1f708bf9126ccb709d5129e91a67c7d5 /controllers/users.js | |
parent | changed what gets collected (diff) | |
download | Divid-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.js | 293 |
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'); - }); - }); - }); -} - |