forgeplus/app/models/concerns/droneable.rb

47 lines
1.1 KiB
Ruby
Raw Normal View History

2020-08-06 14:26:19 +08:00
module Droneable
extend ActiveSupport::Concern
included do
end
def devops_uninit?
self.devops_step === User::DEVOPS_UNINIT
end
def devops_unverified?
self.devops_step === User::DEVOPS_UNVERIFIED
end
2020-10-16 09:42:08 +08:00
def devops_certification?
self.devops_step === User::DEVOPS_CERTIFICATION
end
2020-08-06 14:26:19 +08:00
def set_drone_step!(step)
self.update_column(:devops_step, step)
end
2020-08-28 10:25:08 +08:00
def ci_certification?
2020-09-23 11:06:54 +08:00
return false if self.is_a?(AnonymousUser)
2020-10-16 09:47:36 +08:00
devops_certification? && Ci::User.exists?(user_login: self.login)
2020-08-28 10:25:08 +08:00
end
def unbind_account!
2020-09-27 15:30:44 +08:00
user_projects = self.projects
user_projects.update_all(open_devops: false, open_devops_count: 0)
set_drone_step!(User::DEVOPS_UNINIT)
# TODO
# 删除用户项目下的与ci相关的所有webhook
user_projects.select(:id, :identifier, :gitea_webhook_id).each do |project|
if project.gitea_webhook_id
result = Gitea::Hooks::DestroyService.call(self.gitea_token, self.login, project.identifier, project.gitea_webhook_id)
project.update_column(:gitea_webhook_id, nil) if result.status == 204
end
end
end
2020-08-06 14:26:19 +08:00
module ClassMethods
end
end