diff --git a/controllers/auth/views.js b/controllers/auth/views.js index 3bb1a39..a2ac0e8 100644 --- a/controllers/auth/views.js +++ b/controllers/auth/views.js @@ -61,6 +61,11 @@ module.exports.signupTarget = function(req, res, render) { require('crypto').randomBytes(48, function(err, buffer) { user.activationKey = buffer.toString('hex'); user.save((err) => { + + if (err !== undefined) { + return res.redirect(getUrl('signup')); + } + res.locals.user = user; let baseUrl = diff --git a/controllers/index/templates/index.pug b/controllers/index/templates/index.pug index af9eb6c..f088fa3 100644 --- a/controllers/index/templates/index.pug +++ b/controllers/index/templates/index.pug @@ -2,7 +2,7 @@ extends ../../../templates/base.pug block content .jumbotron - h1.display-3 Welcome#{session.user !== undefined ? ', ' + session.user._username.value : ' on ADEjs'}! + h1.display-3 Welcome#{session.user !== undefined ? ', ' + session.user.username : ' on ADEjs'}! if session.user === undefined p.lead. On this site, you can subscribe, set your calendar information diff --git a/controllers/settings/templates/settings.pug b/controllers/settings/templates/settings.pug index f8c2216..f33c9c5 100644 --- a/controllers/settings/templates/settings.pug +++ b/controllers/settings/templates/settings.pug @@ -6,25 +6,25 @@ block content .col-2 label.col-2.col-form-label(for="username") Username .col-6 - input.form-control(type="text", value=session.user._username.value, disabled, name="username", id="username") + input.form-control(type="text", value=session.user.username, disabled, name="username", id="username") .col-2 .form-group.row .col-2 label.col-2.col-form-label(for="email") Email .col-6 - input.form-control(type="email", value=session.user._email.value, disabled, name="email", id="email") + input.form-control(type="email", value=session.user.email, disabled, name="email", id="email") .col-2 .form-group.row .col-2 label.col-2.col-form-label(for="resources") Resources .col-6 - input.form-control(type="number", value=session.user._resources.value, name="resources", id="resources") + input.form-control(type="number", value=session.user.resources, name="resources", id="resources") .col-2 .form-group.row .col-2 label.col-2.col-form-label(for="projectId") Project id .col-6 - input.form-control(type="number", value=session.user._projectId.value, name="projectId", id="projectId") + input.form-control(type="number", value=session.user.projectId, name="projectId", id="projectId") .col-2 .form-group.row diff --git a/controllers/settings/views.js b/controllers/settings/views.js index 6c34ab2..875feaf 100644 --- a/controllers/settings/views.js +++ b/controllers/settings/views.js @@ -15,7 +15,7 @@ module.exports.settingsTarget = function(req, res, render) { return res.redirect(getUrl("settings")); } - User.getById(req.session.user._id.value, (err, user) => { + User.getById(req.session.user.id, (err, user) => { user.projectId = projectId; user.resources = resources; diff --git a/index.js b/index.js index f9466b8..b2dd8da 100644 --- a/index.js +++ b/index.js @@ -10,6 +10,7 @@ const path = require('path'); const log = require('log'); const model = require('model'); const repl = require('repl'); +const User = require('auth/models'); // Load models model.load(config.CONTROLLERS_DIR); @@ -39,6 +40,10 @@ function startServer() { log.request(req, res, Date.now() - start); }); res.locals.session = req.session; + + if (req.session.user !== undefined) { + req.session.user = User.fromJSON(req.session.user); + } next(); }); diff --git a/utils/model.js b/utils/model.js index a0edf64..b4703d6 100644 --- a/utils/model.js +++ b/utils/model.js @@ -245,6 +245,25 @@ module.exports.createClass = function(model) { } } + ret.prototype.toJSON = function() { + let json = {}; + for (let field of model.fields) { + json[field.name] = this[field.name] + } + return json; + } + + ret.fromJSON = function(json) { + let result = new ret(); + + for (let field of model.fields) { + result[field.name] = json[field.name]; + } + result._persisted = false; + + return result; + } + ret.prototype.save = function(callback = () => {}) { let fieldsToSave = []; for (let field of model.fields) {