package local::user; require Exporter; use strict; use local::db; use base "Exporter"; use local::netmask; sub new { my $invocant = shift; my $class = ref($invocant) || $invocant; # my $self = $class->SUPER::new(@_); my $self=bless {}, $class; my %ENV=@_; ($self->{name})=$ENV{REMOTE_USER}; if (not $self->{name}) { $self->{name}=$ENV{REMOTE_ADDR}; my $netmask = new local::netmask(); for my $ip ( local::db::ip->retrieve_all()) { if ($netmask->check_ip_in_subnet($ENV{REMOTE_ADDR},$ip->subnet,$ip->mask)) { $self->{name}=$ip->owner->name; } } } my @user = local::db::owner->search(name => $self->{name}); if (not @user) { push @user,local::db::owner->insert({name => $self->{name}}); } $self->{id}=$user[0]->owner_id(); die 'Could not find you user' if not $self->{id}; return $self; } sub obj { my $self = shift; return local::db::owner->retrieve($self->{id}); } sub is_admin { my $self = shift; my $user = $self->obj; return ($user->admin and $user->admin ne 'FALSE')?1:0; } sub get_name { my $self = shift; return $self->{name}; } sub get_id { my $self = shift; return $self->{id}; }