From a4fb637c441cad75350edcbbb2520f7a303b33c2 Mon Sep 17 00:00:00 2001 From: Guilhem Moulin Date: Sat, 29 Sep 2012 21:17:15 +0200 Subject: Grant the right to create aliases and/or lists. --- lib/Fripost/Schema/Domain.pm | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'lib/Fripost/Schema/Domain.pm') diff --git a/lib/Fripost/Schema/Domain.pm b/lib/Fripost/Schema/Domain.pm index 64a8932..80810e5 100644 --- a/lib/Fripost/Schema/Domain.pm +++ b/lib/Fripost/Schema/Domain.pm @@ -100,9 +100,13 @@ sub get { return ( domain => domain_to_unicode($domain->get_value('fvd')) , isactive => $domain->get_value('fripostIsStatusActive') eq 'TRUE' , description => concat($concat, $domain->get_value('description')) - , catchalls => concat($concat, map { _email_to_unicode ($_) } + , catchalls => concat($concat, map { &_email_to_unicode ($_) } $domain->get_value('fripostOptionalMaildrop')) , permissions => get_perms($domain, $self->whoami) + , canCreateAlias => concat($concat, map { &_email_to_unicode ($self->_dn2email($_)) } + $domain->get_value('fripostCanCreateAlias')) + , canCreateList => concat($concat, map { &_email_to_unicode ($self->_dn2email($_)) } + $domain->get_value('fripostCanCreateList')) ) } @@ -118,7 +122,7 @@ sub replace { my $d = shift; my %options = @_; - foreach (qw/description catchalls/) { + foreach (qw/description catchalls canCreateAlias canCreateList/) { $d->{$_} = explode ($options{'-concat'}, $d->{$_}) if defined $d->{$_}; } @@ -131,6 +135,12 @@ sub replace { 'TRUE' : 'FALSE' , description => $d->{description} , fripostOptionalMaildrop => $d->{catchalls} + , fripostCanCreateAlias => + [ map $self->_email2dn($_), + @{$d->{canCreateAlias}} ] + , fripostCanCreateList => + [ map $self->_email2dn($_), + @{$d->{canCreateList}} ] } ); die $mesg->error."\n" if $mesg->code; }; @@ -165,10 +175,14 @@ sub _is_valid { -exact => 1 ); $d->{catchalls} = [ map { email_valid($_, -prefix => 'fake') } @{$d->{catchalls}} ]; + $d->{canCreateAlias} = [ map { email_valid($_, -prefix => 'fake') } + @{$d->{canCreateAlias}} ]; + $d->{canCreateList} = [ map { email_valid($_, -prefix => 'fake') } + @{$d->{canCreateList}} ]; } -# A variante of email_to_unicode that also takes care of domain aliases. +# A variant of email_to_unicode that also takes care of domain aliases. sub _email_to_unicode { my $email = shift; return '@'.domain_to_unicode($email) if $email =~ s/^\@//; -- cgit v1.2.3