diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index e486936fd..e59c6de95 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -362,7 +362,7 @@ class ApplicationController < ActionController::Base # auto-login feature starts a new session user = nil Rails.logger.info("111111111111111111#{default_yun_session}, session is #{session[:"#{default_yun_session}"]} ") - user = User.try_to_autologin(cookies[autologin_cookie_name]) if session[:"#{default_yun_session}"] + user = User.try_to_autologin(cookies[autologin_cookie_name]) start_user_session(user) if user user end diff --git a/app/controllers/concerns/login_helper.rb b/app/controllers/concerns/login_helper.rb index 94ef1c04a..eeab45101 100644 --- a/app/controllers/concerns/login_helper.rb +++ b/app/controllers/concerns/login_helper.rb @@ -6,7 +6,7 @@ module LoginHelper end def autologin_cookie_name - edu_setting('autologin_cookie_name').presence || 'autologin' + edu_setting('autologin_cookie_name').presence || 'autologin_trustie' end def set_autologin_cookie(user) @@ -93,4 +93,4 @@ module LoginHelper session[:ctime] = Time.now.utc.to_i session[:atime] = Time.now.utc.to_i end -end \ No newline at end of file +end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 6c48d77b8..1c451ee91 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1,6 +1,6 @@ class UsersController < ApplicationController - before_action :load_user, only: [:show, :homepage_info] + before_action :load_user, only: [:show, :homepage_info, :sync_token] before_action :check_user_exist, only: [:show, :homepage_info] before_action :require_login, only: %i[me list] skip_before_action :check_sign, only: [:attachment_show] @@ -103,6 +103,15 @@ class UsersController < ApplicationController render_error(ex.message) end + # 其他平台登录后,必须将token同步到forge平台,实现sso登录功能 + def sync_token + return render_error('未找相关用户!') unless @user + + token = Token.get_or_create_permanent_login_token(@user, 'autologin') + token.update_column(:value, params[:token]) + render_ok + end + private def load_user @user = User.find_by_login(params[:id]) || User.find_by(id: params[:id]) diff --git a/config/routes.rb b/config/routes.rb index 74b44f039..32078d13c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -146,6 +146,7 @@ Rails.application.routes.draw do get :system_update get :me get :list + post :sync_token end scope module: :users do