view Lib/Security/Authz.pm @ 165:76515373dac0

Added Class::Template, Rewritten SQL::Schema 'use parent' directive instead of 'use base'
author wizard
date Sat, 23 Apr 2011 23:06:48 +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;
}