Class/Protected =============== DESCRIPTION With this module you can protect the methods of any object. The access is handled via an ACL (the Decision::ACL manpage). "Class::Protected" is implemented via a proxy object (the Class::Proxy manpage). SYNOPSIS use Class::Protected; # We build the ACL my $acl = Class::NiceApi->new( victim => Decision::ACL->new(), style => 'custom', table => { run_acl => 'RunACL' } ); $acl->push_rule( Decision::ACL::Rule->new({ now => 0, action => 'allow', # Action to be applied when rule is concerned, allow, deny, permit or block. fields => { pkg => 'User', method => 'firstname', uid => 'murat', } }), ); $acl->push_rule( Decision::ACL::Rule->new({ now => 0, action => 'deny', fields => { pkg => 'User', method => 'firstname', uid => 'john', } }) ); $acl->push_rule( Decision::ACL::Rule->new({ now => 0, action => 'deny', fields => { pkg => 'User', method => 'ALL', uid => 'james', } }) ); for ( qw(murat john) ) { println "$_ was ", { Class::Protected::ACL_RULE_ALLOW() => 'granted', Class::Protected::ACL_RULE_DENY() => 'rejected' }->{ $acl->run_acl( { pkg => 'User', method => 'firstname', uid => $_ , } ) }; } # Restrict access to $u's methods (see $ACL above) my $prot = Class::Protected->new( victim => Human->new( firstname => 'john', lastname => 'doe' ), acl => $acl ); $Class::Protected::uid = 'murat'; print $prot->firstname, "\n"; # everything ok since $Class::Protected::uid eq 'murat' (ACL allow) $Class::Protected::uid = 'james'; print $prot->firstname, "\n"; # dies because ACL deny on user INSTALLATION To install this module type the following: perl Makefile.PL make make test make install INSTALLATION To install this module type the following: perl Makefile.PL make make test make install COPYRIGHT AND LICENCE Copyright (C) 2003 Murat Uenalan This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.