問題タブ [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.
ruby-on-rails - 最小限のアクセス許可を確認し、DRY の方法ですべての親ロールのアクセス許可を許可するにはどうすればよいですか?
、、、、の 4 つの役割がuser
あるagent
とadmin
しsuperadmin
ます。
各ロールは、その後、アプリ内のすべてのオブジェクトに対してより多くの権限を持ちます。
Rolify、CanCan、Devise を使用しています。
私がやりたいことは、何かを有効にしたいときはいつでも-言うことです:
admin
その人が であるか であるかをそのリンクに表示したいと思いsuperadmin
ます。単純に||
- を実行できることはわかっていますが、特にcurrent_user.has_role? :superadmin || current_user.has_role? :admin
.
agent, admin & superadmin
アクセスしたいリンク/アセットがいくつかあると想像してください。
これを DRY で行うにはどうすればよいですか?
ruby-on-rails - ユーザーモデルにリソースが定義されている場合、with_all_rolesが機能しないことを確認します
ユーザーモデルからモデレーターのリストを取得したいのですが、この場合は機能します
しかし、このようにユーザーモデルにリソースを割り当てると、ロールモデレーターを持つユーザーが一覧表示されません
アップデート
post.rb
user.rb
ruby-on-rails - 1 つの rspec ロール テストが失敗するが、ほぼ同じテストが成功する
Rolify gemを追加したばかりで、いくつかの rspec テストを実行しています。
2つのテストは次のとおりです。
テスト結果は次のとおりです。
factory.rb
最初のテストは nil オブジェクトで失敗するのに、2 番目のテストは成功するのはなぜですか?
編集
さらに検査すると、追加されたロールがチェックされたロールと一致するかどうかに関係なく、すべてのテストにshould be_true
合格し、すべてのテストに失敗します。should be_false
ruby-on-rails - CanCan accessively_by は仕様とコントローラーで異なる応答を返します
Farm
モデルのユーザー認証をテストしようとしています。この場合は、ログイン時にすべてのファームへの読み取り:user
アクセス権を持つロールです (ゲスト ユーザー aka. anonymous もそうです)。
...
...
問題
調べてみると、のみがfarms_json
含まれていることがわかります。を調べると、と の両方が含まれていることがわかります。仕様とアクションの両方で同じメソッドを使用しているため、これは奇妙です。私が使用するセットアップは、 Fetching Recordsというタイトルの CanCan gem の wiki で説明されています。Testfarm
last_response
Testfarm
Access denied
accessible_by
index
役に立たない回避策
user
ファームにユーザーを追加するAccess denied
と...
...その後、テストは成功します。
質問
- すべてのユーザー (ゲスト ユーザーを含む) が読み取ることができるにもかかわらず、「アクセスが拒否されました」ファームが返されないのはなぜですか?
get "#{url}.json"
実際にユーザーのステータスを考慮していますか? これはすべて によって行われload_and_authorize_resource
ますFarmsController
か?- ウィキは、「これは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」しか表示されません。
ruby-on-rails - ユーザーと場所の作成時に管理者を割り当てる
ユーザー サインアップ用のネストされたモデル フォームがあり、ユーザーと場所を同時に作成します。ロケーションを作成したユーザーに管理者ロールが自動的に割り当てられるようにします。私はdevise/cancan/rolifyを使っています。これを行う方法についてのアイデアはありますか?
能力モデル
ロケーションモデル
ユーザーモデル
ロールモデル
最後に、サインアップ用のフォーム
ruby-on-rails - Rails Composer、Devise、CanCan、Twitter Bootstrap にロールを追加する
Rails Composer、Devise、CanCan、Twitter Bootstrapで始めたアプリを作っています。
能力モデルを使用してユーザーのアクセス許可を設定する方法を知っています。特定の権限を付与するロールを追加するにはどうすればよいですか?
ruby-on-rails - Devise / Rolify / CanCan 2.0:ユーザーがユーザーの役割を変更できないようにする
認証にはDeviseを使用し、役割管理にはRolifyを使用し、承認にはCanCan2.0を使用しています。
:adminロールがユーザーのロールを変更できるようにしようとしていますが、他のすべてのユーザーのアクセスを禁止しています。
これが私が試したが機能していないものです:
ユーザーフォームに意図的に関連付けを残しました。
コントローラ
およびモデル:
ここで、:moderatorの役割を持つユーザーが、別のユーザー(または自分の)の役割を変更しようとすると、次のようになります。
- CanCan :: Unauthorized例外がスローされ、ユーザーはroot_urlにリダイレクトされます
- ユーザーの役割が変更されます
私は混乱しています。例外が発生した場合、なぜ変更がまだ行われているのですか?私はおそらく非常に間違ったことをしています:)
users_controller.rbのユーザーの役割に応じてクエリパラメータを操作しようとしました。defupdateの直後にログステートメントを配置すると、次のように出力されます。
私は何かを見落としているに違いない...
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
ruby-on-rails - 役割に製品の価格が表示されないように制限するにはどうすればよいですか?
Product
モデルがあり、ユーザーがロールとしてログインしているか、ログインしていguest
ない場合、アプリで商品の価格を表示できないようにします。
Devise、CanCan、Rolifyを使用しています。
私はこれを試しましたability.rb
:
しかし、それはうまくいかないようです。ビューにコードを追加していません-それを行う必要がありますか、それともこのability
クラスは価格をまったく表示しない必要がありますか?