CGI-Application-Plugin-Authorization

 view release on metacpan or  search on metacpan

lib/CGI/Application/Plugin/Authorization/Driver.pm  view on Meta::CPAN

package CGI::Application::Plugin::Authorization::Driver;

use strict;
use warnings;

use UNIVERSAL::require;

=head1 NAME

CGI::Application::Plugin::Authorization::Driver - Base module for building driver classes
for CGI::Application::Plugin::Authorization


=head1 SYNOPSIS

 package CGI::Application::Plugin::Authorization::Driver::MyDriver;
 use base qw(CGI::Application::Plugin::Authorization::Driver);

  sub authorize_user {
      my $self = shift;
      my @params = @_;

      if ( >>> Valid Access Permissions <<< ) {
          return 1;
      }
      return;
  }


=head1 DESCRIPTION

This module is a base class for all driver classes for the L<CGI::Application::Plugin::Authorization>
plugin.  Each driver class is required to provide only one method to authorize the given parameters.
Often this will be a list of groups that the user needs to be a part of, although it could be anything.


=head1 METHODS

=head2 new

This is a constructor that can create a new Driver object.  It requires an Authorization object as its
first parameter, and any number of other parameters that will be used as options depending on which
Driver object is being created.  You shouldn't need to call this as the Authorization plugin takes care
of creating Driver objects.

=cut

sub new {
    my $class = shift;
    my $self = {};
    my $authz = shift;
    my @options = @_;

    bless $self, $class;
    $self->{authz} = $authz;
    Scalar::Util::weaken($self->{authz}); # weaken circular reference
    $self->{options} = \@options;
    $self->initialize;
    return $self;
}

=head2 initialize

This method will be called right after a new Driver object is created.  So any startup customizations
can be dealt with here.

=cut

sub initialize {
    my $self = shift;
    # override this in the subclass if you need it
    return;
}

=head2 options

This will return a list of options that were provided when this driver was configured by the user.

=cut

sub options { return (@{$_[0]->{options}}) }

=head2 find_option

This method will search the Driver options for a specific key and return
the value it finds.  This method assumes that the Driver configuration contains
a hash of information.  If it does not, then you will have to parse the option
manually in the subclass.

=cut

sub find_option {
    my $self = shift;
    my $key = shift;
    my @options = $self->options;
    my $marker = 0;
    foreach my $option (@options) {
        if ($marker) {
            return $option;
        } elsif ($option eq $key) {
            # We need the next element
            $marker = 1;
        }
    }
    return;
}

=head2 authz

This will return the underlying L<CGI::Application::Plugin::Authorization> object.  In most cases it will
not be necesary to access this.

=cut

sub authz { return $_[0]->{authz} }



( run in 1.036 second using v1.01-cache-2.11-cpan-39bf76dae61 )