問題タブ [rolify]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
100 参照

ruby-on-rails - 最小限のアクセス許可を確認し、DRY の方法ですべての親ロールのアクセス許可を許可するにはどうすればよいですか?

、、、、の 4 つの役割がuserあるagentadminsuperadminます。

各ロールは、その後、アプリ内のすべてのオブジェクトに対してより多くの権限を持ちます。

Rolify、CanCan、Devise を使用しています。

私がやりたいことは、何かを有効にしたいときはいつでも-言うことです:

adminその人が であるか であるかをそのリンクに表示したいと思いsuperadminます。単純に||- を実行できることはわかっていますが、特にcurrent_user.has_role? :superadmin || current_user.has_role? :admin.

agent, admin & superadminアクセスしたいリンク/アセットがいくつかあると想像してください。

これを DRY で行うにはどうすればよいですか?

0 投票する
1 に答える
1524 参照

ruby-on-rails - ユーザーモデルにリソースが定義されている場合、with_all_rolesが機能しないことを確認します

ユーザーモデルからモデレーターのリストを取得したいのですが、この場合は機能します

しかし、このようにユーザーモデルにリソースを割り当てると、ロールモデレーターを持つユーザーが一覧表示されません

アップデート

post.rb

user.rb

0 投票する
2 に答える
1081 参照

ruby-on-rails - 1 つの rspec ロール テストが失敗するが、ほぼ同じテストが成功する

Rolify gemを追加したばかりで、いくつかの rspec テストを実行しています。

2つのテストは次のとおりです。

テスト結果は次のとおりです。

factory.rb

最初のテストは nil オブジェクトで失敗するのに、2 番目のテストは成功するのはなぜですか?

編集

さらに検査すると、追加されたロールがチェックされたロールと一致するかどうかに関係なく、すべてのテストにshould be_true合格し、すべてのテストに失敗します。should be_false

0 投票する
1 に答える
621 参照

ruby-on-rails - CanCan accessively_by は仕様とコントローラーで異なる応答を返します

Farmモデルのユーザー認証をテストしようとしています。この場合は、ログイン時にすべてのファームへの読み取り:userアクセス権を持つロールです (ゲスト ユーザー aka. anonymous もそうです)。

...

...

問題

調べてみると、のみfarms_json含まれていることがわかります。を調べると、と の両方含まれていることがわかります。仕様とアクションの両方で同じメソッドを使用しているため、これは奇妙です。私が使用するセットアップは、 Fetching Recordsというタイトルの CanCan gem の wiki で説明されています。Testfarmlast_responseTestfarm Access deniedaccessible_byindex

役に立たない回避策

userファームにユーザーを追加するAccess deniedと...

...その後、テストは成功します。

質問

  1. すべてのユーザー (ゲスト ユーザーを含む) が読み取ることができるにもかかわらず、「アクセスが拒否されました」ファームが返されないのはなぜですか?
  2. get "#{url}.json"実際にユーザーのステータスを考慮していますか? これはすべて によって行われload_and_authorize_resourceますFarmsControllerか?
  3. ウィキは、「これはindex アクション@farms = Farm.accessible_by(current_ability, :read)によって自動的に行われる」ため、省略できると述べています。load_resourceこれは私の状況に当てはまりますか?

実験

別のユーザー「user2」と別のファーム「My little farm」を作成しました。それらを相互にリンクしました。このようにして、例のデータベースには 3 つのファームがすべて含まれています。

  • user1 に関連付けられたファーム「Testfarm」
  • ユーザーに関連付けられていないファーム「アクセスが拒否されました」
  • user2 に関連付けられたファーム「My little farm」。

実行するFarm.accessible_by(Ability.new(user1), :read)と、まだ「Testfarm」しか表示されません。

0 投票する
1 に答える
259 参照

ruby-on-rails - ユーザーと場所の作成時に管理者を割り当てる

ユーザー サインアップ用のネストされたモデル フォームがあり、ユーザーと場所を同時に作成します。ロケーションを作成したユーザーに管理者ロールが自動的に割り当てられるようにします。私はdevise/cancan/rolifyを使っています。これを行う方法についてのアイデアはありますか?

能力モデル

ロケーションモデル

ユーザーモデル

ロールモデル

最後に、サインアップ用のフォーム

0 投票する
1 に答える
892 参照

ruby-on-rails - CanCan/Rolify: モデルのユーザーの読み取りアクセスが拒否されました

CanCanroifyを使用して、Farm モデルのアクセス権をセットアップします。

ここにリストされているいくつかのテスト データをアプリケーションにシードします。

Rails コンソールで次のコマンドを実行して、ユーザーがアクセスできる (読み取り専用) ファームを確認します。

user1 にはロールが割り当てられていないことに注意してください。

質問:で定義されているように、user2 がすべてのファームにアクセスできないのはなぜability.rbですか?

0 投票する
1 に答える
616 参照

ruby-on-rails - Rails Composer、Devise、CanCan、Twitter Bootstrap にロールを追加する

Rails Composer、Devise、CanCan、Twitter Bootstrapで始めたアプリを作っています。

能力モデルを使用してユーザーのアクセス許可を設定する方法を知っています。特定の権限を付与するロールを追加するにはどうすればよいですか?

0 投票する
4 に答える
2880 参照

ruby-on-rails - Devise / Rolify / CanCan 2.0:ユーザーがユーザーの役割を変更できないようにする

認証にはDeviseを使用し、役割管理にはRolifyを使用し、承認にはCanCan2.0を使用しています。

:adminロールがユーザーのロールを変更できるようにしようとしていますが、他のすべてのユーザーのアクセスを禁止しています。

これが私が試したが機能していないものです:

ユーザーフォームに意図的に関連付けを残しました。

コントローラ

およびモデル:

ここで、:moderatorの役割を持つユーザーが、別のユーザー(または自分の)の役割を変更しようとすると、次のようになります。

  1. CanCan :: Unauthorized例外がスローされ、ユーザーはroot_urlにリダイレクトされます
  2. ユーザーの役割が変更されます

私は混乱しています。例外が発生した場合、なぜ変更がまだ行われているのですか?私はおそらく非常に間違ったことをしています:)

users_controller.rbのユーザーの役割に応じてクエリパラメータを操作しようとしました。defupdateの直後にログステートメントを配置すると、次のように出力されます。

私は何かを見落としているに違いない...

0 投票する
1 に答える
313 参照

ruby-on-rails-3 - has_and_belongs_to_many 関係を持つ Cancan & Rolify でユーザーにアクセスを許可します

多くのエージェントを持つパートナーのリソースと、多くのエージェントを持つユーザーを取得しました。

Cancan&RolifyでPartenaireごとにアクセスを制限したい。

私が見つけた唯一のハックは、user.agence_idsとpartenaire.agence_idsの配列サイズを評価し、それが1以上であるかどうかを評価して、ユーザーがPartenaireにアクセスできるようにすることです。

カスタム アクションを実行して、Index ビューを Partenaires_controller にフィルター処理しました。

パートナーとユーザーが少なくとも 1 つのエージェントを共有している場合、ユーザーにアクセスを許可することは可能ですか?

Partenaires_controller.rb

ユーザー.rb

Agence.rb

Partenaire.rb

0 投票する
1 に答える
53 参照

ruby-on-rails - 役割に製品の価格が表示されないように制限するにはどうすればよいですか?

Productモデルがあり、ユーザーがロールとしてログインしているか、ログインしていguestない場合、アプリで商品の価格を表示できないようにします。

Devise、CanCan、Rolifyを使用しています。

私はこれを試しましたability.rb

しかし、それはうまくいかないようです。ビューにコードを追加していません-それを行う必要がありますか、それともこのabilityクラスは価格をまったく表示しない必要がありますか?