3

私は財務の足場を持っていますが、/finances/1/edit にアクセスすることで、ログインしているユーザーなら誰でも編集できることに気付きました

activ_admin gem をインストールしましたが、必要なものではないと思います。管理者 (または一部のユーザー) 以外の誰も財務リソース タイプを編集できないようにする方法 - I

編集 - https://github.com/EppO/rolifyを見つけましたが、これが最善の選択肢ですか、それともやり過ぎかもしれないので、もっと良いことができますか?

編集 1 - 私はこのhttps://github.com/EppO/rolify/wiki/Tutorialを実行し、役割「管理者」を user = User.find(1) に割り当てました。すべてが「ability.can? :manage」までうまくいきました, :all" をコンソールに表示すると、ユーザー 1 に対して TRUE が表示され、他のユーザーに対しては False が表示されます。今、私は何をすべきか理解できませんか?Finance.rb モデルに「resourcify」を追加したにもかかわらず、すべてのユーザーがページを編集できることがわかります。助けはありますか?

4

3 に答える 3

3

モデルがどのように設定されているかわかりませんが、Userモデルに管理者列があるとしましょう。次のことができます。

FinancesController < ApplicationController
  before_filter :must_be_admin, only: :edit

  def edit
    ...
  end

  private

  def must_be_admin
    unless current_user && current_user.admin?
      redirect_to root_path, notice: "Some message"
    end
  end
end

before フィルターに必要なアクションを追加できます。before_filter :must_be_admin, only: [:edit, :destroy]

于 2013-04-17T05:46:55.397 に答える
3

まあ、私は自分のプロジェクトで個人的に rolify を使用しており、気に入っています..しかし、正直なところ、User モデルに列「admin」を追加し、デフォルトを false にするだけで、これを実現するのは非常に簡単です。ユーザーを管理者にしたい場合は、属性を true に更新し、財務編集アクションにアクセスするために User.admin==true を要求します。これを行うには、管理者以外のユーザーをコントローラーからリダイレクトします (財務編集アクション)

ちなみに、認証にdeviseを使用している場合は、Devise before_filter authenticate_admin?をチェックしてください。

于 2013-04-17T05:47:12.583 に答える
2

独自のソリューションを展開せずに適切なユーザー認証を追加することを検討している場合は、CanCanを確認してください。また、作者の Ryan Bates によるこのスクリーンキャストも役に立ちます。

于 2013-04-17T05:44:44.917 に答える