From 6b68de130ca15f236eadcfd2e6a4c0738d4313db Mon Sep 17 00:00:00 2001 From: xxq250 Date: Thu, 18 May 2023 09:17:27 +0800 Subject: [PATCH 1/8] =?UTF-8?q?fixed=20=E6=8F=90=E4=BA=A4=E8=80=85?= =?UTF-8?q?=E5=8C=B9=E9=85=8D=E7=94=A8=E6=88=B7email?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/repositories_helper.rb | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/app/helpers/repositories_helper.rb b/app/helpers/repositories_helper.rb index c9be515d2..0f3f27ac0 100644 --- a/app/helpers/repositories_helper.rb +++ b/app/helpers/repositories_helper.rb @@ -36,12 +36,20 @@ module RepositoriesHelper end def render_cache_commit_author(author_json) + user = nil if author_json["name"].present? && author_json["email"].present? - return find_user_in_redis_cache(author_json['name'], author_json['email']) + user = find_user_in_redis_cache(author_json['name'], author_json['email']) end if author_json["Name"].present? && author_json["Email"].present? - return find_user_in_redis_cache(author_json['Name'], author_json['Email']) + user = find_user_in_redis_cache(author_json['Name'], author_json['Email']) end + if user.blank? && author_json["email"].present? + user = User.find_by(mail: author_json["email"]) + end + if user.blank? && author_json["Email"].present? + user = User.find_by(mail: author_json["Email"]) + end + user end def readme_render_decode64_content(str, owner, repo, ref, path) From eb7e658a7de799886d891519968387e6b502187f Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Sat, 20 May 2023 12:27:34 +0800 Subject: [PATCH 2/8] =?UTF-8?q?fixed=20=E4=BF=AE=E6=94=B9user=20login?= =?UTF-8?q?=E5=94=AF=E4=B8=80=E7=B4=A2=E5=BC=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20230520133729_add_user_login_uniq_index.rb | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 db/migrate/20230520133729_add_user_login_uniq_index.rb diff --git a/db/migrate/20230520133729_add_user_login_uniq_index.rb b/db/migrate/20230520133729_add_user_login_uniq_index.rb new file mode 100644 index 000000000..4527d9d29 --- /dev/null +++ b/db/migrate/20230520133729_add_user_login_uniq_index.rb @@ -0,0 +1,12 @@ +class AddForgeAppliedMessageUtf8mb4 < ActiveRecord::Migration[5.2] + def change + + users = User.group("login").having("count(1) >1") + ids = users.pluck(:id) + logins = users.pluck(:login) + User.where(login: logins).where.not(id: ids).destroy_all + + remove_index :users, :login + add_index :users, :login, unique: true + end +end From ef88c31b96d00f604f8700a8598b77ea72010ed4 Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Sat, 20 May 2023 12:28:35 +0800 Subject: [PATCH 3/8] =?UTF-8?q?fixed=20=E4=BF=AE=E6=94=B9user=20login?= =?UTF-8?q?=E5=94=AF=E4=B8=80=E7=B4=A2=E5=BC=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/migrate/20230520133729_add_user_login_uniq_index.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/migrate/20230520133729_add_user_login_uniq_index.rb b/db/migrate/20230520133729_add_user_login_uniq_index.rb index 4527d9d29..f1990afce 100644 --- a/db/migrate/20230520133729_add_user_login_uniq_index.rb +++ b/db/migrate/20230520133729_add_user_login_uniq_index.rb @@ -1,4 +1,4 @@ -class AddForgeAppliedMessageUtf8mb4 < ActiveRecord::Migration[5.2] +class AddUserLoginUniqIndex < ActiveRecord::Migration[5.2] def change users = User.group("login").having("count(1) >1") From 2c0c6a1a77b0095c806e719f77053de19bb055ab Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Sat, 20 May 2023 11:35:20 +0800 Subject: [PATCH 4/8] =?UTF-8?q?fixed=20=E6=B8=85=E9=99=A4user=E6=9C=AA?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E5=85=B3=E8=81=94=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/user.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index ba8afffa4..5e0ff12d7 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -127,13 +127,13 @@ class User < Owner has_many :versions has_many :issue_times, :dependent => :destroy - has_one :onclick_time, :dependent => :destroy + # has_one :onclick_time, :dependent => :destroy # 新版私信 - has_many :private_messages, dependent: :destroy + # has_many :private_messages, dependent: :destroy has_many :recent_contacts, through: :private_messages, source: :target has_many :tidings, :dependent => :destroy - has_many :journals_for_messages, :as => :jour, :dependent => :destroy + # has_many :journals_for_messages, :as => :jour, :dependent => :destroy has_many :attachments,foreign_key: :author_id, :dependent => :destroy @@ -143,7 +143,7 @@ class User < Owner has_many :apply_user_authentication has_one :process_real_name_apply, -> { processing.real_name_auth.order(created_at: :desc) }, class_name: 'ApplyUserAuthentication' has_one :process_professional_apply, -> { processing.professional_auth.order(created_at: :desc) }, class_name: 'ApplyUserAuthentication' - has_many :apply_actions, dependent: :destroy + # has_many :apply_actions, dependent: :destroy has_many :trail_auth_apply_actions, -> { where(container_type: 'TrialAuthorization') }, class_name: 'ApplyAction' # has_many :attendances From 41465a456e2c8a4391ccea94251bc4323f80822b Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Mon, 22 May 2023 11:21:46 +0800 Subject: [PATCH 5/8] =?UTF-8?q?fixed=20=E4=BF=AE=E6=94=B9user=20login?= =?UTF-8?q?=E5=94=AF=E4=B8=80=E7=B4=A2=E5=BC=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/tasks/repair_gitea_user.rake.rb | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 lib/tasks/repair_gitea_user.rake.rb diff --git a/lib/tasks/repair_gitea_user.rake.rb b/lib/tasks/repair_gitea_user.rake.rb new file mode 100644 index 000000000..7f14325be --- /dev/null +++ b/lib/tasks/repair_gitea_user.rake.rb @@ -0,0 +1,25 @@ +namespace :repair_gitea_user do + desc "If forge users gitea_uid is null repair gitea user" + task done: :environment do + users = User.find_by_sql("SELECT * FROM `users` WHERE id !=2 AND type='User' AND NOT EXISTS (SELECT * FROM forgegitea.`user` WHERE forgegitea.`user`.id=users.gitea_uid)") + puts "total users count:#{users.count}" + success_count = 0 + users.each do |user| + begin + interactor = Gitea::RegisterInteractor.call({ username: user.login, email: user.mail, password: "abc12345678" }) + if interactor.success? + gitea_user = interactor.result + result = Gitea::User::GenerateTokenService.call(user.login, password) + user.gitea_token = result['sha1'] + user.gitea_uid = gitea_user[:body]['id'] + user.is_sync_pwd = false + user.save! + success_count = success_count + 1 + end + rescue Exception => e + puts "repair gitea user: #{user.id}:#{user.login}:, error:#{e}" + end + end + puts "repair gitea user success total: #{success_count}" + end +end \ No newline at end of file From c56d3dfd83f790c6429d9496035545fd7120e1dd Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Mon, 22 May 2023 11:27:29 +0800 Subject: [PATCH 6/8] =?UTF-8?q?fixed=20=E8=A1=A5=E5=81=BFusers.gitea=5Fuid?= =?UTF-8?q?=E4=B8=8D=E5=AD=98=E5=9C=A8=E7=9A=84=E7=94=A8=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/tasks/{repair_gitea_user.rake.rb => repair_gitea_user.rake} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename lib/tasks/{repair_gitea_user.rake.rb => repair_gitea_user.rake} (100%) diff --git a/lib/tasks/repair_gitea_user.rake.rb b/lib/tasks/repair_gitea_user.rake similarity index 100% rename from lib/tasks/repair_gitea_user.rake.rb rename to lib/tasks/repair_gitea_user.rake From 206b71cf72b2bcb3019aedc1036ab46cf425efa0 Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Wed, 24 May 2023 14:33:50 +0800 Subject: [PATCH 7/8] =?UTF-8?q?fixed=20=E9=A1=B9=E7=9B=AE=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=A2=9E=E5=8A=A0id=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/queries/projects/list_query.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/queries/projects/list_query.rb b/app/queries/projects/list_query.rb index 72776f7a2..c67feed61 100644 --- a/app/queries/projects/list_query.rb +++ b/app/queries/projects/list_query.rb @@ -29,6 +29,7 @@ class Projects::ListQuery < ApplicationQuery def filter_projects(collection) # collection = by_pinned(collection) collection = by_search(collection) if params[:search].present? + collection = collection.where(id: params[:ids].to_s.split(",")) if params[:ids].present? collection = by_project_type(collection) collection = by_project_category(collection) collection = by_project_language(collection) From 09e674f0c1965dfec506f26cf32cd6d90ab59cf6 Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Tue, 30 May 2023 11:12:21 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E7=AB=9E=E8=B5=9B=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=85=B3=E8=81=94=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/accounts_controller.rb | 1 + app/controllers/users_controller.rb | 5 +++-- app/views/users/get_user_info.json.jbuilder | 2 +- db/migrate/20230530141227_add_user_action_index.rb | 7 +++++++ 4 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 db/migrate/20230530141227_add_user_action_index.rb diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb index 0b713bdb3..4cec1be47 100644 --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@ -13,6 +13,7 @@ class AccountsController < ApplicationController ActiveRecord::Base.transaction do result = auto_update(current_user, simple_update_params) if result[:message].blank? + UserAction.create(:action_id => current_user.id, :action_type => "sync_educoder_user", :user_id => current_user.id, :ip => request.remote_ip) if params[:platform] == "educoder" render_ok else render_error(result[:message]) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index c4c745a7d..9472ad6e5 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -388,10 +388,11 @@ class UsersController < ApplicationController password = "12345678" # 没有用户时,新建用户并登录 - user = User.where("login = ? or phone = ? or mail = ? ", "#{login}", phone, email).first + user = phone.present? ? User.find_by(phone: phone) : nil + user = User.where("login = ? or phone = ? or mail = ? ", "#{login}", phone, email).first if user.nil? if user.present? # 手机号先记录,后续用 - user.update_column(:phone, "#{phone}") if phone.present? + user.update_column(:phone, "#{phone}") if phone.present? && user.phone.blank? else ActiveRecord::Base.transaction do email = "#{login}@gitlink.org.cn" if email.blank? diff --git a/app/views/users/get_user_info.json.jbuilder b/app/views/users/get_user_info.json.jbuilder index a1d689f44..f659190d0 100644 --- a/app/views/users/get_user_info.json.jbuilder +++ b/app/views/users/get_user_info.json.jbuilder @@ -26,6 +26,6 @@ json.super_description @user.super_description json.(@user, :show_email, :show_department, :show_location, :show_super_description) json.message_unread_total @message_unread_total json.has_trace_user @user.trace_user.present? -json.is_new @user.login.present? && params[:login].to_s.include?("#{@user.login}") +json.is_new params[:login].present? && (UserAction.where(action_type: "sync_educoder_user", user_id: @user.id).blank? || @user.mail.include?("@gitlink.org.cn") || @user.mail.include?("@forge.com")) json.nps EduSetting.get("nps-on-off-switch").to_s == 'true' && UserNp.where(user_id: current_user.id).where("created_at >= ?", (Time.now - 30.days).beginning_of_day ).blank? json.sign_cla @user.sign_cla \ No newline at end of file diff --git a/db/migrate/20230530141227_add_user_action_index.rb b/db/migrate/20230530141227_add_user_action_index.rb new file mode 100644 index 000000000..2d76bd478 --- /dev/null +++ b/db/migrate/20230530141227_add_user_action_index.rb @@ -0,0 +1,7 @@ +class AddUserActionIndex < ActiveRecord::Migration[5.2] + def change + add_index :user_actions, :user_id + add_index :user_actions, :action_type + add_index :user_actions, :action_id + end +end