# HG changeset patch # User Nattee Niparnan # Date 2022-02-03 17:22:51 # Node ID 2290fefd2c3861fb1f244537568707efa35f1a8a # Parent 057622a7b53421212691df7038e0ed8adb4b4dd3 use uuid cookie diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1,10 +1,12 @@ require 'ipaddr' +require "securerandom" class ApplicationController < ActionController::Base protect_from_forgery before_action :current_user before_action :nav_announcement + before_action :unique_visitor_id SINGLE_USER_MODE_CONF_KEY = 'system.single_user_mode' MULTIPLE_IP_LOGIN_CONF_KEY = 'right.multiple_ip_login' @@ -54,6 +56,12 @@ unauthorized_redirect unless GraderConfiguration["right.view_testcase"] end + def unique_visitor_id + unless cookies[:uuid] + value = SecureRandom.uuid + cookies[:uuid] = { value: value, expires: 20.year } + end + end protected diff --git a/app/controllers/login_controller.rb b/app/controllers/login_controller.rb --- a/app/controllers/login_controller.rb +++ b/app/controllers/login_controller.rb @@ -22,6 +22,16 @@ return end + #store uuid when login + if user.last_ip.nil? + user.last_ip = cookies[:uuid] + else + if user.last_ip != cookies[:uuid] + user.last_ip =cookies[:uuid] + #log different login + end + end + #process logging in session[:user_id] = user.id session[:admin] = user.admin? @@ -38,7 +48,7 @@ end #save login information - Login.create(user_id: user.id, ip_address: request.remote_ip) + Login.create(user_id: user.id, ip_address: cookies[:uuid]) redirect_to :controller => 'main', :action => 'list' end diff --git a/app/models/user.rb b/app/models/user.rb --- a/app/models/user.rb +++ b/app/models/user.rb @@ -40,7 +40,7 @@ validates_presence_of :full_name validates_length_of :full_name, :minimum => 1 - + validates_presence_of :password, :if => :password_required? validates_length_of :password, :within => 4..50, :if => :password_required? validates_confirmation_of :password, :if => :password_required?