添加获取gitlab项目成员列表接口

GitlabVersion
nwb 11 years ago
parent cc6949d427
commit e98f548bc3

@ -37,8 +37,8 @@ class RepositoriesController < ApplicationController
accept_rss_auth :revisions
# hidden repositories filter // 隐藏代码过滤器
before_filter :check_hidden_repo, :only => [:show, :stats, :revisions, :revision, :diff ]
helper :repositories
include RepositoriesHelper
helper :repositories
include GitlabHelper
#@root_path = RepositoriesHelper::ROOT_PATH
@ -244,17 +244,24 @@ class RepositoriesController < ApplicationController
private :pickup_extra_info
def committers
@committers = @repository.committers
@users = @project.users
additional_user_ids = @committers.collect(&:last).collect(&:to_i) - @users.collect(&:id)
@users += User.find_all_by_id(additional_user_ids) unless additional_user_ids.empty?
@users.compact!
@users.sort!
if request.post? && params[:committers].is_a?(Hash)
# Build a hash with repository usernames as keys and corresponding user ids as values
@repository.committer_ids = params[:committers].values.inject({}) {|h, c| h[c.first] = c.last; h}
flash[:notice] = l(:notice_successful_update)
redirect_to settings_project_path(@project, :tab => 'repositories')
gitlab_project = GitlabProject.find_by_repository_url(@repository.url)
if gitlab_project
# gitlab项目
else
# 老模式
@committers = @repository.committers
@users = @project.users
additional_user_ids = @committers.collect(&:last).collect(&:to_i) - @users.collect(&:id)
@users += User.find_all_by_id(additional_user_ids) unless additional_user_ids.empty?
@users.compact!
@users.sort!
if request.post? && params[:committers].is_a?(Hash)
# Build a hash with repository usernames as keys and corresponding user ids as values
@repository.committer_ids = params[:committers].values.inject({}) {|h, c| h[c.first] = c.last; h}
flash[:notice] = l(:notice_successful_update)
redirect_to settings_project_path(@project, :tab => 'repositories')
end
end
end

@ -200,6 +200,35 @@ module GitlabHelper
end
end
# 获取指定gitlab项目用户列表
# project_id:gitlab项目编号
# add by nwb
def get_project_users(project_id)
login_check
url = REPO_IP_ADDRESS + GITLAB_API + "/projects/" + project_id.to_s + "/members"
uri = URI.parse(url)
uri.query = URI.encode_www_form(params)
http = Net::HTTP.new uri.host, uri.port
#https协议额外解析
if uri.scheme == 'https'
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
http.use_ssl = true
end
begin
request = Net::HTTP::Get.new uri.request_uri
res = http.start { |http| http.request request }
if res.code == '200'
temp = ActiveSupport::JSON.decode(res.body)
return true
else
return false
end
rescue =>err
logger.error "gitlab: error: #{err.message}"
return nil
end
end
# 给用户添加一个可操作的项目
# 若用户已在该项目中,权限级别取新权限与现有权限的最大值
# project_id:项目在gitlab中的id user_id:用户在gitlab中的id

@ -142,7 +142,13 @@ class Repository < ActiveRecord::Base
if gitlabproject.nil?
# 兼容老git模式
ip = RepositoriesHelper::REPO_IP_ADDRESS
if ip.nil?
ip = Setting.repository_domain
end
project_path_cut = RepositoriesHelper::PROJECT_PATH_CUT
if project_path_cut.nil?
project_path_cut = 40
end
"http://" + self.login.to_s + self.identifier.to_s + ip + self.url.slice(project_path_cut, self.url.length)
else
self.url

Loading…
Cancel
Save