aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Fripost/Schema/Search.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Fripost/Schema/Search.pm')
-rw-r--r--lib/Fripost/Schema/Search.pm12
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/Fripost/Schema/Search.pm b/lib/Fripost/Schema/Search.pm
index 3dc2efa..67815bd 100644
--- a/lib/Fripost/Schema/Search.pm
+++ b/lib/Fripost/Schema/Search.pm
@@ -5,6 +5,7 @@ use warnings;
use strict;
use Fripost::Schema::Type;
+use Fripost::Schema::Utils;
use base qw/Net::LDAP::Search/;
our $VERSION = '0.01';
@@ -41,9 +42,10 @@ sub entries {
sub _userEntry {
my $entry = shift;
my %user;
- &_get_values( $entry, \%user, 'username', 'uid');
+ $user{username} = Fripost::Schema::Utils::fromDN ($entry->dn);
+ &_get_values( $entry, \%user, 'uid');
map { &_get_values($entry, \%user, $_) }
- qw /maildir isActive userPassword/;
+ qw /isActive userPassword/;
return \%user;
}
@@ -56,7 +58,7 @@ sub _domainEntry {
if (defined $domain{owner}) {
$domain{owner} = [ $domain{owner} ]
unless (ref $domain{owner}) eq 'ARRAY';
- $domain{owner} = [ map { (split /=/, (split /,/, $_, 2)[0], 2)[1] }
+ $domain{owner} = [ map { Fripost::Schema::Utils::fromDN($_) }
@{$domain{owner}} ];
}
return \%domain;
@@ -65,10 +67,14 @@ sub _domainEntry {
sub _aliasEntry {
my $entry = shift;
my %alias;
+ my $domain = (split /=/, (split /,/, $entry->dn, 3)[1], 2)[1];
+
&_get_values( $entry, \%alias, 'address', 'mailLocalAddress');
if (defined $alias{address}) {
$alias{address} = [ $alias{address} ]
unless (ref $alias{address}) eq 'ARRAY';
+ $alias{address} = [ map { $_ . '@' . $domain }
+ @{$alias{address}} ];
}
&_get_values( $entry, \%alias, 'goto', 'mailTarget');
&_get_values( $entry, \%alias, 'isActive');