Apache-UploadSvr

 view release on metacpan or  search on metacpan

lib/Apache/UploadSvr/User.pm  view on Meta::CPAN

      # warn "permitted[@{$userref->{permitted}}]";
    }
    $sth->finish;
  } else {
    die $DBI::errstr;
  }
  my $update = "update $user_table set lastlogin='$time'
                  where $user_field = '$user'";
  my $rv = $db->do($update);
  $db->disconnect;
  warn "rv was not 1. rv[$rv]update[$update]errstr[$DBI::errstr]" unless $rv;
  $Userref = bless $userref, $class;
}

sub has_perms {
  my($self,$f) = @_;
  # warn "f[$f]";
  for my $d (@{$self->{permitted}}) {
    # warn "has_perms d[$d]";
    if (substr($f,0,length($d)) eq $d) {
      return 1;
    }
  }
  return;
}

1;

=head1 NAME

Apache::UploadSvr::User - Identify users and permissions Apache::UploadSvr

=head1 SYNOPSIS

Apache::UploadSvr::User-E<gt>new($mgr);

=head1 DESCRIPTION

This class implements a mapping between user-ID and user attributes.
The backend is provided by a mSQL-1 database with the following structure:

    CREATE TABLE usertable (
      user CHAR(12) NOT NULL PRIMARY KEY,
      email CHAR(64),
      firstname CHAR(32),
      lastname CHAR(32),
      fullname CHAR(64),
      salut CHAR(4),
      lastlogin CHAR(10),
      introduced CHAR(10),
      password CHAR(13),
      changedon CHAR(10),
      changedby CHAR(10)
    )

C<user> corresponds to the username with which the users identify
in the authentication stage. C<email> is their email address where
the transaction tickets are delivered to. C<lastname> is their family name.
<fullname> is whatever the fullname is composed of in the local culture.
C<salut> is the salutation like C<Herr> or C<Mister>. C<lastlogin>
is the timestamp that is updated with every request. C<introduced> is
the timestamp when the user got registered (not used in this uploadserver).
C<password> is the crypted
password in the default upload server. If the authentication handler
uses a different table, then this field is not needed. C<changedon>
and C<changedby> are not used in this application, they are only used as
interesting facts for the administrator.

    CREATE TABLE perms (
      user CHAR(12),
      permitted CHAR(32)
    )

This table has a 1 to N mapping of users to directories they
have write access to.

The constructor -E<gt>new takes as a single argument an
Apache::UploadSvr object and returns an object that has the
above described fields as object attributes. The attribute C<permitted>
is computed from the C<perms> table so that its value is an anonymous
list of the directories the user has write permission to. A typical
structure of such an object would be:

    bless( {
      'introduced' => 875601758,
      'password' => 'rtthXtbR5tjit',
      'fullname' => 'Andreas J. König',
      'changedby' => 'andreas',
      'lastname' => 'König',
      'changedon' => 875601758,
      'email' => 'k',
      'firstname' => 'Andreas',
      'salut' => 'Herr',
      'lastlogin' => '0903739665',
      'permitted' => [
                       '/'
                     ],
      'user' => 'andreas'
    }, 'Apache::UploadSvr::User' )

The method ->has_perms($obj) returns true if the current user has write
access to a file or dircetory. What counts here are database entries,
not file system permissions.

=head1 CONFIGURATION



=head1 SECURITY



=head1 BUGS



=head1 AUTHOR

Andreas Koenig <koenig@kulturbox.de>

=head1 COPYRIGHT, LICENSE



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