Apache-Sling
view release on metacpan or search on metacpan
lib/Apache/Sling/Authz.pm view on Meta::CPAN
=cut
sub new {
my ( $class, $authn, $verbose, $log ) = @_;
if ( !defined $authn ) { croak 'no authn provided!'; }
my $response;
$verbose = ( defined $verbose ? $verbose : 0 );
my $content = {
BaseURL => $$authn->{'BaseURL'},
Authn => $authn,
Message => "",
Response => \$response,
Verbose => $verbose,
Log => $log
};
bless( $content, $class );
return $content;
}
#}}}
#{{{sub set_results
=pod
=head2 set_results
Populate the message and response with results returned from performing query:
=cut
sub set_results {
my ( $content, $message, $response ) = @_;
$content->{'Message'} = $message;
$content->{'Response'} = $response;
return 1;
}
#}}}
#{{{ sub command_line
sub command_line {
my ( $authz, @ARGV ) = @_;
my $sling = Apache::Sling->new;
my $config = $authz->config( $sling, @ARGV );
return $authz->run( $sling, $config );
}
#}}}
#{{{sub config
sub config {
my ( $authz, $sling, @ARGV ) = @_;
my $authz_config = $authz->config_hash( $sling, @ARGV );
GetOptions(
$authz_config, 'auth=s',
'help|?', 'log|L=s',
'man|M', 'pass|p=s',
'threads|t=s', 'url|U=s',
'user|u=s', 'verbose|v+',
'addChildNodes!', 'all!',
'delete|d', 'lifecycleManage!',
'lockManage!', 'modifyACL!',
'modifyProps!', 'nodeTypeManage!',
'principal|P=s', 'readACL!',
'read!', 'remote|r=s',
'removeChilds!', 'removeNode!',
'retentionManage!', 'versionManage!',
'view|V', 'write!'
) or $authz->help();
return $authz_config;
}
#}}}
#{{{sub config_hash
sub config_hash {
my ( $authz, $sling, @ARGV ) = @_;
my $delete;
my $principal;
my $remote_node;
my $view;
# privileges:
my $add_child_nodes;
my $all;
my $life_cycle_manage;
my $lock_manage;
my $modify_acl;
my $modify_props;
my $node_type_manage;
my $read;
my $read_acl;
my $remove_childs;
my $remove_node;
my $retention_manage;
my $version_manage;
my $write;
my %authz_config = (
'auth' => \$sling->{'Auth'},
'help' => \$sling->{'Help'},
'log' => \$sling->{'Log'},
'man' => \$sling->{'Man'},
'pass' => \$sling->{'Pass'},
'threads' => \$sling->{'Threads'},
'url' => \$sling->{'URL'},
'user' => \$sling->{'User'},
'verbose' => \$sling->{'Verbose'},
'addChildNodes' => \$add_child_nodes,
'all' => \$all,
'delete' => \$delete,
'lifecycleManage' => \$life_cycle_manage,
'lockManage' => \$lock_manage,
'modifyACL' => \$modify_acl,
'modifyProps' => \$modify_props,
'nodeTypeManage' => \$node_type_manage,
'principal' => \$principal,
'readACL' => \$read_acl,
'read' => \$read,
'remote' => \$remote_node,
'removeChilds' => \$remove_childs,
'removeNode' => \$remove_node,
'retentionManage' => \$retention_manage,
'versionManage' => \$version_manage,
'view' => \$view,
'write' => \$write
);
return \%authz_config;
}
#}}}
#{{{sub del
=pod
=head2 del
Delete the access controls for a given principal on a given node:
=cut
sub del {
my ( $content, $remoteDest, $principal ) = @_;
my $res = Apache::Sling::Request::request(
\$content,
Apache::Sling::AuthzUtil::delete_setup(
$content->{'BaseURL'}, $remoteDest, $principal
)
);
my $success = Apache::Sling::AuthzUtil::delete_eval($res);
my $message = "Privileges on \"$remoteDest\" for \"$principal\" ";
$message .= ( $success ? "removed." : "were not removed." );
$content->set_results( "$message", $res );
return $success;
}
#}}}
#{{{sub get_acl
=pod
=head2 get_acl
( run in 1.351 second using v1.01-cache-2.11-cpan-c966e8aa7e8 )