3 =head2 NAME $RCSfile: User.pm,v $
5 Return information about a user
13 Andrew DeFaria <Andrew@ClearSCM.com>
21 Tue Jan 3 11:36:10 PST 2006
25 $Date: 2011/01/09 01:03:10 $
31 This module implements a User object which returns information about a user.
33 my $user = new User ('adefaria');
35 print "Fullname: $user->{fullname}\n";
36 print "EMail: $user->{email}\n";
40 This module instanciates a user object for the given user identifier and
41 then collects information about the user such as fullname, email, etc. It does
42 so by contacting Active Directory in a Windows domain or other directory servers
43 depending on the site. As such exactly what data members are available may
44 change or be different from site to site.
58 # Seed options from config file
59 our %CLEAROPTS= GetConfig ("$FindBin::Bin/etc/clearuser.conf");
61 our $VERSION = '$Revision: 1.4 $';
62 ($VERSION) = ($VERSION =~ /\$Revision: (.*) /);
64 # Override options if in the environment
65 $CLEAROPTS{CLEARUSER_LDAPHOST} = $ENV{CLEARUSER_LDAPHOST}
66 if $ENV{CLEARUSER_LDAPHOST};
67 $CLEAROPTS{CLEARUSER_BIND} = $ENV{CLEARUSER_BIND}
68 if $ENV{CLEARUSER_BIND};
69 $CLEAROPTS{CLEARUSER_USERNAME} = $ENV{CLEARUSER_USERNAME}
70 if $ENV{CLEARUSER_USERNAME};
71 $CLEAROPTS{CLEARUSER_PASSWORD} = $ENV{CLEARUSER_PASSWORD}
72 if $ENV{CLEARUSER_PASSWORD};
73 $CLEAROPTS{CLEARUSER_BASEDN} = $ENV{CLEARUSER_BASEDN}
74 if $ENV{CLEARUSER_BASEDN};
81 my $firstchar = substr $unix, 0, 1;
82 my $secondchar = substr $unix, 1, 1;
85 my $num = (ord ($firstchar) - 97) * 36 + (ord ($secondchar) - 97) + 100;
87 my $return = $num . substr $unix, 2, 6;
92 sub GetOwnerInfo ($) {
95 my @parts = split /(\/|\\)/, $userid;
101 my $sso = unix2sso ($userid);
104 $ldap = Net::LDAP->new ($CLEAROPTS{CLEARUSER_LDAPHOST})
105 or croak 'Unable to create LDAP object';
108 "$CLEAROPTS{CLEARUSER_USERNAME}\@$CLEAROPTS{CLEARUSER_BIND}",
109 password => $CLEAROPTS{CLEARUSER_PASSWORD});
112 $ad = $ldap->search (
113 base => $CLEAROPTS{CLEARUSER_BASEDN},
114 filter => "(&(objectclass=user)(sAMAccountName=$sso))",
120 my @entries = $ad->entries;
125 for (my $i = 0; $i < $ad->count; $i++) {
126 my $entry = $ad->entry ($i);
128 foreach my $attribute ($entry->attributes) {
129 $ownerInfo{$attribute} = $entry->get_value ($attribute)
143 Returns a new user object based on $id
190 my ($class, $userid) = @_;
192 croak "Must specify userid to User constructor"
197 $members{id} = $userid;
199 my %ownerInfo = GetOwnerInfo ($userid);
201 $members{$_} = $ownerInfo{$_}
202 foreach (keys %ownerInfo);
204 return bless \%members, $class;
211 =head1 CONFIGURATION AND ENVIRONMENT
213 DEBUG: If set then $debug is set to this level.
215 VERBOSE: If set then $verbose is set to this level.
217 TRACE: If set then $trace is set to this level.
225 L<Net::LDAP|Net::LDAP>
227 =head2 ClearSCM Perl Modules
238 <a href="http://clearscm.com/php/cvs_man.php?file=lib/GetConfig.pm">GetConfig</a><br>
243 =head1 BUGS AND LIMITATIONS
245 There are no known bugs in this module
247 Please report problems to Andrew DeFaria <Andrew@ClearSCM.com>.
249 =head1 LICENSE AND COPYRIGHT
251 Copyright (c) 2010, ClearSCM, Inc. All rights reserved.