新しいリソースを現在のユーザーに自動的に割り当てる(ログインしていることを確認する)ことができるように、また現在のユーザーが現在のユーザーユーザーはリソースを所有していますか?現在のユーザーのデフォルト所有権を持つ新しいリソース
これは設定によって可能ですか、コントローラの各動作を無効にする必要がありますか?
はもともとここに掲載 - https://github.com/Sylius/Sylius/issues/5907
新しいリソースを現在のユーザーに自動的に割り当てる(ログインしていることを確認する)ことができるように、また現在のユーザーが現在のユーザーユーザーはリソースを所有していますか?現在のユーザーのデフォルト所有権を持つ新しいリソース
これは設定によって可能ですか、コントローラの各動作を無効にする必要がありますか?
はもともとここに掲載 - https://github.com/Sylius/Sylius/issues/5907
要約すると:
あなたは2つのケースがあると理解していました。 まず、所有リソースを作成します。 ベスト・アプローチは、現在ログインしているユーザーを判別するためにUserContextを注入するデフォルトのリソース・ファクトリーをデコレートすることです。または、ファクトリメソッドに2番目の引数として渡します。
もう1つはリソースを更新することです。所有者だけにリソースの編集を許可したいのですか?いくつかのリポジトリメソッドは、リソースIDだけでなく、現在のユーザーも受け取ってジョブを実行します。次に、findByIdAndCustomerメソッドがあるので、許可されたユーザーだけが編集ページにアクセスできます。それ以外の場合は、エラーが表示されます。これは404だと思います。
これが望ましい場合は、2つのオーバーライドされたリソース(カスタムファクトリとリポジトリ)になり、ルーティングを定義するときにyamlでrestを処理する必要があります。コントローラーを変更する必要はありません。両方のアプローチの
いくつかの比較:
どちらも正しいです。 IMHOは最初に速く、2つ目はよりクリーンです。あなたが必要とするものを決めるだけ
をあなたはそのためのコントローラによってトリガされるイベントを使用することができます。ここをクリックしてください:http://docs.sylius.org/en/latest/bundles/general/events.html
リスナーでは、ユーザがログインしているかどうかを確認するためのsecurity.context
サービスを注入する必要があります。
編集:@Łukaszさんの答えをご覧ください。これには、より洗練された代替方法が含まれています。 ;)
Pawełもイベントを勧めていますが、私も最初ですが、Łukaszは工場やレポジトリのオーバーライドを提案していました。
私はそれらの両方が正しいとオリジナルのポスターが彼の目標を達成するのを助けるが、私は両方の背後にある議論が何か疑問に思います。
このコメントの唯一の目的は、これら2つのソリューションの議論です。