##// END OF EJS Templates
Merged r7809 from trunk (#9567)....
Jean-Philippe Lang -
r8000:40a14cafbc3f
parent child
Show More
@@ -328,11 +328,13 sub is_member {
328 my $project_id = get_project_identifier($r);
328 my $project_id = get_project_identifier($r);
329
329
330 my $pass_digest = Digest::SHA1::sha1_hex($redmine_pass);
330 my $pass_digest = Digest::SHA1::sha1_hex($redmine_pass);
331
332 my $access_mode = defined $read_only_methods{$r->method} ? "R" : "W";
331
333
332 my $cfg = Apache2::Module::get_config(__PACKAGE__, $r->server, $r->per_dir_config);
334 my $cfg = Apache2::Module::get_config(__PACKAGE__, $r->server, $r->per_dir_config);
333 my $usrprojpass;
335 my $usrprojpass;
334 if ($cfg->{RedmineCacheCredsMax}) {
336 if ($cfg->{RedmineCacheCredsMax}) {
335 $usrprojpass = $cfg->{RedmineCacheCreds}->get($redmine_user.":".$project_id);
337 $usrprojpass = $cfg->{RedmineCacheCreds}->get($redmine_user.":".$project_id.":".$access_mode);
336 return 1 if (defined $usrprojpass and ($usrprojpass eq $pass_digest));
338 return 1 if (defined $usrprojpass and ($usrprojpass eq $pass_digest));
337 }
339 }
338 my $query = $cfg->{RedmineQuery};
340 my $query = $cfg->{RedmineQuery};
@@ -345,7 +347,7 sub is_member {
345 unless ($auth_source_id) {
347 unless ($auth_source_id) {
346 my $method = $r->method;
348 my $method = $r->method;
347 my $salted_password = Digest::SHA1::sha1_hex($salt.$pass_digest);
349 my $salted_password = Digest::SHA1::sha1_hex($salt.$pass_digest);
348 if ($hashed_password eq $salted_password && ((defined $read_only_methods{$method} && $permissions =~ /:browse_repository/) || $permissions =~ /:commit_access/) ) {
350 if ($hashed_password eq $salted_password && (($access_mode eq "R" && $permissions =~ /:browse_repository/) || $permissions =~ /:commit_access/) ) {
349 $ret = 1;
351 $ret = 1;
350 last;
352 last;
351 }
353 }
@@ -364,7 +366,7 sub is_member {
364 filter => "(".$rowldap[6]."=%s)"
366 filter => "(".$rowldap[6]."=%s)"
365 );
367 );
366 my $method = $r->method;
368 my $method = $r->method;
367 $ret = 1 if ($ldap->authenticate($redmine_user, $redmine_pass) && ((defined $read_only_methods{$method} && $permissions =~ /:browse_repository/) || $permissions =~ /:commit_access/));
369 $ret = 1 if ($ldap->authenticate($redmine_user, $redmine_pass) && (($access_mode eq "R" && $permissions =~ /:browse_repository/) || $permissions =~ /:commit_access/));
368
370
369 }
371 }
370 $sthldap->finish();
372 $sthldap->finish();
@@ -378,10 +380,10 sub is_member {
378
380
379 if ($cfg->{RedmineCacheCredsMax} and $ret) {
381 if ($cfg->{RedmineCacheCredsMax} and $ret) {
380 if (defined $usrprojpass) {
382 if (defined $usrprojpass) {
381 $cfg->{RedmineCacheCreds}->set($redmine_user.":".$project_id, $pass_digest);
383 $cfg->{RedmineCacheCreds}->set($redmine_user.":".$project_id.":".$access_mode, $pass_digest);
382 } else {
384 } else {
383 if ($cfg->{RedmineCacheCredsCount} < $cfg->{RedmineCacheCredsMax}) {
385 if ($cfg->{RedmineCacheCredsCount} < $cfg->{RedmineCacheCredsMax}) {
384 $cfg->{RedmineCacheCreds}->set($redmine_user.":".$project_id, $pass_digest);
386 $cfg->{RedmineCacheCreds}->set($redmine_user.":".$project_id.":".$access_mode, $pass_digest);
385 $cfg->{RedmineCacheCredsCount}++;
387 $cfg->{RedmineCacheCredsCount}++;
386 } else {
388 } else {
387 $cfg->{RedmineCacheCreds}->clear();
389 $cfg->{RedmineCacheCreds}->clear();
General Comments 0
You need to be logged in to leave comments. Login now