debian-mirror-gitlab/app/controllers/users/terms_controller.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

88 lines
2.3 KiB
Ruby
Raw Normal View History

2018-12-05 23:21:45 +05:30
# frozen_string_literal: true
2018-10-15 14:42:47 +05:30
module Users
class TermsController < ApplicationController
include InternalRedirect
2022-01-26 12:08:38 +05:30
include OneTrustCSP
2022-08-13 15:12:31 +05:30
include GoogleAnalyticsCSP
2018-10-15 14:42:47 +05:30
2020-04-08 14:13:33 +05:30
skip_before_action :authenticate_user!, only: [:index]
2018-10-15 14:42:47 +05:30
skip_before_action :enforce_terms!
skip_before_action :check_password_expiration
skip_before_action :check_two_factor_requirement
skip_before_action :require_email
before_action :terms
2022-08-13 15:12:31 +05:30
before_action only: [:index] do
push_frontend_feature_flag(:gitlab_gtm_datalayer, type: :ops)
end
2018-10-15 14:42:47 +05:30
layout 'terms'
2022-07-23 23:45:48 +05:30
feature_category :user_management
2021-01-03 14:25:43 +05:30
2018-10-15 14:42:47 +05:30
def index
@redirect = redirect_path
2018-11-08 19:23:39 +05:30
if current_user && @term.accepted_by_user?(current_user)
flash.now[:notice] = "You have already accepted the Terms of Service as #{current_user.to_reference}"
end
2018-10-15 14:42:47 +05:30
end
def accept
agreement = Users::RespondToTermsService.new(current_user, viewed_term)
.execute(accepted: true)
if agreement.persisted?
redirect_to redirect_path
else
flash[:alert] = agreement.errors.full_messages.join(', ')
redirect_to terms_path, redirect: redirect_path
end
end
def decline
agreement = Users::RespondToTermsService.new(current_user, viewed_term)
.execute(accepted: false)
if agreement.persisted?
sign_out(current_user)
redirect_to root_path
else
flash[:alert] = agreement.errors.full_messages.join(', ')
redirect_to terms_path, redirect: redirect_path
end
end
private
def viewed_term
@viewed_term ||= ApplicationSetting::Term.find(params[:id])
end
def terms
unless @term = Gitlab::CurrentSettings.current_application_settings.latest_terms
redirect_to redirect_path
end
end
def redirect_path
redirect_to_path = safe_redirect_path(params[:redirect]) || safe_redirect_path_for_url(request.referer)
if redirect_to_path &&
excluded_redirect_paths.none? { |excluded| redirect_to_path.include?(excluded) }
redirect_to_path
else
root_path
end
end
def excluded_redirect_paths
[terms_path, new_user_session_path]
end
end
end
2021-11-11 11:23:49 +05:30
Users::TermsController.prepend_mod