From 145a6fc76882769391e1e9792db868b692bc4538 Mon Sep 17 00:00:00 2001 From: Guilhem Moulin Date: Fri, 18 Jan 2013 22:40:14 +0100 Subject: =?UTF-8?q?Conversion=20username=20=E2=86=94=20DN.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/Fripost/Schema.pm | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) (limited to 'lib/Fripost/Schema.pm') diff --git a/lib/Fripost/Schema.pm b/lib/Fripost/Schema.pm index f7a9d75..b5dcdb6 100644 --- a/lib/Fripost/Schema.pm +++ b/lib/Fripost/Schema.pm @@ -47,8 +47,8 @@ sub SASLauth { my ($l,$d) = split_addr(shift); my %cfg = @_; + return unless defined $cfg{ldap_SASL_mechanism}; my $self = bless {}, $class; - return $self unless defined $cfg{ldap_SASL_mechanism}; $self->suffix( ldap_explode_dn(@{$cfg{ldap_suffix}}) ); $self->whoami( canonical_dn( {fvu => $l}, {fvd => $d}, @{$self->suffix} )); @@ -227,23 +227,21 @@ under the same terms as perl itself. =cut -sub _dn2email { +sub _dn2fvu { my $self = shift; - my $dn = shift; - $dn =~ s/^fvd=([^,]+),.*/\@$1/ and return $dn; - $dn =~ s/^fv(?:u|a|l)=([^,]+),fvd=([^,]+),.*/$1\@$2/ - or die "Wrong usage: of _dn2email: $dn"; - return $dn; + my $dn = ldap_explode_dn(shift); + + return '@'. $dn->[0]->{fvd} if exists $dn->[0]->{fvd}; + return $dn->[0]->{fvu} .'@'. $dn->[1]->{fvd}; } -sub _email2dn { +sub _fvu2dn { my $self = shift; my $email = shift; my ($l,$d) = split_addr($email); - die "Wrong usage: of _email2dn: $email" unless defined $d; - my $dn = "fvd=$d,".$self->suffix; - $dn = "fvu=$l,".$dn if $l ne ''; - return $dn; + my @dn = ({fvd => $d}, @{$self->suffix}); + unshift @dn, {fvu => $l} if defined $l and $l ne ''; + canonical_dn( @dn ); } 1; -- cgit v1.2.3