]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/perlmods/lib/OpenILS/Application/AuthProxy/AuthBase.pm
Merge branch 'master' of git.evergreen-ils.org:Evergreen-DocBook into doc_consolidati...
[Evergreen.git] / Open-ILS / src / perlmods / lib / OpenILS / Application / AuthProxy / AuthBase.pm
1 package OpenILS::Application::AuthProxy::AuthBase;
2 use strict;
3 use warnings;
4 use vars '$AUTOLOAD';
5 use OpenSRF::Utils::Logger qw(:logger);
6
7 sub new {
8     my( $class, $args ) = @_;
9     $class = ref $class || $class;
10     return bless($args, $class);
11 }
12
13 # --------------------------------------------------------------------------
14 # Add automatic getter/setter methods
15 # --------------------------------------------------------------------------
16 my @AUTOLOAD_FIELDS = qw/
17     name
18     org_units
19     login_types
20 /;
21 sub AUTOLOAD {
22     my $self = shift;
23     my $type = ref($self) or die "$self is not an object";
24     my $data = shift;
25     my $name = $AUTOLOAD;
26     $name =~ s/.*://o;
27
28     # return immediately if called as the DESTROY method
29     return if $name eq 'DESTROY';
30
31     unless (grep { $_ eq $name } @AUTOLOAD_FIELDS) {
32         $logger->error("$type: invalid autoload field: $name");
33         die "$type: invalid autoload field: $name\n"
34     }
35
36     {
37         no strict 'refs';
38         *{"${type}::${name}"} = sub {
39             my $s = shift;
40             my $v = shift;
41             $s->{$name} = $v if defined $v;
42             return $s->{$name};
43         }
44     }
45     return $self->$name($data);
46 }
47
48 1;