根据用户角色隐藏带把手的元素

时间:2017-04-06 08:58:17

标签: jquery node.js handlebars.js passport.js roles

我目前在我的项目中有两个可能的用户,即雇主和候选人。

var User = new Schema({
    role:String
});

我的手柄页面上有某些元素,我想隐藏这些元素,具体取决于登录用户。这些元素只是字体很棒的图标和按钮。有没有办法用帮助器或其他东西做这个?或者也许jQuery我不确定,我使用Passport.js作为我的登录系统。

2 个答案:

答案 0 :(得分:1)

猜测你渲染页面并注入“用户”变量,这很容易做到。

如果语句为真,您可以使用if语句呈现代码块

I found this link that explains it really well.

第一个选项

Here's a complete answer that should help you do what you want to do. (这是它的说法:)。

  

最简单的方法是添加自定义if_eq帮助程序:

Handlebars.registerHelper('if_eq', function(a, b, opts) {
    if(a == b) // Or === depending on your needs
        return opts.fn(this);
    else
        return opts.inverse(this); }); and then adjust your template:

{{#if_eq this "some message"}}
    ... {{else}}
    ... {{/if_eq}} 
  

演示:http://jsfiddle.net/ambiguous/d4adQ/

     

如果你的错误条目不是简单的字符串,那么你可以添加“是   这个消息“标记给他们并使用标准{{#if}}(请注意   直接向字符串添加属性将无法正常工作):

     

for(var i = 0; i< errors.length; ++ i)       errors [i] = {msg:errors [i],is_status:errors [i] ==='some message'};和

{{#if is_status}}
    <li>Status</li> {{else}}
    <li>{{msg}}</li> {{/if}}
  

演示:http://jsfiddle.net/ambiguous/9sFm7/

第二个选项

使用Elving的Swag Handlebars helpers library,您可以使用帮助isisnt单击文档链接

两个例子

<强>是

  

如果条件为真,则有条件地渲染块。

     

参数:

value [string|int] - the value to test against.
  

用法:

number = 5

{{#is number 5}}
    Kiss my shiny metal ass!
{{else}}
    Never mind :(
{{/is}}

=> Kiss my shiny metal ass!

<强>心不是

  

如果条件为假,则有条件地渲染块。的反面   是

     

参数:

value [string|int] - the value to test against.
  

用法:

number = 5

{{#isnt number 5}}
    Kiss my shiny metal ass!
{{else}}
    Never mind :(
{{/isnt}}

=> Never mind :(

答案 1 :(得分:1)

   {{#ifeq user.role 'admin'}} this will show only if user is admin {{/ifeq}}

要注意的一点是,只有当角色是字符串类型时才会起作用。