Changeset 1151


Ignore:
Timestamp:
09/19/12 17:22:52 (12 years ago)
Author:
nanardon
Message:

add tools to generate random password

Location:
trunk
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LATMOS-Accounts-Web/lib/LATMOS/Accounts/Web/Controller/Ajax.pm

    r1135 r1151  
    44use warnings; 
    55use base 'Catalyst::Controller'; 
     6use LATMOS::Accounts::Utils; 
    67 
    78=head1 NAME 
     
    128129} 
    129130 
     131sub random_password : Local { 
     132    my ($self, $c) = @_; 
     133 
     134    $c->stash->{random_password} = 
     135    LATMOS::Accounts::Utils::genpassword( 
     136        %{ $c->req->params() } 
     137    ); 
     138} 
     139 
    130140sub check_ug_validity : Local { 
    131141    my ( $self, $c ) = @_; 
  • trunk/LATMOS-Accounts-Web/root/html/users/passwd.tt

    r1081 r1151  
    1616<div id="oform"> 
    1717[% IF c.model('Accounts').db.check_acl(user, 'userPassword', 'w') %] 
     18 
    1819<form id="fpasswd" action="[% c.uri_for(username, subform) %]" method="POST"> 
    1920<table border="1"> 
     
    2930</table> 
    3031</form> 
     32 
     33<fieldset> 
     34<legend>Mot de passe aléatoire</legend> 
     35[% c.prototype.form_remote_tag({ 
     36    update => 'randpasswd', 
     37    url    => c.uri_for('/ajax', 'random_password') 
     38} ) %] 
     39<input type=submit value="Générer !"> 
     40<span id="randpasswd">Ici, votre mot de passe</span> 
     41<br> 
     42<input type=checkbox name=nonalpha value="1">Utiliser des caractÚres non 
     43alpha-numérique<br> 
     44<input type=checkbox name=syllables value="1">Utiliser des syllabes plutÃŽt que 
     45des lettres<br> 
     46</form> 
     47</fieldset> 
     48 
    3149[% ELSE %] 
    3250<p>Vous n'avez pas les droits suffisants pour changer ce mot de passe</p> 
  • trunk/LATMOS-Accounts/MANIFEST

    r1111 r1151  
    1 MANIFEST 
    2 Makefile.PL 
    3 README 
    4 TODO 
    51annexes/sql.schema.sql 
    62bin/la-acls 
     
    95bin/la-config 
    106bin/la-create 
    11 bin/la-sql-crypt-passwd 
    127bin/la-delete 
    138bin/la-edit 
    14 bin/la-sql-exchange-ip 
    159bin/la-expired-reminder 
    1610bin/la-find-expired 
    1711bin/la-freeip 
     12bin/la-gen-passwd 
    1813bin/la-graph.pl 
    1914bin/la-group 
     
    2520bin/la-rename 
    2621bin/la-rename-host 
    27 bin/la-sql-rev 
    2822bin/la-search 
     23bin/la-sql-crypt-passwd 
     24bin/la-sql-edit-form 
     25bin/la-sql-exchange-ip 
    2926bin/la-sql-list-request 
    3027bin/la-sql-loadatt 
    3128bin/la-sql-regatt 
     29bin/la-sql-rev 
    3230bin/la-sql-sanity 
    3331bin/la-sql-upgrade.in 
     
    3634bin/la-sync-manager 
    3735bin/la-sync-process 
     36bin/la-test-mail 
    3837bin/la-warn-expire 
    39 bin/la-sql-edit-form 
    40 bin/la-test-mail 
    4138etc/cron.d/latmos-accounts 
    4239etc/init.d/la-sync-manager 
    4340etc/sysconfig/latmos-accounts 
    4441latmos-accounts.spec.in 
     42lib/LATMOS/Accounts/Acls/Acl.pm 
    4543lib/LATMOS/Accounts/Acls.pm 
    46 lib/LATMOS/Accounts/Acls/Acl.pm 
    4744lib/LATMOS/Accounts/Bases/Ad/Group.pm 
    48 lib/LATMOS/Accounts/Bases/Ad/User.pm 
    4945lib/LATMOS/Accounts/Bases/Ad/objects.pm 
    5046lib/LATMOS/Accounts/Bases/Ad.pm 
     47lib/LATMOS/Accounts/Bases/Ad/User.pm 
    5148lib/LATMOS/Accounts/Bases/Attributes.pm 
     49lib/LATMOS/Accounts/Bases/Dummy.pm 
    5250lib/LATMOS/Accounts/Bases/Dummy/User.pm 
    53 lib/LATMOS/Accounts/Bases/Dummy.pm 
     51lib/LATMOS/Accounts/Bases/Heimdal.pm 
    5452lib/LATMOS/Accounts/Bases/Heimdal/User.pm 
    55 lib/LATMOS/Accounts/Bases/Heimdal.pm 
    5653lib/LATMOS/Accounts/Bases/Ldap/Group.pm 
     54lib/LATMOS/Accounts/Bases/Ldap/objects.pm 
    5755lib/LATMOS/Accounts/Bases/Ldap/Onlyaddress.pm 
     56lib/LATMOS/Accounts/Bases/Ldap.pm 
    5857lib/LATMOS/Accounts/Bases/Ldap/User.pm 
    59 lib/LATMOS/Accounts/Bases/Ldap/objects.pm 
    60 lib/LATMOS/Accounts/Bases/Ldap.pm 
    6158lib/LATMOS/Accounts/Bases/Mail/Aliases.pm 
    62 lib/LATMOS/Accounts/Bases/Mail/Revaliases.pm 
    6359lib/LATMOS/Accounts/Bases/Mail/objects.pm 
    6460lib/LATMOS/Accounts/Bases/Mail.pm 
     61lib/LATMOS/Accounts/Bases/Mail/Revaliases.pm 
     62lib/LATMOS/Accounts/Bases/Objects.pm 
     63lib/LATMOS/Accounts/Bases/OCHelper.pm 
    6564lib/LATMOS/Accounts/Bases/OCHelper/User.pm 
    66 lib/LATMOS/Accounts/Bases/OCHelper.pm 
    67 lib/LATMOS/Accounts/Bases/Objects.pm 
     65lib/LATMOS/Accounts/Bases.pm 
    6866lib/LATMOS/Accounts/Bases/Sql/Accreq.pm 
    6967lib/LATMOS/Accounts/Bases/Sql/Address.pm 
     
    7371lib/LATMOS/Accounts/Bases/Sql/Nethost.pm 
    7472lib/LATMOS/Accounts/Bases/Sql/Netzone.pm 
     73lib/LATMOS/Accounts/Bases/Sql/objects.pm 
    7574lib/LATMOS/Accounts/Bases/Sql/OCHelper/Accreq.pm 
    7675lib/LATMOS/Accounts/Bases/Sql/Onlyaddress.pm 
     76lib/LATMOS/Accounts/Bases/Sql.pm 
    7777lib/LATMOS/Accounts/Bases/Sql/Revaliases.pm 
    7878lib/LATMOS/Accounts/Bases/Sql/Site.pm 
    7979lib/LATMOS/Accounts/Bases/Sql/Sutype.pm 
    8080lib/LATMOS/Accounts/Bases/Sql/User.pm 
    81 lib/LATMOS/Accounts/Bases/Sql/objects.pm 
    82 lib/LATMOS/Accounts/Bases/Sql.pm 
    8381lib/LATMOS/Accounts/Bases/Unix/Group.pm 
     82lib/LATMOS/Accounts/Bases/Unix.pm 
    8483lib/LATMOS/Accounts/Bases/Unix/User.pm 
    85 lib/LATMOS/Accounts/Bases/Unix.pm 
    86 lib/LATMOS/Accounts/Bases.pm 
    8784lib/LATMOS/Accounts/BuildNet.pm 
    8885lib/LATMOS/Accounts/Cli.pm 
     
    9087lib/LATMOS/Accounts/Mail.pm 
    9188lib/LATMOS/Accounts/Maintenance.pm 
    92 lib/LATMOS/Accounts/SyncManager.pm 
     89lib/LATMOS/Accounts.pm 
     90lib/LATMOS/Accounts/SynchAccess/base.pm 
    9391lib/LATMOS/Accounts/SynchAccess/Objects.pm 
    94 lib/LATMOS/Accounts/SynchAccess/base.pm 
    9592lib/LATMOS/Accounts/SynchAccess.pm 
    9693lib/LATMOS/Accounts/Synchro.pm 
     94lib/LATMOS/Accounts/SyncManager.pm 
    9795lib/LATMOS/Accounts/Task/Automatedrequest.pm 
    9896lib/LATMOS/Accounts/Task/Basessynchro.pm 
     
    10098lib/LATMOS/Accounts/Task/Buildnet.pm 
    10199lib/LATMOS/Accounts/Task/Dummy.pm 
     100lib/LATMOS/Accounts/Task.pm 
    102101lib/LATMOS/Accounts/Task/Refreshexpired.pm 
    103 lib/LATMOS/Accounts/Task.pm 
    104102lib/LATMOS/Accounts/Utils.pm 
    105 lib/LATMOS/Accounts.pm 
     103live-test/10_sql.t 
     104live-test/20_ldap.t 
     105live-test/30_ad.t 
     106live-test/40_heimdal.t 
     107live-test/90_scripts_run.t 
     108live-test/91_scripts_run_help.t 
     109live-test/common.pl 
     110live-test/config.pl.sample 
     111Makefile.PL 
     112MANIFEST 
    106113man/man5/la-allowed-values.ini.pod 
    107114man/man5/la-sync-list.ini.pod 
    108115man/man5/la-sync-manager.ini.pod 
    109116man/man5/latmos-accounts.ini.pod 
     117man/man8/latmos-accounts-base-ad.pod 
     118man/man8/latmos-accounts-base-ldap.pod 
     119man/man8/latmos-accounts-base-sql.pod 
     120man/man8/latmos-accounts-base-unix.pod 
     121man/man8/latmos-accounts-changes.pod 
    110122man/man8/latmos-accounts-faq.pod 
    111123man/man8/latmos-accounts.pod 
    112 man/man8/latmos-accounts-changes.pod 
    113124patchset/no_useless_load.patch 
     125README 
    114126sample/allowed_values.ini 
    115127sample/la-allowed-values.ini 
     
    123135sqldata/attributes.csv 
    124136sqldata/base.sql 
    125 man/man8/latmos-accounts-base-sql.pod 
    126 man/man8/latmos-accounts-base-ad.pod 
    127 man/man8/latmos-accounts-base-ldap.pod 
    128 man/man8/latmos-accounts-base-unix.pod 
     137t/01_pod_coverage.t 
     138t/01_pod.t 
     139t/02_LATMOS-Accounts.t 
    129140t/05_utils.t 
    130141t/06_cli.t 
     
    143154t/26_la_synchaccess.t 
    144155t/30_la_task.t 
    145 t/02_LATMOS-Accounts.t 
    146 t/scripts.pl 
     156templates/mail/account_expired_reminder.mail 
    147157templates/mail/account_expire.mail 
    148 templates/mail/account_expired_reminder.mail 
    149158testdata/acls1 
    150159testdata/acls2 
     
    165174testdata/synchro/source/passwd 
    166175testdata/synchro/source/shadow 
    167 live-test/10_sql.t 
    168 live-test/20_ldap.t 
    169 live-test/30_ad.t 
    170 live-test/40_heimdal.t 
    171 live-test/90_scripts_run.t 
    172 live-test/91_scripts_run_help.t 
    173 live-test/config.pl.sample 
    174 live-test/common.pl 
     176TODO 
     177t/scripts.pl 
  • trunk/LATMOS-Accounts/lib/LATMOS/Accounts/Utils.pm

    r1124 r1151  
    88use LATMOS::Accounts::Log; 
    99use File::Temp qw(tempfile); 
     10use Crypt::Cracklib; 
    1011 
    1112our $VERSION = (q$Rev$ =~ /^Rev: (\d+) /)[0]; 
     
    247248} 
    248249 
     250=head2 genpassword 
     251 
     252=cut 
     253 
     254sub genpassword { 
     255    my (%options) = @_; 
     256    my @non_alpha = (qw$; : / ! ( ) [ ] { } + = @ - " ' % * & . ? < >$, ',', '$'); 
     257    my @letters = ('a' .. 'z', 'A' .. 'Z', 0 .. 9); 
     258 
     259    my @consonants = qw(b d f g j k l m n r s t v x z ch); 
     260    my @vowels = qw(a e i o u ou oi io ia iu); 
     261 
     262    $options{length} ||= 6 + int(rand(3)); 
     263 
     264    while (1) { 
     265        if ($options{syllables}) { 
     266            $options{length} = int($options{length} / 2); 
     267            $options{length} = 3 if ($options{length} < 3); 
     268        } else { 
     269            $options{length} = 6 if ($options{length} < 6); 
     270        } 
     271 
     272        my @chars; 
     273 
     274        if ($options{nonalpha}) { 
     275            for(0 .. (0 + int(rand(3)))) { 
     276                push(@chars, (@non_alpha[rand(scalar(@non_alpha))])); 
     277            } 
     278        } 
     279 
     280        foreach (1 .. ($options{length} - scalar(@chars))) { 
     281            if ($options{syllables}) { 
     282                my $c = @consonants[rand(scalar(@consonants))]; 
     283                my $v = @vowels[rand(scalar(@vowels))]; 
     284                push(@chars, "$c$v"); 
     285            } else { 
     286                push(@chars, (@letters[rand(scalar(@letters))])); 
     287            } 
     288        } 
     289 
     290 
     291        my $pass = join('', sort { rand() <=> rand() } @chars); 
     292        if (length($pass) >= 6 && fascist_check($pass) eq 'ok') { 
     293            return $pass; 
     294        } 
     295    } 
     296} 
     297 
    2492981; 
    250299 
Note: See TracChangeset for help on using the changeset viewer.