From 318c9487fb6ee6253cc74de5d343df22631afa9d Mon Sep 17 00:00:00 2001 From: Jasder <2053003901@@qq.com> Date: Tue, 1 Sep 2020 15:23:02 +0800 Subject: [PATCH] =?UTF-8?q?FIX=20=E8=A7=A3=E5=86=B3trustie=E5=92=8Cforge?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E7=99=BB=E5=BD=95=E7=99=BB=E5=87=BA=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/accounts_controller.rb | 2 + app/controllers/concerns/login_helper.rb | 47 +++++++++++++++++++++--- 2 files changed, 43 insertions(+), 6 deletions(-) diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb index 8d51fddc8..3625a0a3f 100644 --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@ -246,6 +246,8 @@ class AccountsController < ApplicationController def set_autologin_cookie(user) token = Token.get_or_create_permanent_login_token(user, "autologin") + sync_user_token_to_trustie(user.login, token.value) + cookie_options = { :value => token.value, :expires => 1.month.from_now, diff --git a/app/controllers/concerns/login_helper.rb b/app/controllers/concerns/login_helper.rb index 8891ad029..ff26c4b55 100644 --- a/app/controllers/concerns/login_helper.rb +++ b/app/controllers/concerns/login_helper.rb @@ -11,13 +11,15 @@ module LoginHelper def set_autologin_cookie(user) token = Token.get_or_create_permanent_login_token(user, "autologin") + sync_user_token_to_trustie(user.login, token.value) + Rails.logger.info "###### def set_autologin_cookie and get_or_create_permanent_login_token result: #{token&.value}" cookie_options = { :value => token.value, :expires => 1.month.from_now, :path => '/', :secure => false, - :httponly => false + :httponly => true } if edu_setting('cookie_domain').present? cookie_options = cookie_options.merge(domain: edu_setting('cookie_domain')) @@ -51,11 +53,16 @@ module LoginHelper Rails.logger.info("####################__User.current_id______######{current_user.try(:id)}###___#{current_user&.logged?}") if User.current.logged? - if autologin = cookies.delete(autologin_cookie_name) + user = User.current + autologin = + if edu_setting('cookie_domain').present? + cookies.delete(autologin_cookie_name, domain: edu_setting('cookie_domain')) + else + cookies.delete(autologin_cookie_name) + end - User.current.delete_autologin_token(autologin) - end - User.current.delete_session_token(session[:tk]) + user.delete_autologin_token(autologin) + user.delete_session_token(session[:tk]) self.logged_user = nil end @@ -68,7 +75,7 @@ module LoginHelper # Sets the logged in user def logged_user=(user) - # reset_session + reset_session if user && user.is_a?(User) Rails.logger.info("########________logged_user___________###########{user.id}") @@ -111,4 +118,32 @@ module LoginHelper false end end + + # TODO 同步token到trustie平台,保持同步登录状态 + def sync_user_token_to_trustie(login, token_value) + + config = Rails.application.config_for(:configuration).symbolize_keys! + + token = config[:sync_token] + api_host = config[:sync_url] + + url = "#{api_host}/api/v1/users/sync_user_token" + sync_json = { + "token": token, + "login": type, + "user_token": token_value + } + uri = URI.parse(url) + + if api_host + http = Net::HTTP.new(uri.hostname, uri.port) + + if api_host.include?("https://") + http.use_ssl = true + end + + http.send_request('PUT', uri.path, sync_json.to_json, {'Content-Type' => 'application/json'}) + end + + end end