1

この記事に従って、リポジトリコントローラーを新しい機能で拡張しようとしています: http://www.redmine.org/projects/redmine/wiki/Plugin_Internals

すべてが正しく機能しているようですが、拡張機能を呼び出すボタンをクリックすると、次のエラーが発生します。

フィルタ チェーンが次のように停止しました:authorize のレンダリングまたはリダイレクト完了 403 Forbidden in 5ms (ActiveRecord: 2.0ms)

私の関連コードに従ってください。

lib/client に client.rb を作成

require_dependency 'repositories_controller'

module RepositoriesPatch
    def self.included(base)

      base.send(:include, InstanceMethods)
    end

    module InstanceMethods
        def exec_client
          [...]
        end
    end
end

Repository.send(:include, RepositoriesPatch)

init.rb

#encoding: utf-8

require_dependency 'client/client'

Redmine::Plugin.register :gerar_versao_projeto do
  name 'Gerar Versão Projeto'
  [...]

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

  Rails.configuration.to_prepare do 
   RepositoriesController.send(:include, RepositoriesPatch)
  end
end

ルート.rb

match '/projects/:id/repository', :action => 'exec_client', :controller => 'repositories', :via => :post

私の見解では、以下に示すように関数 exec_client を呼び出します。

<%= button_to_function l(:gerar_build_project), remote_function(:action => 'exec_client', :controller => 'repositories')%>

誰かが興味を持っている場合、以下は完全なログエラーです:

Started POST "/projects/teste1/repository" for 127.0.0.1 at 2013-07-19 16:51:53 -0300
Processing by RepositoriesController#exec_client as JS
  Parameters: {"authenticity_token"=>"9JifnciRmiVCbf5uFWWGmSeePp4m0IM74UR10kGemHA=", "id"=>"teste1"}
  ←[1m←[35m (0.0ms)←[0m  SELECT MAX(`settings`.`updated_on`) AS max_id FROM `settings`
  ←[1m←[36mUser Load (0.0ms)←[0m  ←[1mSELECT `users`.* FROM `users` WHERE `users`.`type` IN ('User', 'AnonymousUser') AND `users`.`id` = 1 AND (us
ers.status = 1) LIMIT 1←[0m
  ←[1m←[35mProject Load (0.0ms)←[0m  SELECT `projects`.* FROM `projects` WHERE `projects`.`identifier` = 'teste1' LIMIT 1
  ←[1m←[36mRepository Load (0.0ms)←[0m  ←[1mSELECT `repositories`.* FROM `repositories` WHERE `repositories`.`project_id` = 1 AND (is_default = 1)
 LIMIT 1←[0m
  ←[1m←[35mEnabledModule Load (0.0ms)←[0m  SELECT name FROM `enabled_modules` WHERE `enabled_modules`.`project_id` = 1
Filter chain halted as :authorize rendered or redirected
Completed 403 Forbidden in 6ms (ActiveRecord: 0.0ms)

何がうまくいかないのですか?

4

2 に答える 2

1

私は質問を解決しました。

私が気付いたように、問題は関数を実行する許可にありました。

関数を実行するためのアクセス許可を init.rb に追加しました (以下のコードを参照)。

  permission :repositories, :repositories => :exec_client

上記の他のパーミッション (init.rb コードを参照) は、関数を実行するパーミッションに直接リンクされていない別のものです。その些細なことが私に大きな問題を引き起こしました。

これが誰かに役立つことを願っています。答えについて質問がある場合は、反論してください。;)

ありがとう!

于 2013-07-24T20:28:07.883 に答える