At 02:17 PM 04/02/2002, Kenny Pyatt wrote:
>The decision has been made (although I can change it) to use a 
>user-type/run-mode permission scheme.  I created a database that 
>handles which users are which type and which types have access to 
>which mode.  I even have it working :-)

This sounds like exactly what I've done.  I like this style, because 
then the run modes are responsible for determining what kind of 
access they need, and I don't have to maintain a separate list.  I 
can also just look at each run mode and see that it has the proper 
access, rather than having to refer back to some master list somewhere.

>The modes are given unique ids that are hard coded in.  Each 
>run-mode looks like this:
>
>sub Mode
>{
>    my $self = shift;
>    my $admin = $self->param('admin');
>
>    # Check for permission.
>    if ($admin->checkPermission('ModuleName_Mode '))
>    {
>            # The have permission so go ahead
>    }
>    else
>    {
>            # They do not have permission so tell them.
>    }

Mine's a little simpler though:

sub Mode
     {
     my $self = shift;
     $self->CheckAccess('Mode');

     # If execution gets to this point, they have permission
[...]

and then CheckAccess looks like this:

sub CheckAccess($)
     {
     my ($self, $module) = @_;

     # Not providing a module is always fatal
     defined($module) or die "CheckAccess: module not defined";

     # Perform the authentication stuff here

     # If access was granted, return.
     return(1) if $access_was_granted;

     # Access denied, report the error to the user, and die.
     warn "Refusing access to $module for $username\n";
     die "You do not have permission to perform this operation.\n";
     }

-- 
Greg Marr
[EMAIL PROTECTED]
"We thought you were dead."
"I was, but I'm better now." - Sheridan, "The Summoning"


---------------------------------------------------------------------
Web Archive:  http://www.mail-archive.com/[email protected]/
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to