Retrospring/app/controllers/application_controller.rb

78 lines
2.4 KiB
Ruby
Raw Normal View History

2014-08-01 02:23:47 -07:00
class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
2015-05-05 09:09:26 -07:00
2021-12-28 10:19:05 -08:00
before_action :sentry_user_context
2020-04-18 16:45:50 -07:00
before_action :configure_permitted_parameters, if: :devise_controller?
before_action :check_locale
before_action :banned?
before_action :find_active_announcements
2015-05-25 20:31:06 -07:00
# check if user wants to read
2015-05-25 20:26:40 -07:00
def check_locale
2015-06-06 17:57:21 -07:00
return I18n.locale = 'en' if Rails.env.test?
I18n.locale = 'en'
2022-01-23 11:21:11 -08:00
# if params[:hl].nil?
# if current_user.present?
# I18n.locale = current_user.locale
# elsif not cookies[:lang].nil?
# I18n.locale = cookies[:lang]
# else
# I18n.locale = 'en'
# end
# else
# I18n.locale = params[:hl]
# if current_user.present?
# current_user.locale = I18n.locale
# current_user.save!
# end
# end
2015-05-25 20:26:40 -07:00
cookies[:lang] = I18n.locale
2015-05-25 20:26:40 -07:00
end
2015-05-25 20:31:06 -07:00
# check if user got hit by the banhammer of doom
def banned?
if current_user.present? && current_user.banned?
name = current_user.screen_name
# obligatory '2001: A Space Odyssey' reference
2015-06-07 10:03:57 -07:00
flash[:notice] = t('flash.ban.error', name: name)
2021-12-29 15:20:09 -08:00
current_ban = current_user.bans.current.first
unless current_ban&.reason.nil?
flash[:notice] += "\n#{t('flash.ban.reason', reason: current_user.bans.current.first.reason)}"
end
2021-12-29 15:20:09 -08:00
unless current_ban&.permanently_banned?
# TODO format banned_until
2015-06-07 10:03:57 -07:00
flash[:notice] += "\n#{t('flash.ban.until', time: current_user.banned_until)}"
end
sign_out current_user
redirect_to new_user_session_path
end
end
2014-12-28 12:14:10 -08:00
def find_active_announcements
@active_announcements ||= Announcement.find_active
end
2014-12-28 12:14:10 -08:00
include ApplicationHelper
2014-08-01 06:27:08 -07:00
protected
def configure_permitted_parameters
2019-03-29 14:37:10 -07:00
devise_parameter_sanitizer.permit(:sign_up) { |u| u.permit(:screen_name, :email, :password, :password_confirmation, :remember_me) }
devise_parameter_sanitizer.permit(:sign_in) { |u| u.permit(:login, :screen_name, :email, :password, :remember_me) }
devise_parameter_sanitizer.permit(:account_update) { |u| u.permit(:screen_name, :email, :password, :password_confirmation, :current_password) }
2014-08-01 06:27:08 -07:00
end
2021-12-28 10:19:05 -08:00
def sentry_user_context
if current_user.present?
Sentry.set_user({ id: current_user.id })
else
Sentry.set_user({ ip_address: request.ip })
end
end
2014-08-01 02:23:47 -07:00
end