From ccc5ce7bf9abe341119acb0aa4a8a138add41dc7 Mon Sep 17 00:00:00 2001 From: Guilhem Moulin Date: Tue, 5 Jun 2012 09:49:33 +0200 Subject: Changing the command names to something more intuitive (hopefully). --- lib/Fripost/Commands/user_add.pm | 161 --------------------------------------- 1 file changed, 161 deletions(-) delete mode 100644 lib/Fripost/Commands/user_add.pm (limited to 'lib/Fripost/Commands/user_add.pm') diff --git a/lib/Fripost/Commands/user_add.pm b/lib/Fripost/Commands/user_add.pm deleted file mode 100644 index 70ee638..0000000 --- a/lib/Fripost/Commands/user_add.pm +++ /dev/null @@ -1,161 +0,0 @@ -package Fripost::Commands::user_add; - -use 5.010_000; -use strict; -use warnings; -use utf8; - -=head1 NAME - -user_add - Add a new mailbox to the system - -=cut - -use FindBin qw($Bin); -use lib "$Bin/lib"; - -use Fripost::Password; -use Fripost::Prompt; -use Fripost::Schema; -use Fripost::Email; - -our $VERSION = '0.01'; - -our @EXPORT = qw/main/; -our @ISA = qw(Exporter); - -sub assert { - my $ldap = shift; - my $username = shift; - my ($login, $domain) = split /\@/, $username, 2; - - # Error if the domain is unknown. - die "Error: Unknown domain `" .$domain. "'.\n" - unless $ldap->domain->search({ domain => $domain })->count; - - # Ensure that the username doesn't already exist. - die "Error: User `" .$username. "' already exists.\n" - if $ldap->user->search({ username => $username })->count; - - # Ensure that the username doesn't correspond to an existing alias. - my $res = $ldap->alias->search({ address => $username }); - if ($res->count) { - print STDERR "Error: Alias $username already exists. "; - print STDERR "(Targetting to "; - print STDERR (join ', ', map { $_->{goto} } $res->entries); - say STDERR ".)"; - exit 1; - } -} - - -sub main { - my $ldap = shift; - my $conf = shift; - - # Define the new user - my $username; - { - if (defined $_[0]) { - $username = fix_username ($_[0]); - Email::Valid->address($username) - or die "Error: $username is not a valid e-mail.\n"; - } - else { - $username = prompt_email( "New username: ", 'is_user' ); - # TODO: add the assert in the hash. - } - } - - &assert ($ldap, $username); - - - my $user; - my $clearPassword; - { - my $isActive = 'TRUE'; - my $userPassword; - if ( defined $conf->{password} ) { - $userPassword = $conf->{password}; - } - else { - $clearPassword = prompt_password(); - $userPassword = hash( $clearPassword ); - } - - $user = { - username => $username, - isActive => $isActive, - userPassword => $userPassword, - }; - - say "User name: $user->{username}"; - say "Password: (hidden)"; - - confirm_or_abort(); - } - - my $welcome = new_welcome_message ($conf, $user->{username}); - my $info; - unless (defined $conf->{password}) { - if (confirm "Send email with login information? ") { - my $to = prompt_email("Where should the email be sent? "); - $info = new_user_info_message ( $conf, $user->{username}, - $clearPassword, - $to ); - } - } - - if ($conf->{pretend}) { - say STDERR "Did not create user since we are pretending." - if $conf->{verbose} or $conf->{debug}; - } - else { - # Insert the new user - my %user = %$user; - delete $user{clearPassword}; - $ldap->user->add(\%user); - say STDERR "New account $user{username} added."; - - # Send the prepared emails - $welcome->send(); - say "Sent welcome message (". (security_status $welcome) .")."; - - # Subscribe user to announce-list - subscribe($conf, $username, 'announce@lists.fripost.org') - if confirm("Subscribe user to announce mailing list? "); - - if (defined $info) { - $info->send(); - say "Credentials sent (". (security_status $info) .")."; - } - } -} - - -=head1 AUTHOR - -Stefan Kangas C<< >> - -Guilhem Moulin C<< >> - -=head1 COPYRIGHT - -Copyright 2010,2011 Stefan Kangas. - -Copyright 2012 Guilhem Moulin. - -=head1 LICENSE - -This program is free software; you can redistribute it and/or modify it -under the same terms as perl itself. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -=cut - -1; # End of user_add.pm - -__END__ -- cgit v1.2.3