mirror of
https://github.com/heartcombo/devise.git
synced 2026-01-10 07:18:14 -05:00
Unfortunately we can't enforce the version in the gemspec because responders only supports Rails 5.2 now, and Devise still supports previous versions. We'll drop support for those in a future major release, so for now I'm not adding any version. This also adds a warning in case someone is using an older version of responders and tries to set the error/redirect statuses via Devise, so that they know what to do (upgrade responders) in that case.
36 lines
1.3 KiB
Ruby
36 lines
1.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Devise
|
|
module Controllers
|
|
# Custom Responder to configure default statuses that only apply to Devise,
|
|
# and allow to integrate more easily with Hotwire/Turbo.
|
|
class Responder < ActionController::Responder
|
|
if respond_to?(:error_status=) && respond_to?(:redirect_status=)
|
|
self.error_status = :ok
|
|
self.redirect_status = :found
|
|
else
|
|
# TODO: remove this support for older Rails versions, which aren't supported by Turbo
|
|
# and/or responders. It won't allow configuring a custom response, but it allows Devise
|
|
# to use these methods and defaults across the implementation more easily.
|
|
def self.error_status
|
|
:ok
|
|
end
|
|
|
|
def self.redirect_status
|
|
:found
|
|
end
|
|
|
|
def self.error_status=(*)
|
|
warn "[DEVISE] Setting the error status on the Devise responder has no effect with this " \
|
|
"version of `responders`, please make sure you're using a newer version. Check the changelog for more info."
|
|
end
|
|
|
|
def self.redirect_status=(*)
|
|
warn "[DEVISE] Setting the redirect status on the Devise responder has no effect with this " \
|
|
"version of `responders`, please make sure you're using a newer version. Check the changelog for more info."
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|