NAME
SPOPS::Secure::Util - Common utilities for SPOPS::Secure and subclasses
SYNOPSIS
my $levels = SPOPS::Secure::Util->parse_object_into_hashref( \@security_objects );
print "Given security from objects:\n",
"USER: $levels->{ SEC_SCOPE_USER() }\n",
"WORLD: $levels->{ SEC_SCOPE_WORLD() }\n";
"GROUP [ID/LEVEL]: ";
print join( ' ', map { "[$_/$levels->{ SEC_SCOPE_GROUP() }{ $_ }" }
keys %{ $levels->{ SEC_SCOPE_GROUP() } } );
# Not sure if $item is class or object?
sub somesub {
my ( $item, $params ) = @_;
my ( $object_class, $object_id ) =
SPOPS::Secure::Util->find_class_and_oid( $item, $params );
}
DESCRIPTION
Common utility methods for security tasks.
METHODS
All methods are class methods.
parse_objects_into_hashref( \@security_objects )
Places the relevant information from \@security_objects
into a hashref for easy analysis. If no objects are in \@security_objects
it returns undef. Otherwise the returned hashref should have as the three keys the constants SEC_SCOPE_WORLD
, SEC_SCOPE_GROUP
and SEC_SCOPE_USER
.
The values of SEC_SCOPE_WORLD
and SEC_SCOPE_USER
are a single value corresponding to one of the SEC_LEVEL_*
constants. The value of SEC_LEVEL_GROUP
is another hashref with the keys as the group IDs each of which has a single value corresponding to one of the SEC_LEVEL_*
constants.
find_class_and_oid( [$class|$object], \%params )
Useful when a method can be called as a class or object method and the class/ID to be analyzed can be either in the object calling or in the class and the parameters.
Returns a two-argument list. The first is the object class, the second is the object ID.
If the first argument is an object and it has a method id()
, we assign the result of calling it to the object ID; for the object class we call ref
on the object.
Otherwise we look in \%params
for a parameter 'class'. If it is not found we use the first argument. For the object ID we look in \%params
for a parameter 'object_id' or 'oid'. If neither are found we assign '0' to the object ID. For example:
my $class = 'My::Object'; my ( $object_class, $object_id ) =
SPOPS::Secure::Util->find_class_and_oid( $class, { object_id => 5 } );
# $object_class = 'My::Object'; $object_id = 5
my $object = My::OtherObject->new({ id => 99 });
my ( $object_class, $object_id ) =
SPOPS::Secure::Util->find_class_and_oid( $object );
# $object_class = 'My::OtherObject'; $object_id = 99
BUGS
None known.
TO DO
Nothing known.
SEE ALSO
COPYRIGHT
Copyright (c) 2002-2004 intes.net, inc.. All rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
AUTHORS
Chris Winters <chris@cwinters.com>