Mercurial > pub > Impl
view Lib/IMPL/Security/Context.pm @ 59:0f3e369553bd
Rewritten property implementation (probably become slower but more flexible)
Configuration infrastructure in progress (in the aspect of the lazy activation)
Initial concept for the code generator
author | wizard |
---|---|
date | Tue, 09 Mar 2010 02:50:45 +0300 |
parents | a1498298d3ee |
children | f47f93534005 |
line wrap: on
line source
package IMPL::Security::Context; use strict; use warnings; use base qw(IMPL::Object); use IMPL::Class::Property; require IMPL::Security::Principal; my $current; my $nobody; BEGIN { public property Principal => prop_get; public property AssignedRoles => prop_all; public property AuthSession => prop_all; } sub Impersonate { my ($this,$code) = @_; my $old = $current; my $result; local $@; eval { $result = $code->(); }; $current = $old; if($@) { die $@; } else { return $result; } } sub contextNobody { my ($self) = @_; $nobody = $self->new(Principal => IMPL::Security::Principal->nobody, AssignedRoles => undef) unless $nobody; $nobody; } sub contextCurrent { my ($self) = @_; $current = __PACKAGE__->nobody unless $current; $current; } 1;