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;

lib/Apache/SWIT/Security/Maker.pm  view on Meta::CPAN

	$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($_) }
		= $full_class . "::Role::" . $_ for qw(Container Manager);
	$tree->{env_vars}->{AS_SECURITY_USER_CLASS}
		= 'Apache::SWIT::Security::DB::User';

lib/Apache/SWIT/Security/Session.pm  view on Meta::CPAN

}

sub is_allowed {
	my ($self, $rel_uri) = @_;
	my $uri = URI->new_abs($rel_uri, $self->request->uri);
	return $self->_is_allowed($uri->path, %{ $uri->query_form_hash });
}

sub access_handler($$) {
	my ($class, $r) =  @_;
	my $res = $class->SUPER::access_handler($r);
	my $apr = Apache2::Request->new($r);
	return $r->pnotes('SWITSession')->_is_allowed($r->uri
		, %{ $apr->param || {} }) ? $res : Apache2::Const::FORBIDDEN();
}

1;

lib/Apache/SWIT/Security/UI/UserProfile.pm  view on Meta::CPAN


sub ht_swit_render {
	my ($class, $r, $root) = @_;
	$root->cdbi_load;
	return $root;
}

sub ht_swit_update_die {
	my ($class, $err, $r, $tested) = @_;
	my $em = ($err =~ /WRONG/) ? [ old_password => 'wrong' ] : undef;
	$class->SUPER::ht_swit_update_die(@_) unless $em;
	return $class->swit_encode_errors([ $em ]);
}

sub ht_swit_update {
	my ($class, $r, $root) = @_;
	my $u = $root->cdbi_retrieve;
	die "WRONG" if $u->password ne Hash($root->old_password);
	$u->password(Hash($root->new_password));
	$root->cdbi_update;
	return $root->ht_make_query_string("r", "user_id");

t/950_install.t  view on Meta::CPAN

$mt->install_session_base;

swmani_write_file('lib/MU/Us.pm', conv_module_contents("MU::Us", <<ENDS));
use base 'Apache::SWIT::Security::DB::User';
use File::Slurp;

append_file('$rdir/us.txt', "used\\n");

sub role_ids {
	append_file('$rdir/us.txt', "role_ids\\n");
	return shift()->SUPER::role_ids(\@_);
}
ENDS

swmani_write_file('lib/MU/Lo.pm', conv_module_contents("MU::Lo", <<ENDS));
use base 'Apache::SWIT::Security::UI::Login';
use File::Slurp;

append_file('$rdir/us.txt', "mu_login\\n");

package MU::Lo::Root;
use base 'HTML::Tested';
ENDS

append_file('lib/MU/Session.pm', <<ENDS);
use File::Slurp;
sub authorize {
	append_file('$rdir/us.txt', "authorize\\n");
	return shift()->SUPER::authorize(\@_);
}
ENDS

my $tree = YAML::LoadFile('conf/swit.yaml');
$tree->{env_vars}->{AS_SECURITY_USER_CLASS} = 'MU::Us';
$tree->{pages}->{"thesub/login"}->{class} = 'MU::Lo';
$tree->{capabilities} = { a_cap => [ '+admin' ], b_cap => [ '-all' ] };

my $ts = $tree->{startup_classes};
is_deeply($ts, [ 'Apache::SWIT::Security::Session' ]) or ASTU_Wait(Dumper($ts));



( run in 1.207 second using v1.01-cache-2.11-cpan-49f99fa48dc )