Catalyst::Model::LDAP - LDAP model class for Catalyst


Catalyst-Model-LDAP documentation Contained in the Catalyst-Model-LDAP distribution.

Index


Code Index:

NAME

Top

Catalyst::Model::LDAP - LDAP model class for Catalyst

SYNOPSIS

Top

    # Use the Catalyst helper
    script/myapp_create.pl model Person LDAP ldap.ufl.edu ou=People,dc=ufl,dc=edu

    # Or, in lib/MyApp/Model/Person.pm
    package MyApp::Model::Person;

    use base qw/Catalyst::Model::LDAP/;

    __PACKAGE__->config(
        host => 'ldap.ufl.edu',
        base => 'ou=People,dc=ufl,dc=edu',
    );

    1;

    # Then, in your controller
    my $mesg = $c->model('Person')->search('(cn=Lou Rhodes)');
    my @entries = $mesg->entries;
    print $entries[0]->sn;

DESCRIPTION

Top

This is the Net::LDAP model class for Catalyst. It is nothing more than a simple wrapper for Net::LDAP.

This class simplifies LDAP access by letting you configure a common set of bind arguments. It also lets you configure a base DN for searching.

Please refer to the Net::LDAP documentation for information on what else is available.

CONFIGURATION

Top

The following configuration parameters are supported:

* host

The LDAP server's fully qualified domain name (FQDN), e.g. ldap.ufl.edu. Can also be an IP address, e.g. 127.0.0.1.

* base

The base distinguished name (DN) for searching the directory, e.g. ou=People,dc=ufl,dc=edu.

* dn

(Optional) The bind DN for connecting to the directory, e.g. dn=admin,dc=ufl,dc=edu. This can be anyone that has permission to search under the base DN, as per your LDAP server's access control lists.

* password

(Optional) The password for the specified bind DN.

* start_tls

(Optional) Set to 1 to use TLS when binding to the LDAP server, for secure connections.

* start_tls_options

(Optional) A hashref containing options to use when binding using TLS to the LDAP server.

* options

(Optional) A hashref containing options to pass to search in Catalyst::Model::LDAP::Connection. For example, this can be used to set a sizelimit.

NOTE: In previous versions, these options were passed to all Net::LDAP methods. This has changed to allow a cleaner connection interface. If you still require this behavior, create a class inheriting from Catalyst::Model::LDAP::Connection that overrides the specific methods and set connection_class.

* connection_class

(Optional) The class or package name that wraps Net::LDAP. Defaults to Catalyst::Model::LDAP::Connection.

See also OVERRIDING METHODS in Catalyst::Model::LDAP::Connection.

* entry_class

(Optional) The class or package name to rebless Net::LDAP::Entry objects as. Defaults to Catalyst::Model::LDAP::Entry.

See also ADDING ENTRY METHODS in Catalyst::Model::LDAP::Entry.

INTERNAL METHODS

Top

ACCEPT_CONTEXT

Bind the client using the current configuration and return it. This method is automatically called when you use e.g. $c->model('LDAP').

See bind in Catalyst::Model::LDAP::Connection for information on how the bind operation is done.

SEE ALSO

Top

* Catalyst::Helper::Model::LDAP
* Catalyst::Model::LDAP::Connection
* Catalyst::Model::LDAP::Search
* Catalyst::Model::LDAP::Entry
* Catalyst
* Net::LDAP

AUTHORS

Top

* Daniel Westermann-Clark <danieltwc@cpan.org>
* Adam Jacob <holoway@cpan.org> (TLS support)
* Marcus Ramberg (paging support and entry AUTOLOAD)

ACKNOWLEDGMENTS

Top

* Salih Gonullu, for initial work on Catalyst mailing list

LICENSE

Top

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


Catalyst-Model-LDAP documentation Contained in the Catalyst-Model-LDAP distribution.
package Catalyst::Model::LDAP;

use strict;
use warnings;
use base qw/Catalyst::Model/;
use Carp qw/croak/;

our $VERSION = '0.17';

sub ACCEPT_CONTEXT {
    my ($self) = @_;

    my %args = %$self;

    # Remove Catalyst-specific parameters (e.g. catalyst_component_name), which
    # cause issues Net::LDAP
    delete $args{$_} for (grep { /^_?catalyst/ } keys %args);

    my $class = $args{connection_class} || 'Catalyst::Model::LDAP::Connection';
    eval "require $class";
    die $@ if $@;

    my $conn = $class->new(%args);
    my $mesg = $conn->bind(%args);
    croak 'LDAP error: ' . $mesg->error if $mesg->is_error;

    return $conn;
}

1;