gpt4 book ai didi

node.js - 用户权限 - 在 View 中显示编辑(快速、 Handlebars )

转载 作者:搜寻专家 更新时间:2023-11-01 00:42:26 24 4
gpt4 key购买 nike

目前我有使用 Handlbars 呈现的用户配置文件:

exports.profile = function(req, res) {
User.findOne({username: req.params.username}).exec(function(err, user){
res.render('profile/view', {
user: req.user,
name: user.name,
username: user.username
});
});
};

profile/view 呈现的模板上,我想显示一个编辑按钮if 用户可以编辑正在查看的配置文件。

<a href="/edit/usernamehere">Edit your profile here</a>

附加信息:

  • 我们当前使用护照本地策略验证的每个用户
  • 目前在路由上有一些基本的中间件

中间件

app.get('/:username', isAuth, user.profile);

function isAuth(req, res, next) {
if (req.isAuthenticated()) {
return next();
}
req.flash('alert', 'First you need to log in');
res.redirect('/login');
}

我研究过 express 的中间件,例如 connect-roles我认为这不是我需要的?

我在想的是,我应该在 res.render() 方法的局部变量中传递一个 bool 值,这样我就可以使用 handle 来显示或不显示按钮。

{{#if profileOwner }}<a href="#">...

有什么想法吗?

最佳答案

我认为最好的方法是创建一个帮助程序来检查 userCan 是否适合您。这里的助手:

Handlebars.registerHelper('ifUserCan', function(action, options) {
var actions = action.split(/\s*,\s*/);

for (var i = 0; i < actions.length; i++) {
if (this.userCan(actions[i])) {
return options.fn(this);
}
}
return options.inverse(this);
});

您可以按如下方式使用它:

{{#ifUserCan 'show all store categories'}}
<li><a href="/categories">{{__ 'Show categories'}}</a></li>
{{/ifUserCan}}

关于node.js - 用户权限 - 在 View 中显示编辑(快速、 Handlebars ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30007366/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com