gitweb: Add a per-repository authorization hook.
Add a configuration variable that can be used to specify an arbitrary subroutine that will be called in the same situations where $export_ok is checked, and its return value used to decide whether the repository is to be shown. This allows the user to implement custom authentication schemes, for example by issuing a subrequest through mod_perl and checking if Apache will authorize it. Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com> Acked-by: Jakub Narebski <jnareb@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
ec26f098a6
commit
dd7f5f105a
@ -95,6 +95,11 @@ our $default_projects_order = "project";
|
||||
# (only effective if this variable evaluates to true)
|
||||
our $export_ok = "++GITWEB_EXPORT_OK++";
|
||||
|
||||
# show repository only if this subroutine returns true
|
||||
# when given the path to the project, for example:
|
||||
# sub { return -e "$_[0]/git-daemon-export-ok"; }
|
||||
our $export_auth_hook = undef;
|
||||
|
||||
# only allow viewing of repositories also shown on the overview page
|
||||
our $strict_export = "++GITWEB_STRICT_EXPORT++";
|
||||
|
||||
@ -400,7 +405,8 @@ sub check_head_link {
|
||||
sub check_export_ok {
|
||||
my ($dir) = @_;
|
||||
return (check_head_link($dir) &&
|
||||
(!$export_ok || -e "$dir/$export_ok"));
|
||||
(!$export_ok || -e "$dir/$export_ok") &&
|
||||
(!$export_auth_hook || $export_auth_hook->($dir)));
|
||||
}
|
||||
|
||||
# process alternate names for backward compatibility
|
||||
|
Reference in New Issue
Block a user