source: trunk/LATMOS-Accounts/bin/la-passwd @ 1888

Last change on this file since 1888 was 1755, checked in by nanardon, 8 years ago

deny to set wrong password unless with --force

  • Property svn:executable set to *
File size: 2.0 KB
RevLine 
[189]1#!/usr/bin/perl
2
3use strict;
4use warnings;
5use LATMOS::Accounts;
6use Getopt::Long;
7use Pod::Usage;
[312]8use Term::ReadKey;
[189]9
[312]10=head1 NAME
11
[715]12    la-passwd - set user password                                         
13                                                                           
14=head1 SYNOPSIS                                                           
15                                                                             
16    la-passwd [options] userid                                             
[312]17
[584]18=head1 OPTIONS
19
20=over 4
21
[861]22=item -c|--config configdir
[584]23
[861]24Use this configuration directory instead of the default one.
[584]25
[594]26=item -b|--base basename
27
28Query this specific base instead of the default one.
29
[715]30=item -s|--sync syncname
31
32Use this synchronisation
33
[594]34=item -t|--test
35
36Don't change the password but check its validity using CrackLib.
37
[584]38=back
39
[312]40=cut
41
[189]42GetOptions(
43    'c|config=s' => \my $config,
44    'b|base=s'   => \my $base,
[584]45    't|test'     => \my $test,
[715]46    's|sync=s'   => \my $sync,
[1755]47    'f|force'    => \my $force,
[189]48    'help'       => sub { pod2usage(0) },
49) or pod2usage();
50
[656]51if (!$ARGV[0]) {warn "You must specify 'userid', aborting\n"; pod2usage(); }
[655]52
[189]53my $otype = 'user';
54
[457]55my $LA = LATMOS::Accounts->new($config, noacl => 1);
[715]56my $labase = $base ? $LA->base($base) : $LA->sync_access($sync);
[189]57$labase && $labase->load or die "Cannot load base";
58
[664]59$labase->wexported(1);
60
[189]61my $obj = $labase->get_object($otype, $ARGV[0]) or do {
62    die "Object $otype $ARGV[0] not found\n";
63};
[312]64
65ReadMode('noecho');
66print "Enter password: ";
67my $password = ReadLine(0);
68ReadMode 0;
69print "\n";
[772]70chomp($password);
[312]71
[1755]72my $res = $obj->check_password($password);
[584]73
[1755]74if ($res !~ /^ok$/) {
75    print "Password quality: " . $res . "\n";
76    die "Cannot set bad password, use --force to bypass security\n" unless($force);
77}
78
[584]79exit(0)  if($test);
80
[312]81if ($obj->set_password($password)) {
[207]82    print "Password succefully changed\n";
[412]83    $labase->commit;
[207]84    exit 0;
85} else {
86    warn "Error when trying to change password\n";
87    exit 1;
88}
Note: See TracBrowser for help on using the repository browser.