Showing 1 changed files with 16 additions and 20 deletions
+16 -20
script/gitprep-shell
... ...
@@ -14,8 +14,8 @@ my $debug = 0;
14 14
 my $project_re = qr/[a-zA-Z0-9_\-\.]+$/;
15 15
 
16 16
 # User
17
-my $session_user = shift;
18
-die "User not specifed" unless defined $session_user;
17
+my $session_user_id = shift;
18
+die "User not specifed" unless defined $session_user_id;
19 19
 
20 20
 # Application
21 21
 my $app = Mojo::Server->new->load_app("$FindBin::Bin/gitprep");
... ...
@@ -47,26 +47,22 @@ die "I don't like newlines in the command: $ssh_original_command\n"
47 47
   if $ssh_original_command ne $ssh_original_command_tmp;
48 48
 
49 49
 # Project
50
-my ($verb, $user, $project) = parse_ssh_original_command($ssh_original_command);
51
-sanity($project);
50
+my ($verb, $user_id, $project_id) = parse_ssh_original_command($ssh_original_command);
51
+sanity($project_id);
52 52
 
53 53
 # Can access
54 54
 my $can_access;
55
-if ($session_user eq $user) {
55
+if ($session_user_id eq $user_id) {
56 56
   $can_access = 1;
57 57
 }
58 58
 else {
59
-  my $row = $app->dbi->model('collaboration')->select(
60
-    id => [$user, $project, $session_user]
61
-  )->one;
62
-  
63
-  $can_access = $row ? 1 : 0;
59
+  $can_access = $app->gitprep_api->is_collaborator($user_id, $project_id, $session_user_id);
64 60
 }
65
-die qq|User "$session_user" can't access repository "$user/$project.git"\n|
61
+die qq|User "$session_user_id" can't access repository "$user_id/$project_id.git"\n|
66 62
   unless $can_access; 
67 63
 
68 64
 # Command
69
-my $rep_info = $app->rep_info($user, $project);
65
+my $rep_info = $app->rep_info($user_id, $project_id);
70 66
 my $rep_git_dir = $rep_info->{git_dir};
71 67
 my $repository = "'$rep_git_dir'";
72 68
 my @git_shell_cmd = ("git", "shell", "-c", "$verb $repository");
... ...
@@ -83,10 +79,10 @@ sub parse_ssh_original_command {
83 79
 
84 80
   my $git_commands = "git-upload-pack|git-receive-pack|git-upload-archive";
85 81
   if ($ssh_original_command =~ m(^($git_commands) '.*/([a-zA-Z1-9_]+)/([^\/]+?)\.git'$)) {
86
-    my ($verb, $user, $project) = ($1, $2, $3);
87
-    warn "User:$user, Project:$project" if $debug;
88
-    die "invalid repo name: '$project'\n" if $project !~ $project_re;
89
-    return ($verb, $user, $project);
82
+    my ($verb, $user_id, $project_id) = ($1, $2, $3);
83
+    warn "User:$user_id, Project:$project_id" if $debug;
84
+    die "invalid repo name: '$project_id'\n" if $project_id !~ $project_re;
85
+    return ($verb, $user_id, $project_id);
90 86
   }
91 87
   else {
92 88
     die "Invalid command: $ssh_original_command\n";
... ...
@@ -94,10 +90,10 @@ sub parse_ssh_original_command {
94 90
 }
95 91
 
96 92
 sub sanity {
97
-  my $project = shift;
98
-  die "'$project' contains bad characters\n" if $project !~ $project_re;
99
-  die "'$project' ends with a '/'\n"         if $project =~ m(/$);
100
-  die "'$project' contains '..'\n"           if $project =~ m(\.\.);
93
+  my $project_id = shift;
94
+  die "'$project_id' contains bad characters\n" if $project_id !~ $project_re;
95
+  die "'$project_id' ends with a '/'\n"         if $project_id =~ m(/$);
96
+  die "'$project_id' contains '..'\n"           if $project_id =~ m(\.\.);
101 97
 }
102 98
 
103 99
 =head1 NAME