X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=lib%2FApache2_4%2FAuthzCaps.pm;fp=lib%2FApache2_4%2FAuthzCaps.pm;h=23a9a9300d947f766786153fb28d402a7f982833;hb=d586dfdf2bade50843c83de8a2c58b7c481c0916;hp=0000000000000000000000000000000000000000;hpb=139b349117794fae33d5132b9dd97a0f9ab03ee6;p=apache2-authzcaps.git
diff --git a/lib/Apache2_4/AuthzCaps.pm b/lib/Apache2_4/AuthzCaps.pm
new file mode 100644
index 0000000..23a9a93
--- /dev/null
+++ b/lib/Apache2_4/AuthzCaps.pm
@@ -0,0 +1,66 @@
+package Apache2_4::AuthzCaps;
+
+use 5.014000;
+use strict;
+use warnings;
+
+our $VERSION = '0.001001';
+
+use Apache2::AuthzCaps 'hascaps';
+use Apache2::Const qw/AUTHZ_GRANTED AUTHZ_DENIED AUTHZ_DENIED_NO_USER/;
+use Apache2::RequestRec;
+use Apache2::RequestUtil;
+
+##################################################
+
+# General handler template stolen from Apache2_4::AuthCookie
+sub handler {
+ my ($r, $caps) = @_;
+ my $user = $r->user;
+ local $Apache2::AuthzCaps::rootdir = $r->dir_config('AuthzCapsRootdir');
+ return AUTHZ_DENIED_NO_USER unless $user;
+ my @caps = split ' ', $caps;
+ hascaps($user, @caps) ? AUTHZ_GRANTED : AUTHZ_DENIED
+}
+
+1;
+__END__
+
+=encoding utf-8
+
+=head1 NAME
+
+Apache2_4::AuthzCaps - mod_perl2 capability authorization for Apache 2.4
+
+=head1 SYNOPSIS
+
+ # In Apache2 config
+ PerlAddAuthzProvider cap Apache2_4::AuthzCaps
+
+ # Insert authentication here
+ PerlSetVar AuthzCapsRootdir /path/to/user/directory
+ Require cap staff important
+ Require cap admin
+
+ # This will:
+ # 1) Let important staff members access /protected
+ # 2) Let admins access /protected
+ # 3) Not let anyone else (such as an important non-staff member or an non-important staff member) access /protected
+
+=head1 DESCRIPTION
+
+Apache2_4::AuthzCaps is a modification of L for
+Apache 2.4. See that module's documentation for helper functions and
+more information.
+
+=head1 AUTHOR
+
+Marius Gavrilescu, Emarius@ieval.roE
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright (C) 2013-2015 by Marius Gavrilescu
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself, either Perl version 5.14.2 or,
+at your option, any later version of Perl 5 you may have available.