FIX 完善ci服务的解绑流程
This commit is contained in:
parent
74b2a5b021
commit
32ec60bbe3
|
@ -123,16 +123,30 @@ class Ci::CloudAccountsController < Ci::BaseController
|
|||
|
||||
def unbind_account!(user)
|
||||
cloud_account = user.ci_cloud_account
|
||||
|
||||
case user.devops_step
|
||||
when User::DEVOPS_UNINIT
|
||||
return render_error('你还未绑定CI服务器')
|
||||
when User::DEVOPS_UNINIT, cloud_account.blank?
|
||||
return render_error('你未绑定CI服务器')
|
||||
when User::DEVOPS_UNVERIFIED
|
||||
cloud_account.destroy
|
||||
cloud_account.destroy!
|
||||
when User::DEVOPS_CERTIFICATION
|
||||
cloud_account.ci_user.destroy
|
||||
cloud_account.ci_user.destroy!
|
||||
end
|
||||
user.projects.update_all(open_devops: false)
|
||||
user.set_drone_step!(User::DEVOPS_UNINIT)
|
||||
|
||||
# TODO
|
||||
# 删除用户项目下的与ci相关的所有webhook
|
||||
user.projects.each do |project|
|
||||
result = Gitea::Hooks::ListService.call(user.gitea_token, user.login, project.identifier)
|
||||
|
||||
if result.status == 200
|
||||
hooks = JSON.parse(result.body)
|
||||
hooks.each do |hook|
|
||||
if hook['config']['url'].include? cloud_account.drone_host
|
||||
Gitea::Hooks::DestroyService.call(user.gitea_token, user.login, project.identifier, hook['id'])
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -5,7 +5,7 @@ class HooksController < ApplicationController
|
|||
before_action :set_repository
|
||||
|
||||
def index
|
||||
hooks_response = Gitea::Hooks::ListService.new(@user, @repository.try(:identifier)).call
|
||||
hooks_response = Gitea::Hooks::ListService.new(@user.gitea_token, @user.login, @repository.try(:identifier)).call
|
||||
if hooks_response.status == 200
|
||||
lists = JSON.parse(hooks_response.body)
|
||||
@hooks_size = lists.size
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
class Ci::Perm < Ci::RemoteBase
|
||||
belongs_to :user, foreign_key: :perm_user_id
|
||||
self.primary_key = nil
|
||||
|
||||
belongs_to :ci_user, class_name: 'Ci::User', foreign_key: :perm_user_id
|
||||
|
||||
end
|
||||
|
|
|
@ -1,23 +1,23 @@
|
|||
class Gitea::Hooks::DestroyService < Gitea::ClientService
|
||||
attr_reader :user, :repo_name,:hook_id
|
||||
attr_reader :token, :owner, :repo, :hook_id
|
||||
|
||||
def initialize(user, repo_name, hook_id)
|
||||
@user = user
|
||||
@repo_name = repo_name
|
||||
def initialize(token, owner, repo, hook_id)
|
||||
@token = token
|
||||
@owner = owner
|
||||
@repo = repo
|
||||
@hook_id = hook_id
|
||||
end
|
||||
|
||||
def call
|
||||
response = delete(url, params)
|
||||
delete(url, params)
|
||||
end
|
||||
|
||||
private
|
||||
def params
|
||||
Hash.new.merge(token: user.gitea_token)
|
||||
Hash.new.merge(token: token)
|
||||
end
|
||||
|
||||
def url
|
||||
"/repos/#{user.login}/#{repo_name}/hooks/#{hook_id}".freeze
|
||||
"/repos/#{owner}/#{repo}/hooks/#{hook_id}".freeze
|
||||
end
|
||||
|
||||
end
|
|
@ -1,23 +1,27 @@
|
|||
class Gitea::Hooks::ListService < Gitea::ClientService
|
||||
attr_reader :user, :repo_name
|
||||
attr_reader :token, :owner, :repo, :params
|
||||
|
||||
def initialize(user, repo_name)
|
||||
@user = user
|
||||
@repo_name = repo_name
|
||||
@body = body
|
||||
def initialize(token, owner, repo_name, params={})
|
||||
@token = token
|
||||
@owner = owner
|
||||
@repo = repo
|
||||
@params = params
|
||||
end
|
||||
|
||||
def call
|
||||
response = get(url, params)
|
||||
get(url, params)
|
||||
end
|
||||
|
||||
private
|
||||
def params
|
||||
Hash.new.merge(token: user.gitea_token)
|
||||
Hash.new.merge(token: token,
|
||||
page: params[:page],
|
||||
limit: params[:limit]
|
||||
).compact!
|
||||
end
|
||||
|
||||
def url
|
||||
"/repos/#{user.login}/#{repo_name}/hooks".freeze
|
||||
"/repos/#{owner}/#{repo}/hooks".freeze
|
||||
end
|
||||
|
||||
end
|
Loading…
Reference in New Issue