Browse Source

Merge pull request '组织权限修复,以及一些错误数据修复脚本' (#127) from yystopf/forgeplus:hh_team_unit into develop

tags/v3.1.5
jasder 4 years ago
parent
commit
b9bf3fb5ff
14 changed files with 87 additions and 12 deletions
  1. +10
    -0
      app/controllers/organizations/team_users_controller.rb
  2. +2
    -2
      app/controllers/projects/teams_controller.rb
  3. +1
    -0
      app/controllers/pull_requests_controller.rb
  4. +1
    -1
      app/controllers/users/base_controller.rb
  5. +1
    -1
      app/models/team.rb
  6. +1
    -1
      app/models/team_unit.rb
  7. +2
    -2
      app/services/organizations/teams/create_service.rb
  8. +1
    -1
      app/services/organizations/teams/update_service.rb
  9. +1
    -1
      app/services/projects/apply_transfer_service.rb
  10. +2
    -2
      app/services/projects/transfer_service.rb
  11. +1
    -0
      app/views/owners/index.json.jbuilder
  12. +2
    -1
      app/views/projects/teams/index.json.jbuilder
  13. +1
    -0
      app/views/pull_requests/index.json.jbuilder
  14. +61
    -0
      lib/tasks/fix_some_error_data.rake

+ 10
- 0
app/controllers/organizations/team_users_controller.rb View File

@@ -29,6 +29,11 @@ class Organizations::TeamUsersController < Organizations::BaseController
ActiveRecord::Base.transaction do
@team_user.destroy!
Gitea::Organization::TeamUser::DeleteService.call(@organization.gitea_token, @team.gtid, @operate_user.login)
org_team_users = @organization.team_users.where(user_id: @operate_user.id)
unless org_team_users.present?
@organization.organization_users.find_by(user_id: @operate_user.id).destroy!
Gitea::Organization::OrganizationUser::DeleteService.call(@organization.gitea_token, @organization.login, @operate_user.login)
end
render_ok
end
rescue Exception => e
@@ -43,6 +48,11 @@ class Organizations::TeamUsersController < Organizations::BaseController
ActiveRecord::Base.transaction do
@team_user.destroy!
Gitea::Organization::TeamUser::DeleteService.call(@organization.gitea_token, @team.gtid, current_user.login)
org_team_users = @organization.team_users.where(user_id: current_user.id)
unless org_team_users.present?
@organization.organization_users.find_by(user_id: current_user.id).destroy!
Gitea::Organization::OrganizationUser::DeleteService.call(@organization.gitea_token, @organization.login, current_user.login)
end
render_ok
end
rescue Exception => e


+ 2
- 2
app/controllers/projects/teams_controller.rb View File

@@ -14,7 +14,7 @@ class Projects::TeamsController < Projects::BaseController
def create
ActiveRecord::Base.transaction do
@team_project = TeamProject.build(@owner.id, @operate_team.id, @project.id)
Gitea::Organization::TeamProject::CreateService.call(@owner.gitea_token, @operate_team.gtid, @owner.login, @project.identifier)
Gitea::Organization::TeamProject::CreateService.call(current_user.gitea_token, @operate_team.gtid, @owner.login, @project.identifier)
render_ok
end
rescue Exception => e
@@ -25,7 +25,7 @@ class Projects::TeamsController < Projects::BaseController
def destroy
ActiveRecord::Base.transaction do
@team_project.destroy!
Gitea::Organization::TeamProject::DeleteService.call(@owner.gitea_token, @operate_team.gtid, @owner.login, @project.identifier)
Gitea::Organization::TeamProject::DeleteService.call(current_user.gitea_token, @operate_team.gtid, @owner.login, @project.identifier)
render_ok
end
rescue Exception => e


+ 1
- 0
app/controllers/pull_requests_controller.rb View File

@@ -19,6 +19,7 @@ class PullRequestsController < ApplicationController
@close_issues = @filter_issues.joins(:pull_request).where(pull_requests: {status: PullRequest::CLOSED})
@merged_issues = @filter_issues.joins(:pull_request).where(pull_requests: {status: PullRequest::MERGED})
@user_admin_or_member = current_user.present? && (current_user.admin || @project.member?(current_user))
@user_admin_or_developer = current_user.present? && (current_user.admin || @project.all_developers.include?(current_user))

scopes = Issues::ListQueryService.call(issues,params.delete_if{|k,v| v.blank?}, "PullRequest")
@issues_size = scopes.size


+ 1
- 1
app/controllers/users/base_controller.rb View File

@@ -5,7 +5,7 @@ class Users::BaseController < ApplicationController
helper_method :observed_logged_user?, :observed_user
def observed_user
@_observed_user ||= (User.find_by_id(params[:user_id]) || User.find_by_login(params[:user_id]))
@_observed_user ||= (User.find_by_login(params[:user_id]) || User.find_by_id(params[:user_id]))
end
def observed_logged_user?


+ 1
- 1
app/models/team.rb View File

@@ -31,7 +31,7 @@ class Team < ApplicationRecord

validates :name, uniqueness: {scope: :organization_id}

enum authorize: {common: 0, read: 1, write: 2, admin: 3, owner: 4}
enum authorize: {read: 1, write: 2, admin: 3, owner: 4}

def self.build(organization_id, name, nickname, description, authorize, includes_all_project, can_create_org_project)
self.create!(organization_id: organization_id,


+ 1
- 1
app/models/team_unit.rb View File

@@ -20,7 +20,7 @@ class TeamUnit < ApplicationRecord
belongs_to :organization
belongs_to :team

enum unit_type: {code: 1, issues: 2, pulls: 3, releases: 4}
enum unit_type: {code: 1, issues: 2, pulls: 3, wiki: 4, releases: 5}

validates :unit_type, uniqueness: { scope: [:organization_id, :team_id]}



+ 2
- 2
app/services/organizations/teams/create_service.rb View File

@@ -37,7 +37,7 @@ class Organizations::Teams::CreateService < ApplicationService
end

def authorize
params[:authorize].present? ? params[:authorize] : "common"
params[:authorize].present? ? params[:authorize] : "read"
end

def includes_all_project
@@ -54,7 +54,7 @@ class Organizations::Teams::CreateService < ApplicationService
end

def units_params
%w(admin owner).include?(authorize) ? %w(code issues pulls releases) : params[:unit_types]
%w(code issues pulls wiki releases)
end

def create_units


+ 1
- 1
app/services/organizations/teams/update_service.rb View File

@@ -33,7 +33,7 @@ class Organizations::Teams::UpdateService < ApplicationService
end

def units_params
%w(admin owner).include?(team.authorize) ? %w(code issues pulls releases) : params[:unit_types]
%w(code issues pulls wiki releases)
end

def update_team(update_params)


+ 1
- 1
app/services/projects/apply_transfer_service.rb View File

@@ -30,7 +30,7 @@ class Projects::ApplyTransferService < ApplicationService

def is_permit_owner
return true unless @owner.is_a?(Organization)
return @owner.is_owner?(@user)
return @owner.is_admin?(@user)
end

def create_apply


+ 2
- 2
app/services/projects/transfer_service.rb View File

@@ -23,12 +23,12 @@ class Projects::TransferService < ApplicationService

private
def update_owner
project.members.find_by(user_id: owner.id).destroy! if owner.is_a?(User)
project.members.map{|m| m.destroy! if m.user_id == owner.id || (new_owner.is_a?(Organization) && new_owner.is_member?(m.user_id)) }
project.update!(user_id: new_owner.id)
end

def update_repo_url
project.repository.update!(url: @gitea_repo["clone_url"])
project.repository.update!(user_id: new_owner.id, url: @gitea_repo["clone_url"])
end

def update_visit_teams


+ 1
- 0
app/views/owners/index.json.jbuilder View File

@@ -2,6 +2,7 @@ json.total_count @owners.size
json.owners @owners.each do |owner|
json.id owner.id
json.type owner.type
json.login owner.login
json.name owner&.show_real_name
json.avatar_url url_to_avatar(owner)
end

+ 2
- 1
app/views/projects/teams/index.json.jbuilder View File

@@ -1,5 +1,6 @@
json.total_count @teams.total_count
json.can_add @owner.is_owner?(current_user.id) || @owner&.repo_admin_change_team_access
json.teams @teams.each do |team|
json.(team, :id, :name, :authorize)
json.can_remove !team.includes_all_project && team&.organization&.repo_admin_change_team_access
json.can_remove !team.includes_all_project && (@owner.is_owner?(current_user.id) || team&.organization&.repo_admin_change_team_access)
end

+ 1
- 0
app/views/pull_requests/index.json.jbuilder View File

@@ -5,6 +5,7 @@ json.merged_issues_size @merged_issues.size
json.search_count @issues_size
json.limit @limit
json.user_admin_or_member @user_admin_or_member
json.user_admin_or_developer @user_admin_or_developer
json.project_name @project.name
json.project_author_name @project.owner.try(:login)



+ 61
- 0
lib/tasks/fix_some_error_data.rake View File

@@ -0,0 +1,61 @@
desc "Fix Some Unstep Data"

namespace :fix_some_error_data do
task org_member_and_project_member: :environment do
puts "======Begin: fix organization memberr======"
fix_org_count = 0
OrganizationUser.find_each do |org_user|
org = org_user.organization
if org.team_users.where(user_id: org_user.user_id).blank?
Gitea::Organization::OrganizationUser::DeleteService.call(org_user.organization.gitea_token, org_user.organization.login, org_user&.user&.login)
org_user.destroy
fix_org_count += 1
end
end
puts "======Count: #{fix_org_count}======"
puts "======End: fix organization member and project member======"
puts "======Begin: fix project member======"
fix_pro_count = 0
Member.joins(project: :owner).where(users: {type: 'Organization'}).find_each do |member|
if member.project.owner.team_users.where(user_id: member.user_id).blank?
next
else
member.destroy
fix_pro_count += 1
end
end
puts "======Count: #{fix_pro_count}======"
puts "======End: fix project member======"
end

task open_full_gitea_team_authorize: :environment do
puts "======Begin: fix open full team authorize======"
team_count = 0
Team.find_each do |team|
team.team_units.destroy_all
%w(code issues pulls wiki releases).each do |unit|
TeamUnit.build(team.organization_id, team.id, unit)
end
Gitea::Organization::Team::UpdateService.call(team&.organization&.gitea_token, team)
team_count += 1
end
puts "======Count: #{team_count}======"
puts "======End: fix open full team authorize======"
end

task transfer_repository_user_id: :environment do
puts "======Begin: fix open full team authorize======"
repo_count = 0
AppliedTransferProject.find_each do |transfer|
next unless transfer.project.present?
next unless transfer.project.repository.present?
if transfer.project.user_id != transfer.project.repository.user_id
transfer.project.repository.update(user_id: transfer.project.user_id)
repo_count += 1
end
end
puts "======Count: #{repo_count}======"
puts "======End: fix open full team authorize======"

end
end

Loading…
Cancel
Save