如果你想创建用户注册验证链接,但不使用内置的用户模式,那么你需要创建验证令牌,然后发送链接。我已经添加了这两种方法。你还需要使用远程方法和一个争论谁是对象类型:在您需要使用寄存器email.the方法发送的参数是这样的....在这里我们使用用户=任何变量名,modelN =型号名称
modelN.sendVerificationEmail = function (data, callback) {
var user = loopback.models.modelN;
if (!data.email) {
return callback(commonUtils.buildError(
'Recipient email is required.', 400, 'EMAIL_REQUIRED'
));
}
if (!emailValidator.validate(data.email)) {
return callback(commonUtils.buildError(
'Must provide a valid email.', 400, 'INVALID_EMAIL'
));
}
var findOneuserPromise
= modelN.findOne({ 'where': { 'email': data.email }});
findOneBusinessEmployeePromise.then(function (user) {
if (!user) {
return callback();
}
var sendVerificationEmailPromise
= anothermodelname.sendVerificationEmail(user.id);
sendVerificationEmailPromise.then(function() {
callback();
});
sendVerificationEmailPromise.then(null, function (error) {
callback(error);
});
});
findOneuserPromise.then(null, function (error) {
callback(error);
});
};
我有加另一种模型模型的方法,然后添加此,....
anothermodelname.sendVerificationEmail = function (userid) {
var modelN = loopback.models.modelN;
var Email = loopback.models.Email;
var deferred = Q.defer();
var findByIduserPromise = modelN.findById(userId);
findByIduserPromise.then(function (user) {
if (!user) {
return deferred.reject(commonUtils.buildError(
'Unknown "modelN" id "' + userId + '".',
404, 'MODEL_NOT_FOUND'
));
}
if (!user.verificationToken) {
return deferred.resolve(true);
}
modelN.generateVerificationToken(user,
function (verificationTokenError, verificationToken) {
if (verificationTokenError) {
return deferred.reject(verificationTokenError);
}
user.verificationToken = verificationToken;
var saveuserPromise = user.save();
saveuserPromise.then(function (updateduser) {
var link = emailConf.clientBaseUrl +
emailConf.verifyEmailRedirect + '?uid=' +
updateduser.id + '&token=' +
updateduser.verificationToken;
console.log("check+link:",link);
/*eslint camelcase: [0, {properties: "never"}]*/
emailOptions.to = updateduser.email;
emailOptions.template = { 'name': 'verify' };
emailOptions.global_merge_vars = [];
emailOptions.global_merge_vars.push({
'name': 'USER_NAME',
'content': updateduser.name
|| updateduser.username || updateduser.email
});
emailOptions.global_merge_vars.push({
'name': 'LINK',
'content': link
});
Email.send(emailOptions, function() {});
deferred.resolve(true);
});
saveuserPromise.then(null, function (error) {
deferred.reject(error);
});
});
});
findByIduserPromise.then(null, function (error) {
deferred.reject(error);
});
return deferred.promise;
};
我正在建立一个电子商务xample回购这些类型的问题,因为它经常出现。您可以通过https://github.com/strongloop/loopback-faq-user-management查看我现在拥有的内容。目前尚未完成,但我希望在周五之前完成。 – superkhau 2014-12-04 08:10:35
听起来不错。期待它。 – user2483431 2014-12-04 08:30:22
示例已完成,请提出答案。 – superkhau 2014-12-10 08:09:40