2013-06-11 78 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。 –