Showing 2 changed files with 24 additions and 13 deletions
+7 -13
lib/Gitprep.pm
... ...
@@ -191,24 +191,16 @@ sub startup {
191 191
             my $r = $r->under(sub {
192 192
               my $self = shift;
193 193
               
194
+              my $api = $self->gitprep_api;
195
+              
194 196
               # Basic auth when push request
195 197
               my $service = $self->param('service') || '';
196 198
               if ($service eq 'git-receive-pack') {
197 199
                 
198 200
                 $self->basic_auth("Git Area", sub {
199 201
                   my ($user, $password) = @_;
200
-
201
-                  my $row
202
-                    = $dbi->model('user')->select(['password', 'salt'], id => $user)->one;
203 202
                   
204
-                  return unless $row;
205
-                  
206
-                  my $api = $self->gitprep_api;
207
-                  my $is_valid = $api->check_password(
208
-                    $password,
209
-                    $row->{salt},
210
-                    $row->{password}
211
-                  );
203
+                  my $is_valid = $api->check_user_and_password($user, $password);
212 204
                   
213 205
                   return $is_valid;
214 206
                 });
... ...
@@ -240,13 +232,15 @@ sub startup {
240 232
             my $r = $r->under(sub {
241 233
               my $self = shift;
242 234
               
235
+              # API
236
+              my $api = $self->gitprep_api;
237
+              
243 238
               # Private
244
-              my $session_user = $self->session('user');
245 239
               my $user = $self->param('user');
246 240
               my $project = $self->param('project');
247 241
               my $private = $self->app->manager->is_private_project($user, $project);
248 242
               if ($private) {
249
-                if ($session_user eq $user) {
243
+                if ($api->logined($user)) {
250 244
                   return 1;
251 245
                 }
252 246
                 else {
+17
lib/Gitprep/API.pm
... ...
@@ -25,6 +25,23 @@ sub check_password {
25 25
   return md5_hex(md5_hex "$salt$password") eq $password_encrypted;
26 26
 }
27 27
 
28
+sub check_user_and_password {
29
+  my ($self, $user, $password) = @_;
30
+  
31
+  my $row
32
+    = $self->app->dbi->model('user')->select(['password', 'salt'], id => $user)->one;
33
+  
34
+  return unless $row;
35
+  
36
+  my $is_valid = $self->check_password(
37
+    $password,
38
+    $row->{salt},
39
+    $row->{password}
40
+  );
41
+  
42
+  return $is_valid;
43
+}
44
+
28 45
 sub new {
29 46
   my ($class, $cntl) = @_;
30 47