質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

1回答

185閲覧

rails submitボタンからのアクセスを拒否する

trrn2011

総合スコア28

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

1クリップ

投稿2019/03/05 15:11

仕様

投稿にお金がかかるサイトを作成してます。
・普通のユーザーはpaypalAPIを通して投稿する
・定額プランを契約しているユーザーはpaypalを挟まず普通に投稿できる
という仕様です。

viewをuser.planの真偽に応じて条件分岐させてフォームを作っています。

<% if user.plan.exists? %> <%= f.button 'イベント作成' %> <% else %> <div class="paypal_modal_trigger">イベント作成</div> <% end %>

class="paypal_modal_trigger" のボタンを押すとpaypalの決済ボタンが現れる仕様です。

問題点

プラン未契約の場合でもデベロッパーツールを使ってサブミットボタンを偽造できてしまい、そのままpost#createコントローラーを叩けてしまうことが判明しました。

なのでプラン未契約の場合はsubmitボタンからの投稿を拒否できるようにしたいのですがどのような実装をするのがよいのか検討もつきません。。。

丸投げで申し訳ないですがある程度調べたのに何も解決策が見出せずに質問させていただきます。
よろしくお願いします!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

trrn2011

2019/03/06 05:56

補足です Paypalの仕様上post#createは使わなければいけません
guest

回答1

0

送信を受けたcreateアクションの中で、user.planをチェックして適当でなければforbiddenなどを返して抜けてしまう、という形を取ればいいのではないでしょうか。

投稿2019/03/06 01:14

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

trrn2011

2019/03/06 05:55

解答ありがとうございます! 説明不足でしたが、paypalの仕様でcreateアクションを使わなければいけないんです、、
maisumakun

2019/03/06 06:04

createに来てからチェックする、のですから、createアクションは使うままだと思うのですが。
trrn2011

2019/03/06 10:26

Paypalを通してcrateアクションに飛んだ場合はuser.planがなくても投稿できるようにしたいです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問