Как упоминалось ранее, я главный архитектор Апострофа на Пунк-авеню.
Коллекция aposUsersSafe
предназначена для хранения хэшей паролей и денормализованных копий только нескольких тесно связанных свойств. Обычно вам никогда не нужно взаимодействовать с ним напрямую. Как и все другие документы в Apostrophe, пользователи живут в aposDocs
коллекции. И лучше всего взаимодействовать с ними с помощью методов, предоставляемых модулем, который управляет этим типом элементов. В данном случае это будет apos.users
(модуль apostrophe-users
).
Оцените этот метод; это слегка переработано по сравнению с addFromTask
методом apostrophe-users
, который реализует добавление пользователей, а также добавляет их в группу, что вы почти наверняка захотите сделать.
Здесь нет кода для хеширования пароля, потому что insert
метод apos.users
сделает это за нас.
self.addUser = function(req, username, password, groupname, callback) {
// find the group
return self.apos.groups.find(req, { title: groupname }).permission(false).toObject(function(err, group) {
if (err) {
return callback(err);
}
if (!group) {
return callback('That group does not exist.');
}
return self.apos.users.insert(req, {
username: username,
password: password,
title: username,
firstName: username,
groupIds: [ group._id ]
}, { permissions: false }, callback);
});
};
permission(false)
вызывается для курсора, и для вставки передается объект параметров с { permissions: false }
, потому что я предполагаю, что вы хотите, чтобы это произошло в этот момент независимо от того, кто его запускает.
Я рекомендую прочитать это руководство по слою модели Apostrophe, чтобы получить прочную основу в как без проблем работать с типами контента Apostrophe. Вы можете использовать MongoDB напрямую, но вы должны знать, когда это делать, а когда нет.
Вы можете передать больше свойств при вставке пользователя; это всего лишь минимум для разумного поведения.
Что касается вызова метода, если бы вы добавили его в lib/modules/apostrophe-users/index.js
на уровне проекта внутри construct
, вы могли бы вызвать его так из промежуточного программного обеспечения:
return self.apos.users.addUser(req, username, password, groupname, function(err, newUser) {
if (err) {
// Handle the error as you see fit, one way is a 403 forbidden response
res.statusCode = 403;
return res.send('forbidden');
}
// newUser is the new user. You could log them in and redirect,
// with code I gave you elsewhere, or continue request:
return next();
});
Надеюсь, это будет полезно!
person
Tom Boutell
schedule
03.10.2016