diff options
Diffstat (limited to 'lib/Sietima/Role/SubscriberOnly.pm')
-rw-r--r-- | lib/Sietima/Role/SubscriberOnly.pm | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/Sietima/Role/SubscriberOnly.pm b/lib/Sietima/Role/SubscriberOnly.pm new file mode 100644 index 0000000..4dcb66c --- /dev/null +++ b/lib/Sietima/Role/SubscriberOnly.pm @@ -0,0 +1,23 @@ +package Sietima::Role::SubscriberOnly; +use Moo::Role; +use Email::Address; +use List::AllUtils qw(any); +use namespace::clean; + +requires 'munge_mail_from_non_subscriber'; + +around munge_mail => sub { + my ($orig,$self,$mail) = @_; + + my $from = (Email::Address->parse( + $mail->header_str('from'), + ))[0]->address; + if ( any { $_->address eq $from } @{$self->subscribers} ) { + $self->$orig($mail); + } + else { + $self->munge_mail_from_non_subscriber($mail); + } +}; + +1; |