CGI-AppBuilder-Security

 view release on metacpan or  search on metacpan

CGI-AppBuilder-Security-0.12.readme  view on Meta::CPAN

NAME
    CGI::AppBuilder::Security - Security Procedures

SYNOPSIS
      use CGI::AppBuilder::Security;

      my $sec = CGI::AppBuilder::Security->new();
      my ($sta, $msg) = $sec->access_ok($ar);

DESCRIPTION
    This class provides methods for reading and parsing configuration files.

  new (ifn => 'file.cfg', opt => 'hvS:')
    This is a inherited method from CGI::AppBuilder. See the same method in
    CGI::AppBuilder for more details.

  access_ok($ar)
    Input variables:

      $ar  - array ref containing the following variables:
      task          : task name required ($t)
      sel_sn1       : select one (DB/server name)
      sel_sn2       : select two (Argument)
      allowed_ip    : allowed ip address for each task
      roles         : roles allowed to access a list of tasks
      svr_allowed   : server allowed for each task
      arg_required  : required argument for each task

    Variables used or routines called:

      None

    How to use:

    First define the parameters in the initial file or define all the
    parameters in a hash array reference as $ar->{$p} where $p are

      task     = task_name
      sel_sn1  = a_db_name_or_server_name
      app_user = logname_or_logid
      usr_role = {
        usr1 = [qw(dba owb)],
        usr2 = [qw(r1 r2)],
       }
      usr_task = {
        usr1 = [qw(task1 task2)],
        usr2 = [qw(task3 task4)],
        }
      rol_task = {
        dba => [qw(task1 task3 task5)],
        owb => [qw(task2 task4)],
        }
      allowed_ip = {
        all   => [10.0.0.127,10.0.0.185,10.0.1.125)],
        task1 => [192.168.1.1,192.168.1.2],
        task2 => [10.0.0.5],
        }
      arg_required = {
        task1 => 'input1:input2',
        task2 => 'p_dnm:p_prj:p_tab:p_own',
        }    
      svr_allowed = {
        task1 => {svr1=>1},
        task2 => {svr1=>1,svr2=>1,svr3=>1},
        }  
      # $time = timelocal($sec,$min,$hour,$mday,$mon,$year);
      #   $sec : 0~59
      #   $min : 0~59
      #   $hour: 0~23
      #   $mday: 1~31
      #   $mon : 0~11
      #   $year: yyyy-1900
      #   ex   : [0,0,0,16,8,109] = 2009/09/16 00:00:00
      task_expired = {
        task1 => [0,0,0,25,0,109],   # 2009/01/25
        task1 => [0,0,0,17,8,119],   # 2019/09/17
        }

      my ($q, $ar, $ar_log) = $self->start_app($0, \@ARGV);
      or
      my $ar = $self->read_init_file('/tmp/my_init.cfg');
      my ($status, $err_msg) = $self->access_ok($ar);
      if ($status > 0) {
        print "OK\n";
      } else {
        print "Failed: $err_msg\n";
      }

      my ($ok, $msg) = $self->access_ok($task, $ar); 
      if ($ok) { 
          $self->exe_sql($q, $ar);
      } else {
          print $self->disp_form($q, $ar);
          print "<font color=red>$msg</font>\n" if $ar->{write_log}; 
          $self->echo_msg($msg,0);
      }

    Return: ($status, $msg) where $status is 1 (ok) or 0 (not), and the msg
    is the error message.



( run in 0.764 second using v1.01-cache-2.11-cpan-97f6503c9c8 )