From 9ee4c85b7c4b8366faae5a84ddf8afe233ff6273 Mon Sep 17 00:00:00 2001 From: yystopf Date: Fri, 21 Oct 2022 14:31:32 +0800 Subject: [PATCH 01/15] =?UTF-8?q?=E6=9B=B4=E6=94=B9=EF=BC=9A=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=E8=BF=94=E5=9B=9Estatus=E4=BB=A5=E5=8F=8A=E4=B8=87?= =?UTF-8?q?=E8=83=BD=E9=AA=8C=E8=AF=81=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/api/v1/projects_controller.rb | 1 - app/controllers/api/v1/users_controller.rb | 19 ++++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/controllers/api/v1/projects_controller.rb b/app/controllers/api/v1/projects_controller.rb index bc51362a..810c4017 100644 --- a/app/controllers/api/v1/projects_controller.rb +++ b/app/controllers/api/v1/projects_controller.rb @@ -15,6 +15,5 @@ class Api::V1::ProjectsController < Api::V1::BaseController def blame @result_object = Api::V1::Projects::BlameService.call(@project, params[:sha], params[:filepath], current_user&.gitea_token) - puts @result_object end end \ No newline at end of file diff --git a/app/controllers/api/v1/users_controller.rb b/app/controllers/api/v1/users_controller.rb index 37a41ff7..ad8e790d 100644 --- a/app/controllers/api/v1/users_controller.rb +++ b/app/controllers/api/v1/users_controller.rb @@ -16,9 +16,9 @@ class Api::V1::UsersController < Api::V1::BaseController # 60s内不能重复发送 send_email_limit_cache_key = "send_email_60_second_limit:#{mail}" - tip_exception(-1, '请勿频繁操作') if Rails.cache.exist?(send_email_limit_cache_key) + tip_exception(-2, '请勿频繁操作') if Rails.cache.exist?(send_email_limit_cache_key) send_email_control = LimitForbidControl::SendEmailCode.new(mail) - tip_exception(-1, '邮件发送太频繁,请稍后再试') if send_email_control.forbid? + tip_exception(-2, '邮件发送太频繁,请稍后再试') if send_email_control.forbid? begin UserMailer.update_email(mail, verification_code).deliver_now @@ -39,17 +39,17 @@ class Api::V1::UsersController < Api::V1::BaseController def check_password password = params[:password] - return render_error("8~16位密码,支持字母数字和符号") unless password =~ CustomRegexp::PASSWORD - return render_error("密码错误") unless @observe_user.check_password?(password) + return render_error(-5, "8~16位密码,支持字母数字和符号") unless password =~ CustomRegexp::PASSWORD + return render_error(-5, "密码错误") unless @observe_user.check_password?(password) render_ok end def check_email mail = strip(params[:email]) - return render_error("邮件格式有误") unless mail =~ CustomRegexp::EMAIL + return render_error(-2, "邮件格式有误") unless mail =~ CustomRegexp::EMAIL exist_owner = Owner.find_by(mail: mail) - return render_error('邮箱已被使用') if exist_owner + return render_error(-2, '邮箱已被使用') if exist_owner render_ok end @@ -58,12 +58,13 @@ class Api::V1::UsersController < Api::V1::BaseController mail = strip(params[:email]) code_type = params[:code_type] - return render_error("邮件格式有误") unless mail =~ CustomRegexp::EMAIL + return render_error(-2, "邮件格式有误") unless mail =~ CustomRegexp::EMAIL verifi_code = VerificationCode.where(email: mail, code: code, code_type: code_type).last + return render_ok if code == "123123" && EduSetting.get("code_debug") # 万能验证码,用于测试 # TODO 万能验证码,用于测试 - return render_error("验证码不正确") if verifi_code&.code != code - return render_error("验证码已失效") if !verifi_code&.effective? + return render_error(-6, "验证码不正确") if verifi_code&.code != code + return render_error(-6, "验证码已失效") if !verifi_code&.effective? render_ok end From 8a33ea6707a366893f2c81b8ed3ffb717173ac7a Mon Sep 17 00:00:00 2001 From: yystopf Date: Fri, 21 Oct 2022 14:40:43 +0800 Subject: [PATCH 02/15] =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/api/v1/users/update_email_service.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/services/api/v1/users/update_email_service.rb b/app/services/api/v1/users/update_email_service.rb index e11dd2f6..2d7631cc 100644 --- a/app/services/api/v1/users/update_email_service.rb +++ b/app/services/api/v1/users/update_email_service.rb @@ -20,8 +20,10 @@ class Api::V1::Users::UpdateEmailService < ApplicationService def call raise Error, errors.full_messages.join(",") unless valid? raise Error, "密码不正确." unless @user.check_password?(@password) - raise Error, "验证码不正确." if @verify_code&.code != @code - raise Error, "验证码已失效." if !@verify_code&.effective? + if !(code == "123123" && EduSetting.get("code_debug")) # 万能验证码,用于测试 # TODO 万能验证码,用于测试 + raise Error, "验证码不正确." if @verify_code&.code != @code + raise Error, "验证码已失效." if !@verify_code&.effective? + end # begin ActiveRecord::Base.transaction do From c2ef23b746a2f45618d94e87a6009b407657fcaa Mon Sep 17 00:00:00 2001 From: yystopf Date: Fri, 21 Oct 2022 14:42:51 +0800 Subject: [PATCH 03/15] =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/api/v1/users/update_email_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/api/v1/users/update_email_service.rb b/app/services/api/v1/users/update_email_service.rb index 2d7631cc..d5392834 100644 --- a/app/services/api/v1/users/update_email_service.rb +++ b/app/services/api/v1/users/update_email_service.rb @@ -20,7 +20,7 @@ class Api::V1::Users::UpdateEmailService < ApplicationService def call raise Error, errors.full_messages.join(",") unless valid? raise Error, "密码不正确." unless @user.check_password?(@password) - if !(code == "123123" && EduSetting.get("code_debug")) # 万能验证码,用于测试 # TODO 万能验证码,用于测试 + if !(@verify_code == "123123" && EduSetting.get("code_debug")) # 万能验证码,用于测试 # TODO 万能验证码,用于测试 raise Error, "验证码不正确." if @verify_code&.code != @code raise Error, "验证码已失效." if !@verify_code&.effective? end From 9b880e32099e7c13ef2ea568965b2e1ad20876b7 Mon Sep 17 00:00:00 2001 From: yystopf Date: Fri, 21 Oct 2022 15:04:26 +0800 Subject: [PATCH 04/15] =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/api/v1/users_controller.rb | 14 +++++++------- app/services/api/v1/users/update_email_service.rb | 7 +++---- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/app/controllers/api/v1/users_controller.rb b/app/controllers/api/v1/users_controller.rb index ad8e790d..1babd9bc 100644 --- a/app/controllers/api/v1/users_controller.rb +++ b/app/controllers/api/v1/users_controller.rb @@ -39,17 +39,17 @@ class Api::V1::UsersController < Api::V1::BaseController def check_password password = params[:password] - return render_error(-5, "8~16位密码,支持字母数字和符号") unless password =~ CustomRegexp::PASSWORD - return render_error(-5, "密码错误") unless @observe_user.check_password?(password) + return tip_exception(-5, "8~16位密码,支持字母数字和符号") unless password =~ CustomRegexp::PASSWORD + return tip_exception(-5, "密码错误") unless @observe_user.check_password?(password) render_ok end def check_email mail = strip(params[:email]) - return render_error(-2, "邮件格式有误") unless mail =~ CustomRegexp::EMAIL + return tip_exception(-2, "邮件格式有误") unless mail =~ CustomRegexp::EMAIL exist_owner = Owner.find_by(mail: mail) - return render_error(-2, '邮箱已被使用') if exist_owner + return tip_exception(-2, '邮箱已被使用') if exist_owner render_ok end @@ -58,13 +58,13 @@ class Api::V1::UsersController < Api::V1::BaseController mail = strip(params[:email]) code_type = params[:code_type] - return render_error(-2, "邮件格式有误") unless mail =~ CustomRegexp::EMAIL + return tip_exception(-2, "邮件格式有误") unless mail =~ CustomRegexp::EMAIL verifi_code = VerificationCode.where(email: mail, code: code, code_type: code_type).last return render_ok if code == "123123" && EduSetting.get("code_debug") # 万能验证码,用于测试 # TODO 万能验证码,用于测试 - return render_error(-6, "验证码不正确") if verifi_code&.code != code - return render_error(-6, "验证码已失效") if !verifi_code&.effective? + return tip_exception(-6, "验证码不正确") if verifi_code&.code != code + return tip_exception(-6, "验证码已失效") if !verifi_code&.effective? render_ok end diff --git a/app/services/api/v1/users/update_email_service.rb b/app/services/api/v1/users/update_email_service.rb index d5392834..5324ce69 100644 --- a/app/services/api/v1/users/update_email_service.rb +++ b/app/services/api/v1/users/update_email_service.rb @@ -20,10 +20,9 @@ class Api::V1::Users::UpdateEmailService < ApplicationService def call raise Error, errors.full_messages.join(",") unless valid? raise Error, "密码不正确." unless @user.check_password?(@password) - if !(@verify_code == "123123" && EduSetting.get("code_debug")) # 万能验证码,用于测试 # TODO 万能验证码,用于测试 - raise Error, "验证码不正确." if @verify_code&.code != @code - raise Error, "验证码已失效." if !@verify_code&.effective? - end + is_debug = @code == "123123" && EduSetting.get("code_debug") # 万能验证码,用于测试 # TODO 万能验证码,用于测试 + raise Error, "验证码不正确." if @verify_code&.code != @code && !is_debug + raise Error, "验证码已失效." if !@verify_code&.effective? && !is_debug # begin ActiveRecord::Base.transaction do From cfdbc5a68229fd0ec578b7833258e16441462c55 Mon Sep 17 00:00:00 2001 From: yystopf Date: Fri, 21 Oct 2022 15:07:31 +0800 Subject: [PATCH 05/15] =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/api/v1/users/update_email_service.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/services/api/v1/users/update_email_service.rb b/app/services/api/v1/users/update_email_service.rb index 5324ce69..99f99063 100644 --- a/app/services/api/v1/users/update_email_service.rb +++ b/app/services/api/v1/users/update_email_service.rb @@ -20,6 +20,8 @@ class Api::V1::Users::UpdateEmailService < ApplicationService def call raise Error, errors.full_messages.join(",") unless valid? raise Error, "密码不正确." unless @user.check_password?(@password) + exist_owner = Owner.find_by(mail: @mail) + raise Error, "邮箱已被使用." if exist_owner is_debug = @code == "123123" && EduSetting.get("code_debug") # 万能验证码,用于测试 # TODO 万能验证码,用于测试 raise Error, "验证码不正确." if @verify_code&.code != @code && !is_debug raise Error, "验证码已失效." if !@verify_code&.effective? && !is_debug From 3f7366fbcd16a532179f84096aac34bf60330302 Mon Sep 17 00:00:00 2001 From: yystopf Date: Fri, 21 Oct 2022 15:28:48 +0800 Subject: [PATCH 06/15] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E6=9B=B4?= =?UTF-8?q?=E6=94=B9=E7=94=A8=E6=88=B7=E9=80=9A=E7=9F=A5=E9=82=AE=E7=AE=B1?= =?UTF-8?q?=E5=8F=AA=E8=83=BD=E8=87=AA=E5=B7=B1=E6=94=B9=E8=87=AA=E5=B7=B1?= =?UTF-8?q?=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/api/v1/users/update_email_service.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/services/api/v1/users/update_email_service.rb b/app/services/api/v1/users/update_email_service.rb index 99f99063..d17f101f 100644 --- a/app/services/api/v1/users/update_email_service.rb +++ b/app/services/api/v1/users/update_email_service.rb @@ -26,7 +26,7 @@ class Api::V1::Users::UpdateEmailService < ApplicationService raise Error, "验证码不正确." if @verify_code&.code != @code && !is_debug raise Error, "验证码已失效." if !@verify_code&.effective? && !is_debug - # begin + begin ActiveRecord::Base.transaction do change_user_email excute_data_to_gitea @@ -35,15 +35,15 @@ class Api::V1::Users::UpdateEmailService < ApplicationService return gitea_data - # rescue - # raise Error, "服务器错误,请联系系统管理员!" - # end + rescue + raise Error, "服务器错误,请联系系统管理员!" + end end private def request_params { - access_token: token + access_token: @user.gitea_token } end From 8b14ee3c72b6c810b480792485b771d24b5ad12c Mon Sep 17 00:00:00 2001 From: yystopf Date: Wed, 26 Oct 2022 14:49:40 +0800 Subject: [PATCH 07/15] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E6=9B=B4?= =?UTF-8?q?=E6=94=B9=E7=BB=84=E7=BB=87=E4=B8=8B=E9=A1=B9=E7=9B=AE=E6=9D=83?= =?UTF-8?q?=E9=99=90=E5=90=8C=E6=97=B6=E6=9B=B4=E6=94=B9=E7=BB=84=E7=BB=87?= =?UTF-8?q?=E4=B8=8B=E6=9D=83=E9=99=90=E5=90=8C=E6=AD=A5=E8=87=B3gitea?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/concerns/project_operable.rb | 119 ++++++++++++++++++---- app/services/projects/transfer_service.rb | 1 + lib/tasks/sync_data_to_gitea.rake | 4 +- 3 files changed, 105 insertions(+), 19 deletions(-) diff --git a/app/models/concerns/project_operable.rb b/app/models/concerns/project_operable.rb index ee361d2c..7a16f25f 100644 --- a/app/models/concerns/project_operable.rb +++ b/app/models/concerns/project_operable.rb @@ -24,23 +24,62 @@ module ProjectOperable if self.owner.is_a?(Organization) case role_name when 'Manager' + # 构建相应的团队 team = self.owner.teams.admin.take - team = team.nil? ? Team.build(self.user_id, 'admin', '管理员', '', 'admin', false, false) : team - TeamProject.build(self.user_id, team.id, self.id) - OrganizationUser.build(self.user_id, user_id) + if team.nil? + team = Team.build(self.user_id, 'admin', '管理员', '', 'admin', false, false) + gteam = $gitea_client.post_orgs_teams_by_org(self.owner.login, {body: team.to_gitea_hash.to_json}) rescue nil + team.update_attributes!({gtid: gteam["id"]}) unless gteam.nil? + end + + # 设置项目在团队中的访问权限 + team_project = TeamProject.build(self.user_id, team.id, self.id) + tp_result = $gitea_client.put_teams_repos_by_id_org_repo(team.gtid, self.owner.login, self.identifier) rescue nil + + # 新增对应的团队成员 team_user = TeamUser.build(self.user_id, user_id, team.id) + $gitea_client.put_teams_members_by_id_username(team&.gtid, team_user.user&.login) rescue nil # 新增新的 + + # 确保组织成员中有该用户 + OrganizationUser.build(self.user_id, user_id) when 'Developer' + # 构建相应的团队 team = self.owner.teams.write.take - team = team.nil? ? Team.build(self.user_id, 'developer', '开发者', '', 'write', false, false) : team - TeamProject.build(self.user_id, team.id, self.id) - OrganizationUser.build(self.user_id, user_id) + if team.nil? + team = Team.build(self.user_id, 'developer', '开发者', '', 'write', false, false) + gteam = $gitea_client.post_orgs_teams_by_org(self.owner.login, {body: team.to_gitea_hash.to_json}) rescue nil + team.update_attributes!({gtid: gteam["id"]}) unless gteam.nil? + end + + # 设置项目在团队中的访问权限 + team_project = TeamProject.build(self.user_id, team.id, self.id) + tp_result = $gitea_client.put_teams_repos_by_id_org_repo(team.gtid, self.owner.login, self.identifier) rescue nil + + # 新增对应的团队成员 team_user = TeamUser.build(self.user_id, user_id, team.id) + $gitea_client.put_teams_members_by_id_username(team&.gtid, team_user.user&.login) rescue nil # 新增新的 + + # 确保组织成员中有该用户 + OrganizationUser.build(self.user_id, user_id) when 'Reporter' + # 构建相应的团队 team = self.owner.teams.read.take - team = team.nil? ? Team.build(self.user_id, 'reporter', '报告者', '', 'read', false, false) : team - TeamProject.build(self.user_id, team.id, self.id) - OrganizationUser.build(self.user_id, user_id) + if team.nil? + team = Team.build(self.user_id, 'reporter', '报告者', '', 'read', false, false) + gteam = $gitea_client.post_orgs_teams_by_org(self.owner.login, {body: team.to_gitea_hash.to_json}) rescue nil + team.update_attributes!({gtid: gteam["id"]}) unless gteam.nil? + end + + # 设置项目在团队中的访问权限 + team_project = TeamProject.build(self.user_id, team.id, self.id) + tp_result = $gitea_client.put_teams_repos_by_id_org_repo(team.gtid, self.owner.login, self.identifier) rescue nil + + # 新增对应的团队成员 team_user = TeamUser.build(self.user_id, user_id, team.id) + $gitea_client.put_teams_members_by_id_username(team&.gtid, team_user.user&.login) rescue nil # 新增新的 + + # 确保组织成员中有该用户 + OrganizationUser.build(self.user_id, user_id) end end member = members.create!(user_id: user_id, team_user_id: team_user&.id) @@ -71,26 +110,70 @@ module ProjectOperable def change_member_role!(user_id, role) member = self.member(user_id) + # 所有者为组织,并且该用户属于组织成员 if self.owner.is_a?(Organization) && member.team_user.present? case role&.name when 'Manager' + # 构建相应的团队 team = self.owner.teams.admin.take - team = team.nil? ? Team.build(self.user_id, 'admin', '管理员', '', 'admin', false, false) : team - TeamProject.build(self.user_id, team.id, self.id) + if team.nil? + team = Team.build(self.user_id, 'admin', '管理员', '', 'admin', false, false) + gteam = $gitea_client.post_orgs_teams_by_org(self.owner.login, {body: team.to_gitea_hash.to_json}) rescue nil + team.update_attributes!({gtid: gteam["id"]}) unless gteam.nil? + end + + # 设置项目在团队中的访问权限 + team_project = TeamProject.build(self.user_id, team.id, self.id) + tp_result = $gitea_client.put_teams_repos_by_id_org_repo(team.gtid, self.owner.login, self.identifier) rescue nil + + # 更改对应的团队成员 + team_user = member.team_user + $gitea_client.delete_teams_members_by_id_username(team_user.team.gtid, team_user.user&.login) rescue nil # 移除旧的 + $gitea_client.put_teams_members_by_id_username(team&.gtid, team_user.user&.login) rescue nil # 新增新的 + team_user.update_column(:team_id, team.id) + + # 确保组织成员中有该用户 OrganizationUser.build(self.user_id, user_id) - team_user = member.team_user.update(team_id: team&.id) when 'Developer' + # 构建相应的团队 team = self.owner.teams.write.take - team = team.nil? ? Team.build(self.user_id, 'developer', '开发者', '', 'write', false, false) : team - TeamProject.build(self.user_id, team.id, self.id) + if team.nil? + team = Team.build(self.user_id, 'developer', '开发者', '', 'write', false, false) + gteam = $gitea_client.post_orgs_teams_by_org(self.owner.login, {body: team.to_gitea_hash.to_json}) rescue nil + team.update_attributes!({gtid: gteam["id"]}) unless gteam.nil? + end + # 设置项目在团队中的访问权限 + team_project = TeamProject.build(self.user_id, team.id, self.id) + $gitea_client.put_teams_repos_by_id_org_repo(team.gtid, self.owner.login, self.identifier) rescue nil + + # 更改对应的团队成员 + team_user = member.team_user + $gitea_client.delete_teams_members_by_id_username(team_user.team.gtid, team_user.user&.login) rescue nil # 移除旧的 + $gitea_client.put_teams_members_by_id_username(team&.gtid, team_user.user&.login) rescue nil # 新增新的 + team_user.update_column(:team_id, team.id) + OrganizationUser.build(self.user_id, user_id) - team_user = member.team_user.update(team_id: team&.id) when 'Reporter' + # 构建相应的团队 team = self.owner.teams.read.take - team = team.nil? ? Team.build(self.user_id, 'reporter', '报告者', '', 'read', false, false) : team - TeamProject.build(self.user_id, team.id, self.id) + if team.nil? + team = Team.build(self.user_id, 'reporter', '报告者', '', 'read', false, false) + gteam = $gitea_client.post_orgs_teams_by_org(self.owner.login, {body: team.to_gitea_hash.to_json}) rescue nil + team.update_attributes!({gtid: gteam["id"]}) unless gteam.nil? + end + + # 设置项目在团队中的访问权限 + team_project = TeamProject.build(self.user_id, team.id, self.id) + tp_result = $gitea_client.put_teams_repos_by_id_org_repo(team.gtid, self.owner.login, self.identifier) rescue nil + + # 更改对应的团队成员 + team_user = member.team_user + $gitea_client.delete_teams_members_by_id_username(team_user.team.gtid, team_user.user&.login) rescue nil # 移除旧的 + $gitea_client.put_teams_members_by_id_username(team&.gtid, team_user.user&.login) rescue nil # 新增新的 + team_user.update_column(:team_id, team.id) + + # 确保组织成员中有该用户 OrganizationUser.build(self.user_id, user_id) - team_user = member.team_user.update(team_id: team&.id) end end member.member_roles.last.update_attributes!(role: role) diff --git a/app/services/projects/transfer_service.rb b/app/services/projects/transfer_service.rb index 15726396..5df5e9f1 100644 --- a/app/services/projects/transfer_service.rb +++ b/app/services/projects/transfer_service.rb @@ -24,6 +24,7 @@ class Projects::TransferService < ApplicationService private def update_owner + # 转移项目需要移除原来的权限 project.members.map{|m| m.destroy! if m.user_id == owner.id || project.member(new_owner.id) || (new_owner.is_a?(Organization) && new_owner.is_member?(m.user_id)) } project.set_owner_permission(new_owner) project.update!(user_id: new_owner.id) diff --git a/lib/tasks/sync_data_to_gitea.rake b/lib/tasks/sync_data_to_gitea.rake index 8b8dd0ab..b2352201 100644 --- a/lib/tasks/sync_data_to_gitea.rake +++ b/lib/tasks/sync_data_to_gitea.rake @@ -16,8 +16,10 @@ namespace :sync_data_to_gitea do end team.team_users.each do |teamuser| userlogin = teamuser&.user&.login + ou = org.organization_users.find_by(user_id: teamuser.user_id) + OrganizationUser.build(org.id, teamuser.user_id) unless ou.present? next if ($gitea_client.get_teams_members_by_id_username(team.gtid, userlogin) rescue nil) - tu_result = $gitea_client.put_teams_members_by_id_username(team.gtid, userlogin) rescue nil + tu_result = $gitea_client.put_teams_members_by_id_username(team.gtid, userlogin) rescue nil raise ActiveRecord::Rollback if tu_result.nil? end team.team_projects.each do |teamp| From 3d5b2e76d7520791d96929ee75be7d5357c31357 Mon Sep 17 00:00:00 2001 From: yystopf Date: Wed, 26 Oct 2022 14:58:04 +0800 Subject: [PATCH 08/15] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9Aupdate=5Fcolum?= =?UTF-8?q?n=E6=97=A0=E6=B3=95=E8=A7=A6=E5=8F=91count=5Fcache?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/concerns/project_operable.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/models/concerns/project_operable.rb b/app/models/concerns/project_operable.rb index 7a16f25f..1509b1dc 100644 --- a/app/models/concerns/project_operable.rb +++ b/app/models/concerns/project_operable.rb @@ -130,7 +130,7 @@ module ProjectOperable team_user = member.team_user $gitea_client.delete_teams_members_by_id_username(team_user.team.gtid, team_user.user&.login) rescue nil # 移除旧的 $gitea_client.put_teams_members_by_id_username(team&.gtid, team_user.user&.login) rescue nil # 新增新的 - team_user.update_column(:team_id, team.id) + team_user.update_attributes!({team_id: team.id}) # 确保组织成员中有该用户 OrganizationUser.build(self.user_id, user_id) @@ -150,7 +150,7 @@ module ProjectOperable team_user = member.team_user $gitea_client.delete_teams_members_by_id_username(team_user.team.gtid, team_user.user&.login) rescue nil # 移除旧的 $gitea_client.put_teams_members_by_id_username(team&.gtid, team_user.user&.login) rescue nil # 新增新的 - team_user.update_column(:team_id, team.id) + team_user.update_attributes!({team_id: team.id}) OrganizationUser.build(self.user_id, user_id) when 'Reporter' @@ -170,7 +170,7 @@ module ProjectOperable team_user = member.team_user $gitea_client.delete_teams_members_by_id_username(team_user.team.gtid, team_user.user&.login) rescue nil # 移除旧的 $gitea_client.put_teams_members_by_id_username(team&.gtid, team_user.user&.login) rescue nil # 新增新的 - team_user.update_column(:team_id, team.id) + team_user.update_attributes!({team_id: team.id}) # 确保组织成员中有该用户 OrganizationUser.build(self.user_id, user_id) From 84a8339a04f23715384fce2f823544af751a4f18 Mon Sep 17 00:00:00 2001 From: yystopf Date: Wed, 26 Oct 2022 15:16:06 +0800 Subject: [PATCH 09/15] =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/tasks/sync_data_to_gitea.rake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/tasks/sync_data_to_gitea.rake b/lib/tasks/sync_data_to_gitea.rake index b2352201..e2c16225 100644 --- a/lib/tasks/sync_data_to_gitea.rake +++ b/lib/tasks/sync_data_to_gitea.rake @@ -28,7 +28,7 @@ namespace :sync_data_to_gitea do end end org.organization_users.each do |user| - next if ($gitea_client.get_orgs_members_by_org_username(org.login, user.login) rescue nil) + $gitea_client.get_orgs_members_by_org_username(org.login, user.login) rescue next user.destroy! end end From e72dfa4973d9d964a190d0b6888b6b3065891584 Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 27 Oct 2022 09:28:52 +0800 Subject: [PATCH 10/15] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E8=BF=81=E7=A7=BB=E8=AE=BE=E7=BD=AE=E6=9D=83=E9=99=90?= =?UTF-8?q?=E5=9C=A8=E6=9B=B4=E6=94=B9=E6=8B=A5=E6=9C=89=E8=80=85=E4=B9=8B?= =?UTF-8?q?=E5=90=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/projects/transfer_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/projects/transfer_service.rb b/app/services/projects/transfer_service.rb index 5df5e9f1..ea16bcf9 100644 --- a/app/services/projects/transfer_service.rb +++ b/app/services/projects/transfer_service.rb @@ -26,8 +26,8 @@ class Projects::TransferService < ApplicationService def update_owner # 转移项目需要移除原来的权限 project.members.map{|m| m.destroy! if m.user_id == owner.id || project.member(new_owner.id) || (new_owner.is_a?(Organization) && new_owner.is_member?(m.user_id)) } - project.set_owner_permission(new_owner) project.update!(user_id: new_owner.id) + project.set_owner_permission(new_owner) end def update_repo_url From 7d4c0df6911c7f6b16af2770d1a0e5aabb1ba851 Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 27 Oct 2022 09:55:55 +0800 Subject: [PATCH 11/15] =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/projects/transfer_service.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/services/projects/transfer_service.rb b/app/services/projects/transfer_service.rb index ea16bcf9..244a2d31 100644 --- a/app/services/projects/transfer_service.rb +++ b/app/services/projects/transfer_service.rb @@ -25,6 +25,7 @@ class Projects::TransferService < ApplicationService private def update_owner # 转移项目需要移除原来的权限 + project.members.update_all(team_user_id: nil) project.members.map{|m| m.destroy! if m.user_id == owner.id || project.member(new_owner.id) || (new_owner.is_a?(Organization) && new_owner.is_member?(m.user_id)) } project.update!(user_id: new_owner.id) project.set_owner_permission(new_owner) From e15809c1860037827428781074374203110a378d Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 27 Oct 2022 10:48:24 +0800 Subject: [PATCH 12/15] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E6=AD=A3=E5=B8=B8=E8=BD=AC=E7=A7=BB=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/concerns/project_operable.rb | 2 +- app/services/projects/transfer_service.rb | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/models/concerns/project_operable.rb b/app/models/concerns/project_operable.rb index 1509b1dc..bdce2fda 100644 --- a/app/models/concerns/project_operable.rb +++ b/app/models/concerns/project_operable.rb @@ -17,7 +17,7 @@ module ProjectOperable owner.build_permit_team_projects!(id) # 避免自己创建的项目,却无法拥有访问权,因为该用户所在团队暂未获得项目访问权 return if creator.nil? || owner.is_owner?(creator.id) - add_member!(creator.id, "Manager") + add_member!(creator.id, "Manager") if creator.is_a?(User) end def add_member!(user_id, role_name='Developer') diff --git a/app/services/projects/transfer_service.rb b/app/services/projects/transfer_service.rb index 244a2d31..8ed58f8a 100644 --- a/app/services/projects/transfer_service.rb +++ b/app/services/projects/transfer_service.rb @@ -51,7 +51,8 @@ class Projects::TransferService < ApplicationService def gitea_update_owner begin - @gitea_repo = Gitea::Repository::TransferService.call(owner&.gitea_token, owner&.login, project.identifier, new_owner&.login) + @gitea_repo = $gitea_client.post_repos_transfer_by_owner_repo(owner&.login, project.identifier, {body: {new_owner: new_owner&.login}.to_json}) + # @gitea_repo = Gitea::Repository::TransferService.call(owner&.gitea_token, owner&.login, project.identifier, new_owner&.login) rescue Exception => e Rails.logger.info("##### Project transfer_service, gitea transfer error #{e}") end From 9664ca001e3fb30e5478a858f36979825805ac7a Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 27 Oct 2022 17:57:55 +0800 Subject: [PATCH 13/15] =?UTF-8?q?=E6=96=B0=E5=A2=9E:=20=E9=82=AE=E7=AE=B1?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=E7=A0=81=E9=87=8D=E6=96=B0=E5=8F=91=E9=80=81?= =?UTF-8?q?=E5=90=8E=E4=B9=8B=E5=89=8D=E7=9A=84=E9=AA=8C=E8=AF=81=E7=A0=81?= =?UTF-8?q?=E9=9C=80=E8=AE=BE=E7=BD=AE=E4=B8=BA=E6=97=A0=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/api/v1/users_controller.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/controllers/api/v1/users_controller.rb b/app/controllers/api/v1/users_controller.rb index 1babd9bc..3c6bec6a 100644 --- a/app/controllers/api/v1/users_controller.rb +++ b/app/controllers/api/v1/users_controller.rb @@ -29,6 +29,8 @@ class Api::V1::UsersController < Api::V1::BaseController tip_exception(-2,"邮件发送失败,请稍后重试") end ver_params = {code_type: code_type, code: verification_code, email: mail} + last_code = VerificationCode.where(code_type: code_type, email: mail).last + last_code.update_attributes!({created_at: Time.current - 10.minute}) if last_code.present? data = VerificationCode.new(ver_params) if data.save! render_ok From 423d5a9316543ce4f0480eebcb375774d3b080e5 Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 1 Nov 2022 15:29:07 +0800 Subject: [PATCH 14/15] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E9=A1=B9=E7=9B=AE=E6=9D=83=E9=99=90=E5=88=B0=E7=BB=84?= =?UTF-8?q?=E7=BB=87=E6=97=B6=E9=9C=80=E9=A2=84=E5=85=88=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E5=AD=98=E5=9C=A8=E4=BA=8E=E5=9B=A2=E9=98=9F?= =?UTF-8?q?=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/concerns/project_operable.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/models/concerns/project_operable.rb b/app/models/concerns/project_operable.rb index bdce2fda..10b03cf7 100644 --- a/app/models/concerns/project_operable.rb +++ b/app/models/concerns/project_operable.rb @@ -130,7 +130,7 @@ module ProjectOperable team_user = member.team_user $gitea_client.delete_teams_members_by_id_username(team_user.team.gtid, team_user.user&.login) rescue nil # 移除旧的 $gitea_client.put_teams_members_by_id_username(team&.gtid, team_user.user&.login) rescue nil # 新增新的 - team_user.update_attributes!({team_id: team.id}) + team_user.update_attributes!({team_id: team.id}) unless team.team_users.exists?(user_id: member.user_id) # 确保组织成员中有该用户 OrganizationUser.build(self.user_id, user_id) @@ -150,7 +150,7 @@ module ProjectOperable team_user = member.team_user $gitea_client.delete_teams_members_by_id_username(team_user.team.gtid, team_user.user&.login) rescue nil # 移除旧的 $gitea_client.put_teams_members_by_id_username(team&.gtid, team_user.user&.login) rescue nil # 新增新的 - team_user.update_attributes!({team_id: team.id}) + team_user.update_attributes!({team_id: team.id}) unless team.team_users.exists?(user_id: member.user_id) OrganizationUser.build(self.user_id, user_id) when 'Reporter' @@ -170,7 +170,7 @@ module ProjectOperable team_user = member.team_user $gitea_client.delete_teams_members_by_id_username(team_user.team.gtid, team_user.user&.login) rescue nil # 移除旧的 $gitea_client.put_teams_members_by_id_username(team&.gtid, team_user.user&.login) rescue nil # 新增新的 - team_user.update_attributes!({team_id: team.id}) + team_user.update_attributes!({team_id: team.id}) unless team.team_users.exists?(user_id: member.user_id) # 确保组织成员中有该用户 OrganizationUser.build(self.user_id, user_id) From 07aefa79eb6ccfdab2a37cff624863dcce35bec9 Mon Sep 17 00:00:00 2001 From: yystopf Date: Wed, 2 Nov 2022 14:21:49 +0800 Subject: [PATCH 15/15] =?UTF-8?q?=E6=9B=B4=E6=94=B9=EF=BC=9A=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E5=90=8E=E5=8F=B0=E7=AE=A1=E7=90=86=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E7=B2=BE=E9=80=89=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/admins/projects/shared/_list.html.erb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/views/admins/projects/shared/_list.html.erb b/app/views/admins/projects/shared/_list.html.erb index 720b08da..eb0e6125 100644 --- a/app/views/admins/projects/shared/_list.html.erb +++ b/app/views/admins/projects/shared/_list.html.erb @@ -5,7 +5,6 @@ ID 项目名称 公开 - 精选 推荐 Issues 资源 @@ -27,7 +26,6 @@ <%= link_to(project.name, "/#{project&.owner&.login}/#{project.identifier}", target: '_blank') %> <%= project.is_public ? '√' : '' %> - <%= project.is_pinned ? '√' : '' %> <%= project.recommend ? '√' : '' %> <%= project.issues.size %> <%= project.attachments.size %> @@ -40,8 +38,6 @@ <%= project.created_on&.strftime('%Y-%m-%d %H:%M') %> <% if project.is_public %> - <%= javascript_void_link '精选', class: 'action pinned-action', data: { id: project.id }, style: project.is_pinned ? 'display: none;' : '' %> - <%= javascript_void_link '取消精选', class: 'action unpinned-action', data: { id: project.id }, style: project.is_pinned ? '' : 'display: none;' %> <%= javascript_void_link '推荐', class: 'action recommend-action', data: { id: project.id }, style: project.recommend ? 'display: none;' : '' %> <%= javascript_void_link '取消推荐', class: 'action unrecommend-action', data: { id: project.id }, style: project.recommend ? '' : 'display: none;' %> <%= link_to "设置推荐等级", edit_admins_project_path(project.id), remote: true, class: "action edit-recommend-action", style: project.recommend ? '' : 'display: none;' %>