Geoffrey Young wrote: > ok, I did some investigating and I really think that the mod_perl API is > troubled wrt auth_type. from what I tell, $r->auth_type returns the > per-dir AuthType config, leaving no way to access r->ap_auth_type.
sorry for making the list listen to my thoughts whilst I sort things out. the answer should have been obvious but I didn't see it. anyway, the attached patch fixes both the mod_perl API and the compat layer. all tests pass (for me at least). --Geoff
Index: Changes =================================================================== RCS file: /home/cvspublic/modperl-2.0/Changes,v retrieving revision 1.124 diff -u -r1.124 Changes --- Changes 12 Feb 2003 23:42:23 -0000 1.124 +++ Changes 14 Feb 2003 19:11:16 -0000 @@ -10,6 +10,12 @@ =item 1.99_09-dev +Open up r->ap_auth_type to make it possible to write custom +authen handlers that don't rely on Basic or ap_* functions. +Also, fix Apache::compat $r->connection->auth_type to use +r->ap_auth_type and make both that and $r-connection->user +writable. [Geoffrey Young] + Add Apache::compat methods: $r->connection->auth_type and $r->connection->user (requires 'PerlOptions +GlobalRequest') + tests [Stas] Index: lib/Apache/compat.pm =================================================================== RCS file: /home/cvspublic/modperl-2.0/lib/Apache/compat.pm,v retrieving revision 1.77 diff -u -r1.77 compat.pm --- lib/Apache/compat.pm 12 Feb 2003 23:42:23 -0000 1.77 +++ lib/Apache/compat.pm 14 Feb 2003 19:11:16 -0000 @@ -534,8 +534,8 @@ # auth_type and user records don't exist in 2.0 conn_rec struct # 'PerlOptions +GlobalRequest' is required -sub auth_type { Apache->request->auth_type } -sub user { Apache->request->user } +sub auth_type { shift; Apache->request->ap_auth_type(@_) } +sub user { shift; Apache->request->user(@_) } 1; __END__ Index: t/response/TestCompat/conn_authen.pm =================================================================== RCS file: /home/cvspublic/modperl-2.0/t/response/TestCompat/conn_authen.pm,v retrieving revision 1.1 diff -u -r1.1 conn_authen.pm --- t/response/TestCompat/conn_authen.pm 12 Feb 2003 23:42:23 -0000 1.1 +++ t/response/TestCompat/conn_authen.pm 14 Feb 2003 19:11:16 -0000 @@ -1,6 +1,6 @@ package TestCompat::conn_authen; -# simply check that we can retrieve: +# compat checks for # $r->connection->auth_type # $r->connection->user # both records don't exist in 2.0 conn_rec and therefore require @@ -16,19 +16,47 @@ use Apache::Constants qw(OK REMOTE_HOST); sub handler { + my $r = shift; + my $req_auth_type = $r->connection->auth_type || ''; + + die "request auth_type is '$req_auth_type', should be empty" + if $req_auth_type; + + # get_basic_auth_pw populates $r->user and $r->ap_auth_type my($rc, $sent_pw) = $r->get_basic_auth_pw; return $rc if $rc != Apache::OK; - my $auth_type = $r->connection->auth_type || ''; - die "auth_type is '$auth_type', should be 'Basic'" - unless $auth_type eq 'Basic'; + $req_auth_type = $r->connection->auth_type || ''; + + die "request auth_type is '$req_auth_type', should be 'Basic'" + unless $req_auth_type eq 'Basic'; + + my $config_auth_type = $r->auth_type || ''; + + die "httpd.conf auth_type is '$config_auth_type', should be 'Basic'" + unless $config_auth_type eq 'Basic'; my $user = $r->connection->user || ''; - die "user is '$user', while expecting 'dougm'" + + die "user is '$user', should be 'dougm'" unless $user eq 'dougm'; + + # make sure we can set both + $r->connection->auth_type('sailboat'); + $r->connection->user('geoff'); + + $user = $r->connection->user || ''; + + die "user is '$user', should be 'geoff'" + unless $user eq 'geoff'; + + $req_auth_type = $r->connection->auth_type || ''; + + die "request auth_type is '$req_auth_type', should be 'sailboat'" + unless $req_auth_type eq 'sailboat'; OK; } Index: xs/maps/apache_structures.map =================================================================== RCS file: /home/cvspublic/modperl-2.0/xs/maps/apache_structures.map,v retrieving revision 1.18 diff -u -r1.18 apache_structures.map --- xs/maps/apache_structures.map 12 Jan 2003 02:31:54 -0000 1.18 +++ xs/maps/apache_structures.map 14 Feb 2003 19:11:17 -0000 @@ -46,7 +46,7 @@ content_languages > vlist_validator user -- ap_auth_type #should use ap_auth_type function instead + ap_auth_type ~ no_cache no_local_copy unparsed_uri
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]