Hello,
When using Model hook, I have the following exception :
/Users/IOSoftwareSAS/WebstormProjects/loopback-example-passport/common/models/user.js:11
It appears that Model hooks are deprecated.
Am I right ?
I have to say that :
2/ I am mixing passport local strategy with email verification so my server.js is :
app.post('/signup', function (req, res, next) {
var OrgUser = app.models.user;
var Org = app.models.Organization;
var newUser = {};
newUser.email = req.body.email.toLowerCase();
newUser.username = req.body.username.trim();
newUser.password = req.body.password;
newUser.realm = req.body.organizationName;
// Create an organization named as 'myRealm'
Org.create({organizationName: newUser.realm,useOfLdap : false}, function(err, org)
{
console.log(err, org);
// Create an user within the organization
org.orgUsers.create(newUser, function (err, user)
{
if (err)
{
req.flash('error', err.message);
return res.redirect('back');
}
})
});
});
app.get('/login', function (req, res, next){
res.render('pages/login', {
user: req.user,
url: req.url
});
});
app.get('/auth/logout', function (req, res, next) {
req.logout();
res.redirect('/');
});
app.start = function() {
// start the web server
return app.listen(function() {
app.emit('started');
var baseUrl = app.get('url').replace(/\/$/, '');
console.log('Web server listening at: %s', baseUrl);
if (app.get('loopback-component-explorer')) {
var explorerPath = app.get('loopback-component-explorer').mountPath;
console.log('Browse your REST API at %s%s', baseUrl, explorerPath);
}
});
};
// start the server if `$ node server.js`
if (require.main === module) {
app.start();
}
and my user.js is :
var config = require('../../server/config.json');
var path = require('path');
module.exports = function(user) {
//send verification email after registration
user.afterCreate=function(context, user, next) {
console.log('> user.afterRemote triggered');
var options = {
type: 'email',
to: user.email,
from: 'con...@io-software.fr',
subject: 'Thanks for registering.',
template: path.resolve(__dirname, '../../server/views/pages/verify.ejs'),
redirect: '/verified',
user: user
};
user.verify(options, function(err, response) {
if (err) return next(err);
console.log('> verification email sent:', response);
context.res.render('response', {
title: 'Signed up successfully',
content: 'Please check your email and click on the verification link ' +
'before logging in.',
redirectTo: '/',
redirectToLinkText: 'Log in'
});
});
};
//send password reset link when requested
user.on('resetPasswordRequest', function(info) {
var url = 'http://' + config.host + ':' + config.port + '/reset-password';
var html = 'Click <a href="' + url + '?access_token=' +
info.accessToken.id + '">here</a> to reset your password';
user.app.models.Email.send({
to: info.email,
from: info.email,
subject: 'Password reset',
html: html
}, function(err) {
if (err) return console.log('> error sending password reset email');
console.log('> sending password reset email to:', info.email);
});
});
}
Thanks for your help
Philippe