我正在为一家配置了许多组的公司制作一个Stormpath-Express应用程序。每个组只能看到页面上的某些元素(即。管理员可以删除和批准帖子,用户只能创建和编辑它们)。是否可以使用Jade创建一个条件,通过获取用户的组成员资格来显示组件?
这里有一个粗略的例子来说明我的意思:
if user.admin === true
a.btn.submit Approve Post
else
p Please wait for management to approve我注意到我可以使用user.fullName、user.email等,但不能使用user.directory。
我还通过服务器端使用getDirectory方法进行了尝试。
client.getDirectory(href, function(err, dir) {
console.log(dir);
});然而,这是来自Node文档,当应用到项目时会中断。在这方面的任何帮助都是非常感谢的,因为我在最后期限!
发布于 2015-07-17 12:00:45
多亏了rdegges的回答,我不得不用1.0.5版本的快递-stormpath进行修改,因为groups属性用于存储uri以检索组.
app.get('/page', stormpath.loginRequired, function(req, res) {
req.user.groupsNames = [];
req.user.getGroups(function(err, groups) {
if (err) return next(err);
groups.each(function(group, cb) {
req.user.groupsNames.push(group.name);
cb();
}, function(err) {
if (err) return next(err);
return res.render('myview');
});
});
});玉石模板看起来像..。
- if (user.groupNames.indexOf('admin') > -1)
a.btn.submit Approve Post
- else
p Please wait for management to approve发布于 2015-06-28 20:41:54
嘿,我是快速路图书馆的作者,我想我应该跳到这里来。
实际上,我将在不久的将来添加一些新的方法来实现这一点--但现在,您可以做的是将用户组预加载到一个数组中,然后检查成员资格。下面是一个例子:
app.get('/page', stormpath.loginRequired, function(req, res) {
req.user.groups = [];
req.user.getGroups(function(err, groups) {
if (err) return next(err);
groups.each(function(group, cb) {
req.user.groups.push(group);
cb();
}, function(err) {
if (err) return next(err);
return res.render('myview');
});
});
});既然已经定义了req.user.groups,那么就可以在Jade模板中使用它了,如下所示:
- if (user.groups.indexOf('admin') > -1)
a.btn.submit Approve Post
- else
p Please wait for management to approvehttps://stackoverflow.com/questions/31101983
复制相似问题