#!/usr/bin/perl package Fripost::Commands::user_passwd; use 5.010_000; use warnings; use strict; use utf8; =head1 NAME user_passwd - 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<< >> Guilhem Moulin C<< >> =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__