This commit is contained in:
2026-05-04 15:36:13 +09:00
parent a9dce231a4
commit 7ab877d6bd
3 changed files with 22 additions and 5 deletions
@@ -1,14 +1,16 @@
class ApplicationController < ActionController::API class ApplicationController < ActionController::API
before_action :reject_banned_ip_address!
before_action :authenticate_user before_action :authenticate_user
before_action :reject_banned_user!
def current_user def current_user = @current_user
@current_user
end
private private
def authenticate_user def authenticate_user
code = request.headers['X-Transfer-Code'] || request.headers['HTTP_X_TRANSFER_CODE'] code = request.headers['X-Transfer-Code'] || request.headers['HTTP_X_TRANSFER_CODE']
return if code.blank?
@current_user = User.find_by(inheritance_code: code) @current_user = User.find_by(inheritance_code: code)
end end
@@ -22,4 +24,17 @@ class ApplicationController < ActionController::API
s.in?(['', '1', 'true', 'on', 'yes']) s.in?(['', '1', 'true', 'on', 'yes'])
end end
end end
def reject_banned_ip_address!
ip_address = IpAddress.find_by(ip_address: IPAddr.new(request.remote_ip).hton)
return unless ip_address&.banned?
head :forbidden
end
def reject_banned_user!
return unless current_user&.banned?
head :forbidden
end
end end
+2 -1
View File
@@ -5,5 +5,6 @@ class IpAddress < ApplicationRecord
has_many :users, through: :user_ips has_many :users, through: :user_ips
def banned? = banned_at.present? def banned? = banned_at.present?
def ban! = update!(banned_at: Time.current) def ban! = banned? or update!(banned_at: Time.current)
def unban! = update!(banned_at: nil)
end end
+2 -1
View File
@@ -22,5 +22,6 @@ class User < ApplicationRecord
def gte_member? = member? || admin? def gte_member? = member? || admin?
def banned? = banned_at.present? def banned? = banned_at.present?
def ban! = update!(banned_at: Time.current) def ban! = banned? or update!(banned_at: Time.current)
def unban! = update!(banned_at: nil)
end end