X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FPassword_Mixin.pm;h=da80cd27ff7660bee4de05421cfedc3ad01ac005;hb=22052bd02aa27742afb6b81c5bd609025a945474;hp=ac7ba5059f4141712672b28a8f53324e65d1147a;hpb=fa97f29ea43276a6f2636e1f251c775c7fa9e67c;p=freeside.git diff --git a/FS/FS/Password_Mixin.pm b/FS/FS/Password_Mixin.pm index ac7ba5059..da80cd27f 100644 --- a/FS/FS/Password_Mixin.pm +++ b/FS/FS/Password_Mixin.pm @@ -14,6 +14,8 @@ FS::UID->install_callback( sub { $conf = FS::Conf->new; }); +our @pw_set; + our $me = '[' . __PACKAGE__ . ']'; our $BLOWFISH_COST = 10; @@ -254,6 +256,37 @@ sub _blowfishcrypt { =back +=head1 CLASS METHODS + +=over 4 + +=item pw_set + +Returns the list of characters allowed in random passwords (from the +C config). + +=cut + +sub pw_set { + my $class = shift; + if (!@pw_set) { + my $pw_set = $conf->config('password-generated-characters'); + $pw_set =~ s/\s//g; # don't ever allow whitespace + if ( $pw_set =~ /[[:lower:]]/ + && $pw_set =~ /[[:upper:]]/ + && $pw_set =~ /[[:digit:]]/ + && $pw_set =~ /[[:punct:]]/ ) { + @pw_set = split('', $pw_set); + } else { + warn "password-generated-characters set is insufficient; using default."; + @pw_set = split('', 'abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ23456789()#.,'); + } + } + return @pw_set; +} + +=back + =head1 SEE ALSO L