From 696a5c1ac572c9327021d01d2d49121f1198c7da Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 4 Nov 2010 17:38:35 +0000 Subject: [PATCH] finish username-slash and username-equals, RT#10452 --- FS/FS/Conf.pm | 2 +- FS/FS/svc_acct.pm | 16 +++++++--------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index 542dcc9e7..8fce99024 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -1629,7 +1629,7 @@ and customer address. Include units.', { 'key' => 'username-slash', 'section' => 'username', - 'description' => 'Allow the slash character (/) in usernames.', + 'description' => 'Allow the slash character (/) in usernames. When using, make sure to set "Home directory" to fixed and blank in all svc_acct service definitions.', 'type' => 'checkbox', }, diff --git a/FS/FS/svc_acct.pm b/FS/FS/svc_acct.pm index 43ff2a5fa..94a839bd4 100644 --- a/FS/FS/svc_acct.pm +++ b/FS/FS/svc_acct.pm @@ -1243,16 +1243,14 @@ sub check { } my $ulen = $usernamemax || $self->dbdef_table->column('username')->length; - if ( $username_uppercase ) { - $recref->{username} =~ /^([a-z0-9_\-\.\&\%\:\/\=]{$usernamemin,$ulen})$/i - or return gettext('illegal_username'). " ($usernamemin-$ulen): ". $recref->{username}; - $recref->{username} = $1; - } else { - $recref->{username} =~ /^([a-z0-9_\-\.\&\%\:]{$usernamemin,$ulen})$/ - or return gettext('illegal_username'). " ($usernamemin-$ulen): ". $recref->{username}; - $recref->{username} = $1; - } + $recref->{username} =~ /^([a-z0-9_\-\.\&\%\:\/\=]{$usernamemin,$ulen})$/i + or return gettext('illegal_username'). " ($usernamemin-$ulen): ". $recref->{username}; + $recref->{username} = $1; + + unless ( $username_uppercase ) { + $recref->{username} =~ /[A-Z]/ and return gettext('illegal_username'); + } if ( $username_letterfirst ) { $recref->{username} =~ /^[a-z]/ or return gettext('illegal_username'); } elsif ( $username_letter ) { -- 2.11.0