Catalyst-Model-LDAP

 view release on metacpan or  search on metacpan

lib/Catalyst/Model/LDAP/Entry.pm  view on Meta::CPAN


=encoding UTF-8

=head1 NAME

Catalyst::Model::LDAP::Entry - Convenience methods for Net::LDAP::Entry

=head1 VERSION

version 0.21

=head1 SYNOPSIS

    # In your controller
    my $mesg = $c->model('Person')->search('(cn=Lou Rhodes)');
    my $entry = $mesg->shift_entry;
    print $entry->title;

=head1 DESCRIPTION

This module simplifies use of L<Net::LDAP::Entry> objects in your
application.  It makes accessors and mutators for all attributes on an
entry.  For example:

    print $entry->cn;

It also stores a reference to the parent LDAP connection, simplifying
updates to the entry:

    $entry->title('Folk singer');
    $entry->update;

=head1 ADDING ENTRY METHODS

If you want to provide your own methods on an LDAP entry, you can use
the C<entry_class> configuration variable.  For example:

    # In lib/MyApp/Model/LDAP.pm
    package MyApp::Model::LDAP;
    use base qw/Catalyst::Model::LDAP/;

    __PACKAGE__->config(
        # ...
        entry_class => 'MyApp::LDAP::Entry',
    );

    1;

    # In lib/MyApp/LDAP/Entry.pm
    package MyApp::LDAP::Entry;
    use base qw/Catalyst::Model::LDAP::Entry/;
    use DateTime::Format::Strptime;

    sub get_date {
        my ($self, $attribute) = @_;

        my ($datetime) = ($self->get_value($attribute) =~ /^(\d{14})/);

        my $parser = DateTime::Format::Strptime->new(
            pattern     => '%Y%m%d%H%M%S',
            locale      => 'en_US',
            time_zone   => 'UTC'
        );

        return $parser->parse_datetime($datetime);
    }

    1;

=head1 METHODS

=head2 new

Override the L<Net::LDAP::Entry> object constructor to take an
optional LDAP handle.  If provided this will be used automatically on
L</update>.

=head2 update

Override C<update> to default to the optional LDAP handle provided to
the constructor.

=head2 can

Override C<can> to declare existence of the LDAP entry attribute
methods from C<AUTOLOAD>.

=head1 SEE ALSO

=over 4

=item * L<Catalyst::Model::LDAP>

=item * L<Catalyst::Model::LDAP::Search>

=back

=head1 AUTHORS

=over 4

=item * Marcus Ramberg

=back

=head1 LICENSE

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.

=head1 AUTHOR

Gavin Henry <ghenry@surevoip.co.uk>

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2017 by Gavin Henry.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.



( run in 1.239 second using v1.01-cache-2.11-cpan-ceb78f64989 )