diff --git a/app/Models/User.php b/app/Models/User.php index e48b8bf074..fac4e69e47 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -626,6 +626,8 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo $username = str_slug(substr($first_name, 0, 1).'.'.str_slug($last_name)); } elseif ($format == 'lastname_firstinitial') { $username = str_slug($last_name).'_'.str_slug(substr($first_name, 0, 1)); + } elseif ($format == 'lastname.firstinitial') { + $username = str_slug($last_name).'.'.str_slug(substr($first_name, 0, 1)); } elseif ($format == 'firstnamelastname') { $username = str_slug($first_name).str_slug($last_name); } elseif ($format == 'firstnamelastinitial') { diff --git a/resources/lang/en-US/general.php b/resources/lang/en-US/general.php index cf344273be..dcab105a09 100644 --- a/resources/lang/en-US/general.php +++ b/resources/lang/en-US/general.php @@ -127,6 +127,7 @@ return [ 'firstname_lastname_underscore_format' => 'First Name Last Name (jane_smith@example.com)', 'lastnamefirstinitial_format' => 'Last Name First Initial (smithj@example.com)', 'firstintial_dot_lastname_format' => 'First Initial Last Name (j.smith@example.com)', + 'lastname_dot_firstinitial_format' => 'Last Name First Initial (smith.j@example.com)', 'firstname_lastname_display' => 'First Name Last Name (Jane Smith)', 'lastname_firstname_display' => 'Last Name First Name (Smith Jane)', 'name_display_format' => 'Name Display Format', diff --git a/resources/macros/macros.php b/resources/macros/macros.php index db7b1d08b4..debf3241c5 100644 --- a/resources/macros/macros.php +++ b/resources/macros/macros.php @@ -198,6 +198,7 @@ Form::macro('username_format', function ($name = 'username_format', $selected = 'firstname_lastname' => trans('general.firstname_lastname_underscore_format'), 'firstinitial.lastname' => trans('general.firstinitial.lastname'), 'lastname_firstinitial' => trans('general.lastname_firstinitial'), + 'lastname.firstinitial' => trans('general.lastname_dot_firstinitial_format'), 'firstnamelastname' => trans('general.firstnamelastname'), 'firstnamelastinitial' => trans('general.firstnamelastinitial'), 'lastname.firstname' => trans('general.lastnamefirstname'), diff --git a/tests/Unit/UserTest.php b/tests/Unit/UserTest.php index e089fc4023..ade6a4c692 100644 --- a/tests/Unit/UserTest.php +++ b/tests/Unit/UserTest.php @@ -72,6 +72,14 @@ class UserTest extends TestCase $this->assertEquals($expected_username, $user['username']); } + public function testLastNameDotFirstInitial() + { + $fullname = "Natalia Allanovna Romanova-O'Shostakova"; + $expected_username = 'allanovna-romanova-oshostakova.n'; + $user = User::generateFormattedNameFromFullName($fullname, 'lastname.firstinitial'); + $this->assertEquals($expected_username, $user['username']); + } + public function lastNameUnderscoreFirstInitial() { $fullname = "Natalia Allanovna Romanova-O'Shostakova";