自动将用户添加到Apostrophe

时间:2016-10-03 15:05:23

标签: apostrophe-cms

我想扩展一个模块(或创建我自己的模块)以自动将用户添加到Apostrophe(aposUsersSafe集合)。

我没有在撇号用户模块中看到任何内置方法来执行此操作,并且正在寻找有关如何实现它的一些指导?谢谢!

1 个答案:

答案 0 :(得分:2)

如前所述,我是P'unk Avenue的Apostrophe的主要设计师。

aposUsersSafe集合仅用于存储密码哈希值和一些密切相关的属性的非规范化副本。您通常永远不需要直接与它进行交互。与Apostrophe中的所有其他文档一样,用户都位于aposDocs集合中。并且最好通过管理该类型的模块提供的方法与它们进行交互。在这种情况下,那将是apos.usersapostrophe-users模块)。

查看此方法;这是从addFromTask的{​​{1}}方法轻轻地重构的,它实现了添加用户并将它们添加到一个组中,你几乎肯定也想要这样做。

此处没有代码来散列密码,因为apostrophe-users的{​​{1}}方法会为我们执行此操作。

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); }); }; 的选项对象传递给insert,因为我假设您希望在此时发生这种情况,无论是谁触发它。

我建议reading this tutorial on Apostrophe's model layer为如何使用Apostrophe的内容类型奠定坚实的基础而不会遇到麻烦。您可以直接使用MongoDB,但是您必须知道何时执行此操作以及何时不使用。

插入用户时可以传递更多属性;这只是合理行为的最低限度。

至于调用方法,如果你要在permission(false)内的项目级别将它添加到{ permissions: false },那么你可以从中间件这样调用它:

lib/modules/apostrophe-users/index.js

希望这有用!