From 795e06f6c58271216cf8b0825e7873fd80feeccd Mon Sep 17 00:00:00 2001 From: Jasder <2053003901@@qq.com> Date: Fri, 3 Jul 2020 16:23:06 +0800 Subject: [PATCH 1/2] FIX merge pr's bug --- app/controllers/pull_requests_controller.rb | 5 ++++- app/services/gitea/pull_request/merge_service.rb | 12 +++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/app/controllers/pull_requests_controller.rb b/app/controllers/pull_requests_controller.rb index f7a6ce76b..d32b934fe 100644 --- a/app/controllers/pull_requests_controller.rb +++ b/app/controllers/pull_requests_controller.rb @@ -181,6 +181,8 @@ class PullRequestsController < ApplicationController end def pr_merge + return render_forbidden("你没有权限操作.") if @project.reporter?(current_user) + if params[:do].blank? normal_status(-1, "请选择合并方式") else @@ -191,7 +193,8 @@ class PullRequestsController < ApplicationController MergeMessageField: params[:body], MergeTitleField: params[:title] } - merge_pr = Gitea::PullRequest::MergeService.new(current_user, @repository.try(:identifier), @pull_request.try(:gpid), requests_params).call + merge_pr = Gitea::PullRequest::MergeService.call(current_user.gitea_token, @repository.owner.login, + @repository.try(:identifier), @pull_request.try(:gpid), requests_params) if @pull_request.update_attribute(:status, 1) && merge_pr[:status].to_i == 200 @pull_request&.project_trends&.update_all(action_type: "close") @issue&.custom_journal_detail("merge", "", "该合并请求已被合并", current_user&.id) diff --git a/app/services/gitea/pull_request/merge_service.rb b/app/services/gitea/pull_request/merge_service.rb index 8ccf13d4e..2129bbeaf 100644 --- a/app/services/gitea/pull_request/merge_service.rb +++ b/app/services/gitea/pull_request/merge_service.rb @@ -1,6 +1,6 @@ # Merge a pull request class Gitea::PullRequest::MergeService < Gitea::ClientService - attr_reader :user, :repo, :pull_request_id, :params + attr_reader :token, :owner, :repo, :pull_request_id, :params # parameters: # repo: name of the repo @@ -8,8 +8,10 @@ class Gitea::PullRequest::MergeService < Gitea::ClientService # params: # title: merge标题 # message: merge说明 - def initialize(user, repo, pull_request_id, params={}) - @user = user + # eq: Gitea::PullRequest::MergeService.call(current_user.gitea_token, @repo.owner.lgoin, @repo.identifier, params) + def initialize(token, owner, repo, pull_request_id, params={}) + @token = token + @owner = owner @repo = repo @params = params @pull_request_id = pull_request_id @@ -21,11 +23,11 @@ class Gitea::PullRequest::MergeService < Gitea::ClientService private def url - "/repos/#{user.login}/#{repo}/pulls/#{pull_request_id}/merge" + "/repos/#{owner}/#{repo}/pulls/#{pull_request_id}/merge" end def request_params - Hash.new.merge(token: user.gitea_token, data: params) + Hash.new.merge(token: token, data: params) end end From 8f6b455a95c9eed8fc40c7171bbafb9ef3180852 Mon Sep 17 00:00:00 2001 From: "sylor_huang@126.com" Date: Fri, 3 Jul 2020 17:00:55 +0800 Subject: [PATCH 2/2] change pr codes --- app/controllers/pull_requests_controller.rb | 1 - app/models/project.rb | 2 +- app/views/pull_requests/show.json.jbuilder | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/controllers/pull_requests_controller.rb b/app/controllers/pull_requests_controller.rb index d32b934fe..f17382c2d 100644 --- a/app/controllers/pull_requests_controller.rb +++ b/app/controllers/pull_requests_controller.rb @@ -174,7 +174,6 @@ class PullRequestsController < ApplicationController end def show - @user_permission = current_user.present? && current_user.logged? && (@issue.assigned_to_id == current_user.id || @project.user_id == current_user.id || @project.manager?(current_user) ) @issue_user = @issue.user @issue_assign_to = @issue.get_assign_user diff --git a/app/models/project.rb b/app/models/project.rb index e70c932bd..65579dae3 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -47,7 +47,7 @@ class Project < ApplicationRecord end def members_user_infos - members.joins("left join users on members.user_id = users.id").includes(:user).where("users.type = ?", "User") + members.joins(:roles).where("roles.name in ('Manager', 'Developer')").joins("left join users on members.user_id = users.id ").includes(:user).where("users.type = ?", "User") # members.joins("left join users on members.user_id = users.id").select("users.id", "users.login","users.firstname","users.lastname") # .pluck("users.id", "users.login","users.lastname", "users.firstname") end diff --git a/app/views/pull_requests/show.json.jbuilder b/app/views/pull_requests/show.json.jbuilder index 0c497d6c7..b525d5438 100644 --- a/app/views/pull_requests/show.json.jbuilder +++ b/app/views/pull_requests/show.json.jbuilder @@ -11,7 +11,7 @@ end json.issue do json.extract! @issue, :id,:subject,:description,:is_private, :branch_name json.project_author_name @project.owner.try(:login) - json.user_permission @user_permission + #json.user_permission @user_permission json.closed_on @issue.closed_on.present? ? format_time(@issue.closed_on) : "" json.created_at format_time(@issue.created_on) json.assign_user_name @issue_assign_to.try(:show_real_name)