@@ -328,11 +328,13 sub is_member { | |||
|
328 | 328 | my $project_id = get_project_identifier($r); |
|
329 | 329 | |
|
330 | 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 | 334 | my $cfg = Apache2::Module::get_config(__PACKAGE__, $r->server, $r->per_dir_config); |
|
333 | 335 | my $usrprojpass; |
|
334 | 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 | 338 | return 1 if (defined $usrprojpass and ($usrprojpass eq $pass_digest)); |
|
337 | 339 | } |
|
338 | 340 | my $query = $cfg->{RedmineQuery}; |
@@ -345,7 +347,7 sub is_member { | |||
|
345 | 347 | unless ($auth_source_id) { |
|
346 | 348 | my $method = $r->method; |
|
347 | 349 | my $salted_password = Digest::SHA1::sha1_hex($salt.$pass_digest); |
|
348 |
if ($hashed_password eq $salted_password && ((de |
|
|
350 | if ($hashed_password eq $salted_password && (($access_mode eq "R" && $permissions =~ /:browse_repository/) || $permissions =~ /:commit_access/) ) { | |
|
349 | 351 | $ret = 1; |
|
350 | 352 | last; |
|
351 | 353 | } |
@@ -364,7 +366,7 sub is_member { | |||
|
364 | 366 | filter => "(".$rowldap[6]."=%s)" |
|
365 | 367 | ); |
|
366 | 368 | my $method = $r->method; |
|
367 |
$ret = 1 if ($ldap->authenticate($redmine_user, $redmine_pass) && ((de |
|
|
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 | 372 | $sthldap->finish(); |
@@ -378,10 +380,10 sub is_member { | |||
|
378 | 380 | |
|
379 | 381 | if ($cfg->{RedmineCacheCredsMax} and $ret) { |
|
380 | 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 | 384 | } else { |
|
383 | 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 | 387 | $cfg->{RedmineCacheCredsCount}++; |
|
386 | 388 | } else { |
|
387 | 389 | $cfg->{RedmineCacheCreds}->clear(); |
General Comments 0
You need to be logged in to leave comments.
Login now