aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Fripost/Commands/user_passwd.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Fripost/Commands/user_passwd.pm')
-rw-r--r--lib/Fripost/Commands/user_passwd.pm89
1 files changed, 89 insertions, 0 deletions
diff --git a/lib/Fripost/Commands/user_passwd.pm b/lib/Fripost/Commands/user_passwd.pm
new file mode 100644
index 0000000..f443ef6
--- /dev/null
+++ b/lib/Fripost/Commands/user_passwd.pm
@@ -0,0 +1,89 @@
+#!/usr/bin/perl
+package Fripost::Commands::user_passwd;
+
+use 5.010_000;
+use warnings;
+use strict;
+use utf8;
+
+=head1 NAME
+
+user_add - Change user password
+
+=cut
+
+use FindBin qw($Bin);
+use lib "$Bin/lib";
+
+use Fripost::Password;
+use Fripost::Prompt;
+use Fripost::Schema;
+
+our $VERSION = '0.01';
+
+sub main {
+ my $ldap = shift;
+ my $conf = shift;
+
+ 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("Username: ", 'is_user');
+ }
+
+
+ # Ensure that the user exists.
+ my $domain = (split /\@/, $username, 2)[1];
+ die "Error: Unknown domain `" .$domain. "'.\n"
+ unless $ldap->domain->search({ domain => $domain })->count;
+ die "Error: Unknown user `" .$username. "'.\n"
+ unless $ldap->user->search({ username => $username })->count;
+
+
+ my $password = $conf->{password};
+ $password //= hash( prompt_password() );
+
+
+ if ($conf->{pretend}) {
+ say STDERR "Did not change password since we are pretending."
+ if $conf->{verbose} or $conf->{debug};
+ }
+ else {
+ # Change the password.
+ $ldap->user->passwd({ username => $username,
+ userPassword => $password });
+ say "Updated password for $username.";
+ }
+}
+
+
+=head1 AUTHOR
+
+Stefan Kangas C<< <skangas at skangas.se> >>
+
+Guilhem Moulin C<< <guilhem at fripost.org> >>
+
+=head1 COPYRIGHT
+
+Copyright 2010 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_passwd.pm
+
+__END__