Add interstitial for Terms of Service updates (#34527)
This commit is contained in:
parent
c4f47adb49
commit
8cc5084ca1
10 changed files with 72 additions and 4 deletions
|
@ -8,6 +8,7 @@ module WebAppControllerConcern
|
|||
|
||||
before_action :redirect_unauthenticated_to_permalinks!
|
||||
before_action :set_referer_header
|
||||
before_action :redirect_to_tos_interstitial!
|
||||
|
||||
content_security_policy do |p|
|
||||
policy = ContentSecurityPolicy.new
|
||||
|
@ -45,6 +46,13 @@ module WebAppControllerConcern
|
|||
|
||||
protected
|
||||
|
||||
def redirect_to_tos_interstitial!
|
||||
return unless current_user&.require_tos_interstitial?
|
||||
|
||||
@terms_of_service = TermsOfService.published.first
|
||||
render 'terms_of_service_interstitial/show', layout: 'auth'
|
||||
end
|
||||
|
||||
def set_referer_header
|
||||
response.set_header('Referrer-Policy', Setting.allow_referrer_origin ? 'strict-origin-when-cross-origin' : 'same-origin')
|
||||
end
|
||||
|
|
|
@ -4,8 +4,19 @@ class TermsOfServiceController < ApplicationController
|
|||
include WebAppControllerConcern
|
||||
|
||||
skip_before_action :require_functional!
|
||||
skip_before_action :redirect_to_tos_interstitial!
|
||||
|
||||
before_action :clear_redirect_interstitial!
|
||||
|
||||
def show
|
||||
expires_in(15.seconds, public: true, stale_while_revalidate: 30.seconds, stale_if_error: 1.day) unless user_signed_in?
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def clear_redirect_interstitial!
|
||||
return unless user_signed_in?
|
||||
|
||||
current_user.update(require_tos_interstitial: false)
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue