From c7d99d14f8f23dbe30c817e9ac474de93cccd646 Mon Sep 17 00:00:00 2001 From: jasder duan Date: Fri, 6 Dec 2024 15:23:36 +0800 Subject: [PATCH] =?UTF-8?q?FIX=20=E4=B8=BB=E5=8A=A8=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E5=A4=B4=E6=AD=8C=E8=B4=A6=E5=8F=B7=E5=88=B0gitea=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=EF=BC=8C=E9=98=B2=E6=AD=A2=E5=89=8D=E7=AB=AF=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E5=BC=B9=E6=A1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/application_controller.rb | 37 +++++++++++++++++++++++ app/models/user.rb | 4 +++ 2 files changed, 41 insertions(+) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 7ef5879a2..f3431ff0a 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -16,6 +16,7 @@ class ApplicationController < ActionController::Base before_action :check_sign before_action :user_setup #before_action :check_account + before_action :check_gitea_account # TODO # check sql query time @@ -278,6 +279,42 @@ class ApplicationController < ActionController::Base end end + # TODO + # 临时处理弹框同步gitea账号问题 + def check_gitea_account + return unless current_user.logged? + + if !current_user.has_gitea_user? || (current_user.has_gitea_user? && !current_user.is_sync_pwd) + begin + email = current_user.mail + + if email.blank? + user_extension = current_user.user_extension + email_identifier = + if user_extension + if user_extension.identity == 'student' + current_user.student_id + elsif user_extension.identity == 'teacher' + current_user.staff_id + else + nil + end + else + nil + end + + email = email_identifier.blank? ? "#{current_user.login}@qq.com" : "#{email_identifier}@qq.com" + current_user.update_column(:mail, email) + end + + create_gitea_user!(current_user, current_user.login, email, 'zq123456') + rescue => e + Rails.logger.info "@@主动检测并同步gitea账号错误: #{e.message}" + next + end + end + end + # 系统全局认证(暂时隐藏试用申请的判断) def check_auth # day_cer = UserDayCertification.find_by(user_id: current_user.id) diff --git a/app/models/user.rb b/app/models/user.rb index 55cf97aaa..6f50a3cd9 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -785,6 +785,10 @@ class User < Owner def set_lastname self.lastname = self.nickname if changes[:nickname].present? end + + def has_gitea_user? + self.gitea_token.present? && self.gitea_uid.present? + end end