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 def devops_certification? self.devops_step === User::DEVOPS_CERTIFICATION end def set_drone_step!(step) self.update_column(:devops_step, step) end def ci_certification? return false if self.is_a?(AnonymousUser) devops_certification? && Ci::User.exists?(user_login: self.login) end def unbind_account! 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 module ClassMethods end end