diff options
Diffstat (limited to 'lib/Fripost')
-rwxr-xr-x | lib/Fripost/Logger.pm | 3 | ||||
-rwxr-xr-x | lib/Fripost/Password.pm | 4 | ||||
-rwxr-xr-x | lib/Fripost/Prompt.pm | 75 | ||||
-rwxr-xr-x | lib/Fripost/Schema.pm | 1 | ||||
-rw-r--r-- | lib/Fripost/Schema/Result/Mailbox.pm | 18 |
5 files changed, 62 insertions, 39 deletions
diff --git a/lib/Fripost/Logger.pm b/lib/Fripost/Logger.pm index c515a5c..0aacf2c 100755 --- a/lib/Fripost/Logger.pm +++ b/lib/Fripost/Logger.pm @@ -1,7 +1,6 @@ -#!/usr/bin/perl +package Fripost::Logger; use 5.010_000; -use warnings; use strict; =head1 NAME diff --git a/lib/Fripost/Password.pm b/lib/Fripost/Password.pm index 767bee1..038d835 100755 --- a/lib/Fripost/Password.pm +++ b/lib/Fripost/Password.pm @@ -1,7 +1,6 @@ -#!/usr/bin/perl +package Fripost::Password; use 5.010_000; -use warnings; use strict; =head1 NAME @@ -18,6 +17,7 @@ use Exporter; use MIME::Base64; our @EXPORT = qw/smd5 make_salt/; +our @ISA = qw(Exporter); sub smd5 { my $pw = shift; diff --git a/lib/Fripost/Prompt.pm b/lib/Fripost/Prompt.pm index 514a0b7..b41f806 100755 --- a/lib/Fripost/Prompt.pm +++ b/lib/Fripost/Prompt.pm @@ -1,7 +1,6 @@ -#!/usr/bin/perl +package Fripost::Prompt; use 5.010_000; -use warnings; use strict; =head1 NAME @@ -18,26 +17,57 @@ use Exporter; use IO::Prompt; use String::MkPasswd qw/mkpasswd/; -our @EXPORT = qw(prompt_password prompt_username); +our @EXPORT = qw(confirm_or_abort fix_username prompt_email prompt_password); +our @ISA = qw(Exporter); + +sub confirm_or_abort { + my ($msg) = @_; + $msg //= "Is this OK? [no will abort] "; + my $confirmed = prompt $msg, -ynt; + unless ($confirmed) { + say "User aborted"; + exit 1; + } +} sub fix_username { my ($nam) = @_; if ($nam !~ /\@/) { $nam .= '@fripost.org'; - say "Using $nam"; + say "Using username: $nam"; } return $nam; } +sub prompt_email { + my ($msg, $is_username) = @_; + $msg //= "Enter email: "; + my $email; + while (not defined $email) { + $email = prompt $msg; + + if ($is_username) { + $email = fix_username($email) + } + + if (!Email::Valid->address($email)) { + undef $email; + say "This is not a valid e-mail address. Try again." + } + } + return $email; + +} + sub prompt_password { - my ($prompt, $prompt2) = @_; - $prompt //= "Enter new password (blank for random): "; - $prompt2 //= "Enter new password again (blank for random): "; + my ($msg, $msg2) = @_; + $msg //= "Enter new password (blank for random): "; + $msg2 //= "Enter new password again (blank for random): "; my $password; while (not defined $password) { - $password = prompt $prompt, -e => '*'; - my $confirm = prompt $prompt2, -e => '*'; + $password = prompt $msg, -e => '*'; + my $confirm = prompt $msg2, -e => '*'; unless ($password eq $confirm) { undef $password; say "Passwords do not match"; @@ -50,32 +80,9 @@ sub prompt_password { -minnum => 2, -minspecial => 2, ); - say "Generated password: $password"; - } - return smd5($password); -} - -sub prompt_username { - my $prompt = shift; - $prompt //= "Enter username: "; - my $nam; - while (not defined $nam) { - $nam = prompt $prompt; - $nam = fix_username($nam); - if (!Email::Valid->address($nam)) { - undef $nam; - say "This is not a valid e-mail address. Try again." - } - } - return $nam; -} - -sub ask_if_ok_or_abort { - my $confirmed = prompt "Is this OK? [no will abort]", -ynt; - unless ($confirmed) { - say "User aborted"; - exit 1; + say "Using password: $password"; } + return $password; } =head1 AUTHOR diff --git a/lib/Fripost/Schema.pm b/lib/Fripost/Schema.pm index 440d2ed..c9cc832 100755 --- a/lib/Fripost/Schema.pm +++ b/lib/Fripost/Schema.pm @@ -1,7 +1,6 @@ package Fripost::Schema; use 5.010_000; -use warnings; use strict; use base qw/DBIx::Class::Schema/; diff --git a/lib/Fripost/Schema/Result/Mailbox.pm b/lib/Fripost/Schema/Result/Mailbox.pm index f12e1f7..48d81fb 100644 --- a/lib/Fripost/Schema/Result/Mailbox.pm +++ b/lib/Fripost/Schema/Result/Mailbox.pm @@ -6,6 +6,8 @@ use strict; use base qw/DBIx::Class::Core/; +use Fripost::Password; + # mysql> describe mailbox; # +-------------+--------------+------+-----+---------------------+-------+ # | Field | Type | Null | Key | Default | Extra | @@ -32,6 +34,22 @@ __PACKAGE__->add_columns( __PACKAGE__->set_primary_key('username'); +=head2 store_column + +override store_column to encrypt the password when stored + +=cut + +sub store_column { + my ($self, $col, $val) = @_; + + if ($col eq 'password') { + $val = smd5($val); + } + + return $self->next::method($col,$val); +} + =head1 NAME Fripost::Schema::Result::Mailbox - |