aboutsummaryrefslogtreecommitdiff
path: root/lib/Sietima/Role/SubscriberOnly/Moderate.pm
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2016-06-17 18:06:36 +0100
committerdakkar <dakkar@thenautilus.net>2016-06-17 18:06:36 +0100
commit8399a72d9b3561616e79d8d389a32cbc022b96fe (patch)
treec90e01f0011929665d30615630bf2a50eb0bf8b3 /lib/Sietima/Role/SubscriberOnly/Moderate.pm
parent'bag' is in Test2::Suite 0.000032! (diff)
downloadSietima-8399a72d9b3561616e79d8d389a32cbc022b96fe.tar.gz
Sietima-8399a72d9b3561616e79d8d389a32cbc022b96fe.tar.bz2
Sietima-8399a72d9b3561616e79d8d389a32cbc022b96fe.zip
role: moderate mail from non-subscribers
Diffstat (limited to 'lib/Sietima/Role/SubscriberOnly/Moderate.pm')
-rw-r--r--lib/Sietima/Role/SubscriberOnly/Moderate.pm39
1 files changed, 39 insertions, 0 deletions
diff --git a/lib/Sietima/Role/SubscriberOnly/Moderate.pm b/lib/Sietima/Role/SubscriberOnly/Moderate.pm
new file mode 100644
index 0000000..107a843
--- /dev/null
+++ b/lib/Sietima/Role/SubscriberOnly/Moderate.pm
@@ -0,0 +1,39 @@
+package Sietima::Role::SubscriberOnly::Moderate;
+use strict;
+use warnings;
+use 5.020;
+use Moo::Role;
+use Email::Stuffer;
+use Email::MIME;
+use namespace::clean;
+
+with 'Sietima::Role::SubscriberOnly',
+ 'Sietima::Role::WithMailStore',
+ 'Sietima::Role::WithAdmin';
+
+sub munge_mail_from_non_subscriber {
+ my ($self,$mail) = @_;
+
+ my $id = $self->mail_store->store($mail,'moderation');
+ my $notice = Email::Stuffer
+ ->from($self->return_path)
+ ->to($self->admin)
+ ->subject("Message held for moderation - ".$mail->header_str('subject'))
+ ->text_body("Use id $id to refer to it")
+ ->attach($mail->as_string, content_type => 'message/rfc822');
+ $self->transport->send($notice->email,{
+ from => $self->return_path,
+ to => [ $self->admin ],
+ });
+ return;
+}
+
+sub resume {
+ my ($self,$mail_id) = @_;
+
+ my $mail = $self->mail_store->retrieve_by_id($mail_id);
+ local $Sietima::Role::SubscriberOnly::let_it_pass=1;
+ $self->handle_mail($mail);
+}
+
+1;