retrospring/app/controllers/application_controller.rb

67 lines
2.2 KiB
Ruby
Raw Normal View History

2014-08-01 11:23:47 +02:00
class ApplicationController < ActionController::Base
2022-11-18 22:50:35 +01:00
include Pundit::Authorization
2014-08-01 11:23:47 +02:00
# 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 18:09:26 +02:00
2021-12-28 19:19:05 +01:00
before_action :sentry_user_context
2020-04-19 01:45:50 +02:00
before_action :configure_permitted_parameters, if: :devise_controller?
around_action :switch_locale
2020-04-19 01:45:50 +02:00
before_action :banned?
before_action :find_active_announcements
2015-05-26 05:31:06 +02:00
# check if user wants to read
def switch_locale(&)
locale = params[:lang] || current_user&.locale || cookies[:lang] || "en"
if params[:lang] && current_user.present?
current_user.locale = locale
current_user.save
end
cookies[:lang] = locale
2023-01-06 10:01:14 +01:00
I18n.with_locale(locale, &)
2015-05-26 05:26:40 +02:00
end
2015-05-26 05:31:06 +02: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
flash[:notice] = t("user.sessions.create.banned", name:)
2021-12-30 00:20:09 +01:00
current_ban = current_user.bans.current.first
unless current_ban&.reason.nil?
flash[:notice] += "\n#{t('user.sessions.create.reason', reason: current_ban.reason)}"
end
2022-06-26 11:01:39 +02:00
unless current_ban&.permanent?
# TODO format banned_until
flash[:notice] += "\n#{t('user.sessions.create.until', time: current_ban.expires_at)}"
end
sign_out current_user
redirect_to new_user_session_path
end
end
2014-12-28 21:14:10 +01:00
def find_active_announcements
@active_announcements ||= Announcement.find_active
end
2014-12-28 21:14:10 +01:00
include ApplicationHelper
2014-08-01 15:27:08 +02:00
protected
def configure_permitted_parameters
2019-03-29 22:37:10 +01: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 15:27:08 +02:00
end
2021-12-28 19:19:05 +01:00
def sentry_user_context
if current_user.present?
Sentry.set_user({ id: current_user.id })
else
2023-02-04 22:31:53 +01:00
Sentry.set_user({ ip_address: request.remote_ip })
2021-12-28 19:19:05 +01:00
end
end
2014-08-01 11:23:47 +02:00
end