Spree::User モデル クラスに STI で継承を追加しました。(Spree::Guest、Spree::Writer、または Spree::Reader) の :type 列があります。
管理者側の認証では、ライターとリーダーのみを認証したいと考えています。この問題を解決するための最良の選択肢は何ですか?
create アクションを次のようなものにオーバーライドしようとしました。
def create
authenticate_spree_user!
if spree_user_signed_in? && (spree_current_user.role?(:writer) || spree_current_user.role?(:reader))
respond_to do |format|
format.html {
flash[:success] = Spree.t(:logged_in_succesfully)
redirect_back_or_default(after_sign_in_path_for(spree_current_user))
}
format.js {
user = resource.record
render :json => {:ship_address => user.ship_address, :bill_address => user.bill_address}.to_json
}
end
else
flash.now[:error] = t('devise.failure.invalid')
render :new
end
end
この場合、タイプ :guest のユーザーで認証しようとすると、無効な失敗メッセージ (ok) で新しいアクションにリダイレクトされますが、何らかの理由でユーザーは認証されます (nok)。