From f0bf77735df2502c9eda34850d1376224a6cbe94 Mon Sep 17 00:00:00 2001 From: akemidx Date: Thu, 3 Apr 2025 23:34:04 -0400 Subject: [PATCH 1/4] adding last name only as a email choice --- app/Models/User.php | 2 ++ resources/lang/en-US/general.php | 1 + resources/macros/macros.php | 1 + tests/Unit/UserTest.php | 8 ++++++++ 4 files changed, 12 insertions(+) diff --git a/app/Models/User.php b/app/Models/User.php index fac4e69e4..69e3e33e6 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -622,6 +622,8 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo $username = str_slug($first_name).'_'.str_slug($last_name); } elseif ($format == 'firstname') { $username = str_slug($first_name); + } elseif ($format == 'lastname') { + $username = str_slug($last_name); } elseif ($format == 'firstinitial.lastname') { $username = str_slug(substr($first_name, 0, 1).'.'.str_slug($last_name)); } elseif ($format == 'lastname_firstinitial') { diff --git a/resources/lang/en-US/general.php b/resources/lang/en-US/general.php index e20c7dfd5..5fd7dfb1f 100644 --- a/resources/lang/en-US/general.php +++ b/resources/lang/en-US/general.php @@ -185,6 +185,7 @@ return [ 'last' => 'Last', 'last_login' => 'Last Login', 'last_name' => 'Last Name', + 'last_name_format' => 'Last Name (doe@example.com)', 'license' => 'License', 'license_report' => 'License Report', 'licenses_available' => 'Licenses available', diff --git a/resources/macros/macros.php b/resources/macros/macros.php index debf3241c..19ef05fb0 100644 --- a/resources/macros/macros.php +++ b/resources/macros/macros.php @@ -193,6 +193,7 @@ Form::macro('username_format', function ($name = 'username_format', $selected = $formats = [ 'firstname.lastname' => trans('general.firstname_lastname_format'), 'firstname' => trans('general.first_name_format'), + 'lastname' => trans('general.last_name_format'), 'filastname' => trans('general.filastname_format'), 'lastnamefirstinitial' => trans('general.lastnamefirstinitial_format'), 'firstname_lastname' => trans('general.firstname_lastname_underscore_format'), diff --git a/tests/Unit/UserTest.php b/tests/Unit/UserTest.php index d47a49934..ed4b40349 100644 --- a/tests/Unit/UserTest.php +++ b/tests/Unit/UserTest.php @@ -24,6 +24,14 @@ class UserTest extends TestCase $this->assertEquals($expected_username, $user['username']); } + public function testLastName() + { + $fullname = "Natalia Allanovna Romanova-O'Shostakova"; + $expected_username = 'allanovna-romanova-oshostakova'; + $user = User::generateFormattedNameFromFullName($fullname, 'lastname'); + $this->assertEquals($expected_username, $user['username']); + } + public function testFirstNameDotLastName() { $fullname = "Natalia Allanovna Romanova-O'Shostakova"; From 275e1beda28673ed7dafaf2d41216c60bbab46a3 Mon Sep 17 00:00:00 2001 From: akemidx Date: Tue, 8 Apr 2025 13:15:28 -0400 Subject: [PATCH 2/4] updating for conflicts and adding test --- tests/Unit/UserTest.php | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/tests/Unit/UserTest.php b/tests/Unit/UserTest.php index 0d2b41a78..f54969a5d 100644 --- a/tests/Unit/UserTest.php +++ b/tests/Unit/UserTest.php @@ -24,13 +24,6 @@ class UserTest extends TestCase $this->assertEquals($expected_username, $user['username']); } - public function testLastName() - { - $fullname = "Natalia Allanovna Romanova-O'Shostakova"; - $expected_username = 'allanovna-romanova-oshostakova'; - $user = User::generateFormattedNameFromFullName($fullname, 'lastname'); - $this->assertEquals($expected_username, $user['username']); - public function testFirstNameEmail() { $fullname = "Natalia Allanovna Romanova-O'Shostakova"; @@ -39,6 +32,22 @@ class UserTest extends TestCase $this->assertEquals($expected_email, $user['username'] . '@example.com'); } + public function testLastName() + { + $fullname = "Natalia Allanovna Romanova-O'Shostakova"; + $expected_username = 'allanovna-romanova-oshostakova'; + $user = User::generateFormattedNameFromFullName($fullname, 'lastname'); + $this->assertEquals($expected_username, $user['username']); + } + + public function testLastNameEmail() + { + $fullname = "Natalia Allanovna Romanova-O'Shostakova"; + $expected_username = 'allanovna-romanova-oshostakova@example.com'; + $user = User::generateFormattedNameFromFullName($fullname, 'lastname'); + $this->assertEquals($expected_username, $user['username'] . '@example.com'); + } + public function testFirstNameDotLastName() { $fullname = "Natalia Allanovna Romanova-O'Shostakova"; From 7701c6097f9393de9947adde4421801ebdaa21e7 Mon Sep 17 00:00:00 2001 From: akemidx Date: Tue, 8 Apr 2025 13:21:32 -0400 Subject: [PATCH 3/4] adding username split --- resources/lang/en-US/admin/settings/general.php | 1 + resources/macros/macros.php | 1 + 2 files changed, 2 insertions(+) diff --git a/resources/lang/en-US/admin/settings/general.php b/resources/lang/en-US/admin/settings/general.php index c34595238..fd1fefaf3 100644 --- a/resources/lang/en-US/admin/settings/general.php +++ b/resources/lang/en-US/admin/settings/general.php @@ -398,6 +398,7 @@ return [ 'text' => 'Text', 'firstname_lastname_format' => 'First Name Last Name (jane.smith)', 'first_name_format' => 'First Name (jane)', + 'last_name_format' => 'Last Name (doe)', 'filastname_format' => 'First Initial Last Name (jsmith)', 'lastnamefirstinitial_format' => 'Last Name First Initial (smithj)', 'firstname_lastname_underscore_format' => 'First Name Last Name (jane_smith)', diff --git a/resources/macros/macros.php b/resources/macros/macros.php index a763c1f48..ba7aa1386 100644 --- a/resources/macros/macros.php +++ b/resources/macros/macros.php @@ -219,6 +219,7 @@ Form::macro('username_format', function ($name = 'username_format', $selected = $formats = [ 'firstname.lastname' => trans('admin/settings/general.firstname_lastname_format'), 'firstname' => trans('admin/settings/general.first_name_format'), + 'lastname' => trans('admin/settings/general.last_name_format'), 'filastname' => trans('admin/settings/general.filastname_format'), 'lastnamefirstinitial' => trans('admin/settings/general.lastnamefirstinitial_format'), 'firstname_lastname' => trans('admin/settings/general.firstname_lastname_underscore_format'), From 1307146831207f8ca1e1987751acc9a56a9afff2 Mon Sep 17 00:00:00 2001 From: akemidx Date: Wed, 9 Apr 2025 16:21:48 -0400 Subject: [PATCH 4/4] changing where translations live. coalescing --- .../lang/en-US/admin/settings/general.php | 44 ++++++++++++----- resources/lang/en-US/general.php | 26 +++------- resources/macros/macros.php | 48 +++++++++---------- resources/views/settings/general.blade.php | 4 +- 4 files changed, 64 insertions(+), 58 deletions(-) diff --git a/resources/lang/en-US/admin/settings/general.php b/resources/lang/en-US/admin/settings/general.php index fd1fefaf3..ffe20383a 100644 --- a/resources/lang/en-US/admin/settings/general.php +++ b/resources/lang/en-US/admin/settings/general.php @@ -396,18 +396,38 @@ return [ 'due_checkin_days_help' => 'How many days before the expected checkin of an asset should it be listed in the "Due for checkin" page?', 'no_groups' => 'No groups have been created yet. Visit Admin Settings > Permission Groups to add one.', 'text' => 'Text', - 'firstname_lastname_format' => 'First Name Last Name (jane.smith)', - 'first_name_format' => 'First Name (jane)', - 'last_name_format' => 'Last Name (doe)', - 'filastname_format' => 'First Initial Last Name (jsmith)', - 'lastnamefirstinitial_format' => 'Last Name First Initial (smithj)', - 'firstname_lastname_underscore_format' => 'First Name Last Name (jane_smith)', - 'firstinitial.lastname' => 'First Initial Last Name (j.smith)', - 'lastname_firstinitial' => 'Last Name First Initial (smith_j)', - 'lastname_dot_firstinitial_format' => 'Last Name First Initial (smith.j)', - 'firstnamelastname' => 'First Name Last Name (janesmith)', - 'firstnamelastinitial' => 'First Name Last Initial (janes)', - 'lastnamefirstname' => 'Last Name.First Name (smith.jane)', + + 'username_formats' => [ + 'username_format' => 'Username Format', + 'firstname_lastname_format' => 'First Name Last Name (jane.smith)', + 'first_name_format' => 'First Name (jane)', + 'last_name_format' => 'Last Name (doe)', + 'filastname_format' => 'First Initial Last Name (jsmith)', + 'lastnamefirstinitial_format' => 'Last Name First Initial (smithj)', + 'firstname_lastname_underscore_format' => 'First Name Last Name (jane_smith)', + 'firstinitial.lastname' => 'First Initial Last Name (j.smith)', + 'lastname_firstinitial' => 'Last Name First Initial (smith_j)', + 'lastname_dot_firstinitial_format' => 'Last Name First Initial (smith.j)', + 'firstnamelastname' => 'First Name Last Name (janesmith)', + 'firstnamelastinitial' => 'First Name Last Initial (janes)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane)', + ], + + 'email_formats' => [ + 'email_format' => 'Email Format', + 'firstname_lastname_format' => 'First Name Last Name (jane.smith@example.com)', + 'first_name_format' => 'First Name (jane@example.com)', + 'last_name_format' => 'Last Name (doe@example.com)', + 'filastname_format' => 'First Initial Last Name (jsmith@example.com)', + 'lastnamefirstinitial_format' => 'Last Name First Initial (smithj@example.com)', + 'firstname_lastname_underscore_format' => 'First Name Last Name (jane_smith@example.com)', + 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', + 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', + 'lastname_dot_firstinitial_format' => 'Last Name First Initial (smith.j@example.com)', + 'firstnamelastname' => 'First Name Last Name (janesmith@example.com)', + 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', + 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', + ], diff --git a/resources/lang/en-US/general.php b/resources/lang/en-US/general.php index 753638bcf..bb73d94ab 100644 --- a/resources/lang/en-US/general.php +++ b/resources/lang/en-US/general.php @@ -121,30 +121,13 @@ return [ 'editprofile' => 'Edit Your Profile', 'eol' => 'EOL', 'email_domain' => 'Email Domain', - 'email_format' => 'Email Format', 'employee_number' => 'Employee Number', 'email_domain_help' => 'This is used to generate email addresses when importing', 'error' => 'Error', 'exclude_archived' => 'Exclude Archived Assets', 'exclude_deleted' => 'Exclude Deleted Assets', 'example' => 'Example: ', - 'filastname_format' => 'First Initial Last Name (jsmith@example.com)', - 'firstname_lastname_format' => 'First Name Last Name (jane.smith@example.com)', - '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', - 'first' => 'First', - 'firstnamelastname' => 'First Name Last Name (janesmith@example.com)', - 'lastname_firstinitial' => 'Last Name First Initial (smith_j@example.com)', - 'firstinitial.lastname' => 'First Initial Last Name (j.smith@example.com)', - 'firstnamelastinitial' => 'First Name Last Initial (janes@example.com)', - 'lastnamefirstname' => 'Last Name.First Name (smith.jane@example.com)', - 'first_name' => 'First Name', - 'first_name_format' => 'First Name (jane@example.com)', + 'files' => 'Files', 'file_name' => 'File', 'file_type' => 'File Type', @@ -186,7 +169,11 @@ return [ 'last' => 'Last', 'last_login' => 'Last Login', 'last_name' => 'Last Name', - 'last_name_format' => 'Last Name (doe@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', + 'first' => 'First', + 'first_name' => 'First Name', 'license' => 'License', 'license_report' => 'License Report', 'licenses_available' => 'Licenses available', @@ -315,7 +302,6 @@ return [ 'type' => 'Type', 'undeployable' => 'Un-deployable', 'unknown_admin' => 'Unknown Admin', - 'username_format' => 'Username Format', 'username' => 'Username', 'update' => 'Update', 'updating_item' => 'Updating :item', diff --git a/resources/macros/macros.php b/resources/macros/macros.php index ba7aa1386..9c0227670 100644 --- a/resources/macros/macros.php +++ b/resources/macros/macros.php @@ -191,18 +191,18 @@ Form::macro('barcode_types', function ($name = 'barcode_type', $selected = null, Form::macro('email_format', function ($name = 'email_format', $selected = null, $class = null) { $formats = [ - 'firstname.lastname' => trans('general.firstname_lastname_format'), - 'firstname' => trans('general.first_name_format'), - 'lastname' => trans('general.last_name_format'), - 'filastname' => trans('general.filastname_format'), - 'lastnamefirstinitial' => trans('general.lastnamefirstinitial_format'), - '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'), + 'firstname.lastname' => trans('admin/settings/general.email_formats.firstname_lastname_format'), + 'firstname' => trans('admin/settings/general.email_formats.first_name_format'), + 'lastname' => trans('admin/settings/general.email_formats.last_name_format'), + 'filastname' => trans('admin/settings/general.email_formats.filastname_format'), + 'lastnamefirstinitial' => trans('admin/settings/general.email_formats.lastnamefirstinitial_format'), + 'firstname_lastname' => trans('admin/settings/general.email_formats.firstname_lastname_underscore_format'), + 'firstinitial.lastname' => trans('admin/settings/general.email_formats.firstinitial.lastname'), + 'lastname_firstinitial' => trans('admin/settings/general.email_formats.lastname_firstinitial'), + 'lastname.firstinitial' => trans('admin/settings/general.email_formats.lastname_dot_firstinitial_format'), + 'firstnamelastname' => trans('admin/settings/general.email_formats.firstnamelastname'), + 'firstnamelastinitial' => trans('admin/settings/general.email_formats.firstnamelastinitial'), + 'lastname.firstname' => trans('admin/settings/general.email_formats.lastnamefirstname'), ]; $select = ''; diff --git a/resources/views/settings/general.blade.php b/resources/views/settings/general.blade.php index 481fa9092..b4fa3cc5c 100644 --- a/resources/views/settings/general.blade.php +++ b/resources/views/settings/general.blade.php @@ -107,7 +107,7 @@
- +
{!! Form::email_format('email_format', old('email_format', $setting->email_format), 'select2') !!} @@ -118,7 +118,7 @@
- +
{!! Form::username_format('username_format', old('username_format', $setting->username_format), 'select2') !!}