diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index a081101e5..06d4ef479 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -42,7 +42,9 @@ class UsersController < ApplicationController end 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? session[:user_id] = @user.id end diff --git a/app/logical/session_loader.rb b/app/logical/session_loader.rb index bc6d94bd5..e3afc7934 100644 --- a/app/logical/session_loader.rb +++ b/app/logical/session_loader.rb @@ -26,6 +26,7 @@ class SessionLoader end update_last_logged_in_at + update_last_ip_addr set_time_zone store_favorite_tags_in_cookies set_statement_timeout @@ -108,6 +109,12 @@ private refresh_listbooru 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 if CurrentUser.is_gold? && CurrentUser.has_saved_searches? && Danbooru.config.listbooru_server && CurrentUser.is_gold? SavedSearch.refresh_listbooru(CurrentUser.id) diff --git a/app/models/user.rb b/app/models/user.rb index acdf0e3c7..088836ac2 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -64,6 +64,7 @@ class User < ActiveRecord::Base after_save :update_cache after_update :update_remote_cache before_create :promote_to_admin_if_first_user + #after_create :notify_sock_puppets has_many :feedback, :class_name => "UserFeedback", :dependent => :destroy has_many :posts, :foreign_key => "uploader_id" has_many :bans, lambda {order("bans.id desc")} @@ -802,6 +803,19 @@ class User < ActiveRecord::Base 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 NameMethods include PasswordMethods