3

ユーザー アカウントのパスワードを使用して、ユーザーのアクションの一部を制限しようとしています。転送コントローラーがあり、ユーザーは転送コントローラーの create メソッドを使用して送金できます。

ユーザーが転送ボタンをクリックして転送を検証するたびにパスワードを要求したいのですが、Web 上でそれに関連するものを見つけることができませんでした。

ビューにパスワード フィールドを追加し、パスワードがユーザー アカウントのパスワードである場合にのみ転送を処理したいと考えています。

ユーザーアカウントの管理にdeviseを使用しています。

どうすればそれができますか?

ありがとう、

形 :

<%= form_for current_user.transfers.build do |f| %>
<div class="amount">
    <h5>Select an amount</h5>
    <div class="amount-btns">
        <a class="amount-btn" href="#"><span data-amount="10">10&#36;</span></a>
        <a class="amount-btn" href="#"><span data-amount="20">20&#36;</span></a>
        <a class="amount-btn" href="#"><span data-amount="30">30&#36;</span></a>
        <a class="amount-btn" href="#"><span data-amount="50">50&#36;</span></a>
        <%= f.hidden_field :amount, :id => :amount %>
        <%#= f.hidden_field :teen_id , :id => :user_id_auto_donation %>
    </div>
</div>
<div class="choose-amount">
    <div class="choose-amnt" action="#">
        <div class="form-row choose-lnk">
            <%= f.collection_select :teen_id, current_user.followed_users, :id, :first_name , include_blank: false, :prompt => 'Select a Teen' %>
        </div>

            <%= hidden_field_tag :no_card if !current_user.customer_id? %>
            <%= password_field(:password, :password, :size => 20, :class => 'form_input') %>
            <%= f.submit 'Send', :class => "orange-btn", :id => "send_donation"%>
<% end %>

Transfer_Controller :

def create
 Rails.logger.debug(params[:password])
 Rails.logger.debug(current_user.valid_password?(params[:password]))
if current_user.valid_password?(params[:password])
....
else
redirect_to :back
end

Rails.logger.debug(params[:password]) は、入力したパスワードと正しいパスワードを返します。

Rails.logger.debug(current_user.valid_password?(params[:password])) は false を返しますが、params[:password] を実際のパスワードに置き換えると true が返されます

ご協力いただきありがとうございます !

4

1 に答える 1

1

ユーザーの資格情報を確認する方法を示すこのリンクを見つけました。あなたの場合、次のようなことを行います(パスワードを「password」という名前のパラメーターとして送信する場合)。

# use the return value to determine if the user inserted the correct password
if(current_user.valid_password?(params[:password]))
  # create transfer
else
  # tell user password is invalid
end
于 2012-11-14T11:30:07.937 に答える