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 -%>

初始化.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

因此,任何人都知道我必须在我的 if 中添加什么,以便仅在用户或项目有权访问该按钮时才显示该按钮?

谢谢你。

4

2 回答 2

1

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

# model
def permittable?
  he_is_in_some_types_say_exec_client ? true :false
end

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

# view
<% if current_user.permittable? %>
   <%= show_something %>
<% end %>
于 2013-06-11T17:35:39.200 回答
0

我自己解决了这个问题。答案很简单。我只是遵循谚语“在生活中什么都没有创造一切都被复制”:) 并从 redmine 复制了一个现有代码,如下所示:

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

通过这个“如果”,我检查是否允许用户在项目中查看我的按钮。重要的是要注意 :view_repository 是我放的权限。

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

最好的问候和感谢!

于 2013-06-11T21:18:17.403 回答