2013-06-11 35 views
1

我在redmine上写了一个插件。我将项目和用户权限交给我的插件来访问redmine页面中的按钮。检查轨道上的权限查看

我想要的:只有

显示一个按钮,当用户和项目有权这样做。

下面我的代码:

_navigation.html.erb

<% if ?????? -%> Here is the codition where display or not the button. 
    <div style="float: left; width: auto; padding-right: 1%"> 
    <%= button_to_function l(:gerar_build_project), remote_function(:action => 'printar', :controller => 'GerarVersao')%> 
    </div> 
<% end -%> 

init.rb

permission :view_repository, :gerar_versao_projeto => :exec_client 

    project_module :gerar_versao_projeto do 
    permission :view_repository, :gerar_versao_projeto => :exec_client 
    end 

gerar_versao_controller.rb

before_filter :find_project, :authorize, :only => :exec_client 

def exec_client 
. 
. 
. 
end 

private 

def find_project 
    @project = Project.find(params[:project_id]) 
end 

因此,任何人都知道我必须在我的如果,只有当用户或项目有权限时才显示按钮?

谢谢。

回答

0

我自己解决了这个问题。答案很简单。我只是跟着谚语“在生活中没有什么是创造了一切被复制” :)和复制从管理平台一个现有的代码列出如下:

<% if User.current.allowed_to?(:view_repository, @project) -%> 

有了这个“如果”我检查,如果用户被允许在项目中查看我的按钮。需要注意的是:view_repository是我已经提出的许可。

有关解决方案的问题,请随时讨论。

此致敬意!

0

您可以在模型中添加自定义的方法来判断是否允许该用户

# model 
def permittable? 
    he_is_in_some_types_say_exec_client ? true :false 
end 

然后在视图中,调用此方法在当前用户。

# view 
<% if current_user.permittable? %> 
    <%= show_something %> 
<% end %> 
+0

呃,这个答案对我来说并不清楚。将该方法添加到哪个模型中?我如何检查用户是否被允许?并与项目?照着做? – kamusett

+0

@ user2195342,它在用户模型上,您可以看到该方法在用户实例上调用。对于任何其他标准,它们是相似的,只需在用户上调用一个方法来查看它是否返回true。 –