Apache-SWIT-Security
view release on metacpan or search on metacpan
lib/Apache/SWIT/Security/Maker.pm view on Meta::CPAN
use strict;
use warnings FATAL => 'all';
package Apache::SWIT::Security::Maker::MF;
use base 'Apache::SWIT::Subsystem::Makefile';
sub make_this_subsystem_dumps {
my %ot = shift()->SUPER::make_this_subsystem_dumps(@_);
delete $ot{original_tree}->{dumped_tests}->{"020_secparams.t"};
return %ot;
}
package Apache::SWIT::Security::Maker;
use base 'Apache::SWIT::Subsystem::Maker';
use Apache::SWIT::Security::Role::Loader;
use Data::Dumper;
use YAML;
use Apache::SWIT::Maker::Config;
use Apache::SWIT::Maker::Manifest;
use Apache::SWIT::Maker::Conversions;
use File::Slurp;
sub makefile_class { return ref(shift()) . "::MF"; }
sub write_loader_dump_pm {
my ($self, $data, $class_name, $more) = @_;
my $dump = Dumper($data);
$dump =~ s/'Apache::SWIT::Security::Role::$class_name'/\$class/;
my $rc = Apache::SWIT::Maker::Config->instance->{env_vars}
->{'AS_SECURITY_' . uc($class_name) };
my $file = "blib/lib/" . conv_class_to_file($rc);
unlink $file;
mkpath_write_file($file, conv_module_contents($rc, <<ENDS));
use base 'Apache::SWIT::Security::Role::$class_name';
$more
sub create {
my \$class = shift;
my $dump
return \$VAR1;
}
ENDS
append_file("blib/conf/do_swit_startups.pl", "use $rc;\n");
}
sub write_sec_modules {
my ($self) = @_;
my $loader = Apache::SWIT::Security::Role::Loader->new;
my $tree = Apache::SWIT::Maker::Config->instance;
$loader->load_role_container($tree->{roles});
$loader->load($tree);
my @roles = map { [ $_->[0], uc($_->[1]) . "_ROLE" ] }
$loader->roles_container->roles_list;
my $m = "use base 'Exporter';\nour \@EXPORT = qw("
. join(" ", map { $_->[1] } @roles) . ");\n"
. join("\n", map { "use constant $_->[1] => $_->[0];" } @roles);
$self->write_loader_dump_pm($loader->roles_container, 'Container', $m);
$self->write_loader_dump_pm($loader->url_manager, 'Manager', '');
my $uc = $tree->{env_vars}->{AS_SECURITY_USER_CLASS};
my $s = "use $uc;\n$uc->swit_startup;\n";
write_file("blib/conf/do_swit_startups.pl"
, $s . read_file("blib/conf/do_swit_startups.pl"));
}
sub install_subsystem {
my ($self, $module) = @_;
$self->SUPER::install_subsystem($module);
my $tree = Apache::SWIT::Maker::Config->instance;
my $full_class = Apache::SWIT::Maker::Config->instance->root_class
. '::' . $module;
my $ot = $self->this_subsystem_original_tree;
$tree->{roles} = $ot->{roles};
$tree->{env_vars}->{ "AS_SECURITY_" . uc($_) }
( run in 2.062 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )