Вот мой текущий фрагмент.Вам необходимо добавить пользовательский удаленный метод в файл common/models/account.js
(или любое другое имя, которое вы выберете), где ваша Account
Модель наследует встроенную User
Модель:
module.exports = function (Account) {
Account.createAndLogin = function (data, cb) {
if (!data || !data.password) {
return cb(new Error("Attribute 'password' is mandatory to create a new user."));
}
Account.create(data, function (err, account) {
if (err) {
return cb(err, null);
}
Account.login({email: data.email, password: data.password}, function (err, token) {
if (err) {
return cb(err, null);
}
cb(err, {
id: token.id,
ttl: token.ttl,
created: token.created,
userId: token.userId,
account: account
});
});
});
};
Account.remoteMethod('createAndLogin', {
description: "Create and login in one remote method",
accepts: {arg: 'data', type: 'object', required: true, http: {source: 'body'}, description: 'Model instance data'},
returns: {arg: 'accessToken', type: 'object', root: true, description: 'User Model'},
http: {verb: 'post'}
});
};
Редактировать: Поскольку модель Account
наследует встроенную модель User
, вам необходимо открыть списки контроля доступа ( ACL ) для $ каждого .
Итак, ваш файл common/models/account.json
должен выглядеть следующим образом:
{
"name": "Account",
"base": "User",
"idInjection": true,
"properties": {},
"validations": [],
"relations": {},
"acls": [
{
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "ALLOW",
"property": "createAndLogin"
}
],
"methods": []
}