view Lib/Security/Authz.pm @ 121:92c850d0bdb9

Minor changes Fixed bug with templates base in the PageFormat module Added an ability to remove current security context with a specified
author wizard
date Tue, 08 Jun 2010 03:38:10 +0400
parents 16ada169ca75
children
line wrap: on
line source

package Security::Authz;
use Common;
use Security;

our @ISA = qw(Object);

BEGIN {
    DeclareProperty User => ACCESS_READ;
}

sub _CurrentUser {
    my ($class) = @_;

    if (ref $class) {
        return $class->{$User};
    } else {
        if (Security->CurrentSession) {
            Security->CurrentSession->User;
        } else {
            return undef;
        }
    }
}

sub demand {
    my ($class,@Roles) = @_;

    return 0 if not $class->_CurrentUser;

    my %UserRoles = map { $_->Name, 1 } $class->_CurrentUser->Roles;

    return not grep {not $UserRoles{$_}} @Roles;
}