Changeset 349

Show
Ignore:
Timestamp:
01/12/07 13:06:01 (2 years ago)
Author:
miya
Message:

Add Catalyst::Model::LDAPx::Simple.
Net::LDAPx::Simple: Add create, auth and bind method.
Net::LDAPx::Simple:Entries: Add count method.
Net::LDAPx::Simple:Entry: Add delete method.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • library/perl/trunk/Net-LDAPx-Simple/lib/Net/LDAPx/Simple.pm

    r348 r349  
    88our $VERSION = qv('0.0.1'); 
    99 
    10  
    11 use base qw( Class::Accessor::Fast ); 
     10use base qw( Class::Accessor::Fast Class::ErrorHandler ); 
    1211use Net::LDAP; 
    1312use Net::LDAPx::Simple::Context; 
     
    4039 
    4140    my $msg = $self->{context}->{ldap}->search( 
    42         base => $self->{base}, 
     41        base   => $self->{base}, 
    4342        filter => $self->_make_filter($args), 
    4443    ); 
    4544 
    4645    return Net::LDAPx::Simple::Entries->new($self->{context}, $msg); 
     46} 
     47 
     48sub auth { 
     49    my ( $self, $args ) = @_; 
     50 
     51    $args->{password} ||= $args->{userpassword}; 
     52 
     53    return $self->error('No password') unless defined $args->{password}; 
     54 
     55    my $entries = $self->search({ uid => $args->{uid} }); 
     56 
     57    if ( $entries->count > 1 ) { 
     58        return $self->error('There are two or more entries'); 
     59    } 
     60 
     61    my $entry = $entries->first; 
     62    my $res = $self->bind({ 
     63        dn       => $entry->dn, 
     64        password => $args->{password}, 
     65    }); 
     66 
     67    $self->bind({ 
     68        dn       => $self->{bind_dn}, 
     69        password => $self->{bind_pw}, 
     70    }); 
     71 
     72    return $res ? $entry : undef; 
     73} 
     74 
     75sub bind { 
     76    my ( $self, $args ) = @_; 
     77 
     78    my $mesg = $self->{context}->{ldap}->bind( 
     79        $args->{dn}, 
     80        password => $args->{password}, 
     81    ); 
     82 
     83    if ( $mesg->code ) { 
     84        return $self->error($mesg->error); 
     85    } 
     86    else { 
     87        return 1; 
     88    } 
     89} 
     90 
     91sub create { 
     92    my ( $self, $args ) = @_; 
     93 
     94    my $dn = delete $args->{dn}; 
     95 
     96    my $mesg = $self->{context}->{ldap}->add( $dn, attr => [ %$args ] ); 
     97 
     98    if ( $mesg->code ) { 
     99        return $self->error($mesg->error); 
     100    } 
     101    else { 
     102        use Data::Dumper; 
     103        warn Dumper($mesg); 
     104        return 1; 
     105    } 
    47106} 
    48107 
  • library/perl/trunk/Net-LDAPx-Simple/lib/Net/LDAPx/Simple/Entries.pm

    r348 r349  
    3535} 
    3636 
     37sub count { 
     38    my $self = shift; 
     39    return scalar @{ $self->{entries} }; 
     40} 
     41 
    37421; 
  • library/perl/trunk/Net-LDAPx-Simple/lib/Net/LDAPx/Simple/Entry.pm

    r348 r349  
    55 
    66our $AUTOLOAD; 
     7 
     8use base qw( Class::ErrorHandler ); 
    79 
    810sub new { 
     
    2527    delete $update{context}; 
    2628 
    27     $self->{context}->{ldap}->modify( $self->dn, replace => \%update ); 
     29    my $mesg = $self->{context}->{ldap}->modify( $self->dn, replace => \%update ); 
    2830 
     31    if ( $mesg->code ) { 
     32        return $self->error($mesg->error); 
     33    } 
     34    else { 
     35        return 1; 
     36    } 
     37} 
     38 
     39sub delete { 
     40    my $self = shift; 
     41    my $mesg = $self->{context}->{ldap}->delete( $self->dn ); 
     42 
     43    if ( $mesg->code ) { 
     44        return $self->error($mesg->error); 
     45    } 
     46    else { 
     47        return 1; 
     48    } 
    2949} 
    3050