11require 'open3'
2- require 'net/http'
32
43require_relative 'gitlab_config'
4+ require_relative 'gitlab_net'
55
66class GitlabShell
7- attr_accessor :username , :repo_name , :git_cmd , :repos_path , :repo_name
7+ attr_accessor :key_id , :repo_name , :git_cmd , :repos_path , :repo_name
88
99 def initialize
10- @username = ARGV . shift
10+ @key_id = ARGV . shift
1111 @origin_cmd = ENV [ 'SSH_ORIGINAL_COMMAND' ]
1212 @repos_path = GitlabConfig . new . repos_path
1313 end
@@ -17,7 +17,7 @@ def exec
1717 parse_cmd
1818
1919 if git_cmds . include? ( @git_cmd )
20- ENV [ 'GL_USER' ] = @username
20+ ENV [ 'GL_USER' ] = @key_id
2121
2222 if validate_access
2323 process_cmd
@@ -26,7 +26,8 @@ def exec
2626 puts 'Not allowed command'
2727 end
2828 else
29- puts "Welcome #{ @username } !"
29+ user = api . discover ( @key_id )
30+ puts "Welcome to GitLab, #{ user [ 'name' ] } !"
3031 end
3132 end
3233
@@ -49,10 +50,11 @@ def process_cmd
4950
5051 def validate_access
5152 @ref_name = 'master' # just hardcode it cause we dont know ref
52- project_name = @repo_name . gsub ( "'" , "" )
53- project_name = project_name . gsub ( /\. git$/ , "" )
54- url = "http://127.0.0.1:3000/api/v3/allowed?project=#{ project_name } &username=#{ @username } &action=#{ @git_cmd } &ref=#{ @ref_name } "
55- resp = Net ::HTTP . get_response ( URI . parse ( url ) )
56- resp . code == '200' && resp . body == 'true'
53+
54+ api . allowed? ( @git_cmd , @repo_name , @key_id , @ref_name )
55+ end
56+
57+ def api
58+ GitlabNet . new
5759 end
5860end
0 commit comments