my $self = shift;
my $password = shift;
- my $cust_main = $self->cust_main;
-
- # workaround for non-inserted services
- if ( !$cust_main and $self->get('pkgnum') ) {
- my $cust_pkg = FS::cust_pkg->by_key($self->get('pkgnum'));
- $cust_main = $cust_pkg->cust_main if $cust_pkg;
- }
- warn "is_password_allowed: no customer could be identified" if !$cust_main;
- return '' if $cust_main && $conf->config_bool('password-insecure', $cust_main->agentnum);
-
# basic checks using Data::Password;
# options for Data::Password
$DICTIONARY = 4; # minimum length of disallowed words
}
+=item delete_password_history;
+
+Removes all password history records attached to this object, in preparation
+to delete the object.
+
+=cut
+
+sub delete_password_history {
+ my $self = shift;
+ my @records = qsearch('password_history', {
+ $self->password_history_key => $self->get($self->primary_key)
+ });
+ my $error = '';
+ foreach (@records) {
+ $error ||= $_->delete;
+ }
+ return $error . ' (clearing password history)' if $error;
+ '';
+}
+
=item _blowfishcrypt PASSWORD
For internal use: takes PASSWORD and returns a new
=back
+=head1 CLASS METHODS
+
+=over 4
+
+=item pw_set
+
+Returns the list of characters allowed in random passwords. This is now
+hardcoded.
+
+=cut
+
+sub pw_set {
+
+ # ASCII alphabet, minus easily confused stuff (l, o, O, 0, 1)
+ # and plus some "safe" punctuation
+ split('',
+ 'abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ23456789#.,[]-_=+'
+ );
+
+}
+
+=back
+
=head1 SEE ALSO
L<FS::password_history>