keep better track of per-user ip addrs
This commit is contained in:
@@ -42,7 +42,9 @@ class UsersController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
@user = User.create(params[:user], :as => CurrentUser.role)
|
@user = User.new(params[:user], :as => CurrentUser.role)
|
||||||
|
@user.last_ip_addr = request.remote_ip
|
||||||
|
@user.save
|
||||||
if @user.errors.empty?
|
if @user.errors.empty?
|
||||||
session[:user_id] = @user.id
|
session[:user_id] = @user.id
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ class SessionLoader
|
|||||||
end
|
end
|
||||||
|
|
||||||
update_last_logged_in_at
|
update_last_logged_in_at
|
||||||
|
update_last_ip_addr
|
||||||
set_time_zone
|
set_time_zone
|
||||||
store_favorite_tags_in_cookies
|
store_favorite_tags_in_cookies
|
||||||
set_statement_timeout
|
set_statement_timeout
|
||||||
@@ -108,6 +109,12 @@ private
|
|||||||
refresh_listbooru
|
refresh_listbooru
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def update_last_ip_addr
|
||||||
|
return if CurrentUser.is_anonymous?
|
||||||
|
return if CurrentUser.user.last_ip_addr == @request.remote_ip
|
||||||
|
CurrentUser.user.update_attribute(:last_ip_addr, @request.remote_ip)
|
||||||
|
end
|
||||||
|
|
||||||
def refresh_listbooru
|
def refresh_listbooru
|
||||||
if CurrentUser.is_gold? && CurrentUser.has_saved_searches? && Danbooru.config.listbooru_server && CurrentUser.is_gold?
|
if CurrentUser.is_gold? && CurrentUser.has_saved_searches? && Danbooru.config.listbooru_server && CurrentUser.is_gold?
|
||||||
SavedSearch.refresh_listbooru(CurrentUser.id)
|
SavedSearch.refresh_listbooru(CurrentUser.id)
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ class User < ActiveRecord::Base
|
|||||||
after_save :update_cache
|
after_save :update_cache
|
||||||
after_update :update_remote_cache
|
after_update :update_remote_cache
|
||||||
before_create :promote_to_admin_if_first_user
|
before_create :promote_to_admin_if_first_user
|
||||||
|
#after_create :notify_sock_puppets
|
||||||
has_many :feedback, :class_name => "UserFeedback", :dependent => :destroy
|
has_many :feedback, :class_name => "UserFeedback", :dependent => :destroy
|
||||||
has_many :posts, :foreign_key => "uploader_id"
|
has_many :posts, :foreign_key => "uploader_id"
|
||||||
has_many :bans, lambda {order("bans.id desc")}
|
has_many :bans, lambda {order("bans.id desc")}
|
||||||
@@ -802,6 +803,19 @@ class User < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
module SockPuppetMethods
|
||||||
|
def notify_sock_puppets
|
||||||
|
sock_puppet_suspects.each do |user|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def sock_puppet_suspects
|
||||||
|
if last_ip_addr.present?
|
||||||
|
User.where(:last_ip_addr => last_ip_addr)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
include BanMethods
|
include BanMethods
|
||||||
include NameMethods
|
include NameMethods
|
||||||
include PasswordMethods
|
include PasswordMethods
|
||||||
|
|||||||
Reference in New Issue
Block a user