From 47093ffcb94b32581c94448b6f2581c84b2e926a Mon Sep 17 00:00:00 2001 From: moshenglv Date: Thu, 31 Dec 2020 19:39:20 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E7=94=A8drone=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../concerns/ci/cloud_account_manageable.rb | 37 ++++++++++++------- app/libs/ci/drone/api.rb | 8 +++- 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/app/controllers/concerns/ci/cloud_account_manageable.rb b/app/controllers/concerns/ci/cloud_account_manageable.rb index f1d4dcfe..9c350d77 100644 --- a/app/controllers/concerns/ci/cloud_account_manageable.rb +++ b/app/controllers/concerns/ci/cloud_account_manageable.rb @@ -154,21 +154,32 @@ module Ci::CloudAccountManageable def drone_oauth_user!(url, state) cloud_account = current_user.ci_cloud_account + # 如果是使用trustie服务器,则只需要调用drone接口创建用户即可 if cloud_account.server_type == Ci::CloudAccount::SERVER_TYPE_TRUSTIE - url = "#{@cloud_account.drone_url}/login" + config = Rails.application.config_for(:configuration).symbolize_keys! + trustie_drone_config = config[:trustie_drone].symbolize_keys! + createUserParams = { + login: cloud_account.account, + token: trustie_drone_config[:admin_token], + email: trustie_drone_config[:email], + avatar_url: trustie_drone_config[:avatar_url] + } + #创建drone用户 + result = Ci::Drone::API.new(trustie_drone_config[:admin_token], cloud_account.drone_url, nil, nil, createUserParams).create_user + result['login'] == cloud_account.account ? true : false + elsif + logger.info "[drone] drone_oauth_user url: #{url}" + conn = Faraday.new(url: url) do |req| + req.request :url_encoded + req.adapter Faraday.default_adapter + req.headers["cookie"] = "_session_=#{SecureRandom.hex(28)}; _oauth_state_=#{state}" + end + + response = conn.get + logger.info "[drone] response headers: #{response.headers}" + + response.headers['location'].include?('error') ? false : true end - - logger.info "[drone] drone_oauth_user url: #{url}" - conn = Faraday.new(url: url) do |req| - req.request :url_encoded - req.adapter Faraday.default_adapter - req.headers["cookie"] = "_session_=#{SecureRandom.hex(28)}; _oauth_state_=#{state}" - end - - response = conn.get - logger.info "[drone] response headers: #{response.headers}" - - response.headers['location'].include?('error') ? false : true end private diff --git a/app/libs/ci/drone/api.rb b/app/libs/ci/drone/api.rb index dd346d7b..c2bb0c0f 100644 --- a/app/libs/ci/drone/api.rb +++ b/app/libs/ci/drone/api.rb @@ -78,5 +78,11 @@ class Ci::Drone::API < Ci::Drone::Request def sync_repos post(endpoint, "/api/users/repos", drone_token: drone_token) end - + + # Creates a user. + # POST /api/users + def create_user + post(endpoint, "/api/users", {login: options[:login], email: options[:email], avatar_url:options[:avatar_url],active:true, drone_token: options[:token]}) + end + end