From ef35a0f2f1ebdafb0e156f9ed5a2e9714364e32f Mon Sep 17 00:00:00 2001 From: snipe Date: Mon, 11 Aug 2025 18:38:22 +0100 Subject: [PATCH] Fixed #10284: Added mobile phone to users Signed-off-by: snipe --- app/Helpers/IconHelper.php | 2 ++ app/Http/Controllers/Api/UsersController.php | 10 +++++++ app/Http/Transformers/UsersTransformer.php | 1 + app/Importer/UserImporter.php | 1 + app/Livewire/Importer.php | 8 +++++ app/Models/User.php | 2 ++ app/Presenters/UserPresenter.php | 9 ++++++ database/factories/UserFactory.php | 1 + ...81519_add_mobile_number_to_users_table.php | 30 +++++++++++++++++++ resources/lang/en-US/admin/users/table.php | 1 + .../views/partials/bootstrap-table.blade.php | 7 +++++ resources/views/users/edit.blade.php | 9 ++++++ resources/views/users/view.blade.php | 13 ++++++++ 13 files changed, 94 insertions(+) create mode 100644 database/migrations/2025_08_11_181519_add_mobile_number_to_users_table.php diff --git a/app/Helpers/IconHelper.php b/app/Helpers/IconHelper.php index b493732bee..668b01a9f6 100644 --- a/app/Helpers/IconHelper.php +++ b/app/Helpers/IconHelper.php @@ -43,6 +43,8 @@ class IconHelper return 'fa-regular fa-envelope'; case 'phone': return 'fa-solid fa-phone'; + case 'mobile': + return 'fas fa-mobile-screen-button'; case 'long-arrow-right': return 'fas fa-long-arrow-alt-right'; case 'download': diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index 4188e1e066..a0d9aeaa30 100644 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -70,6 +70,7 @@ class UsersController extends Controller 'users.notes', 'users.permissions', 'users.phone', + 'users.mobile', 'users.state', 'users.two_factor_enrolled', 'users.two_factor_optin', @@ -121,6 +122,14 @@ class UsersController extends Controller $users = $users->where('users.company_id', '=', $request->input('company_id')); } + if ($request->filled('phone')) { + $users = $users->where('users.phone', '=', $request->input('phone')); + } + + if ($request->filled('mobile')) { + $users = $users->where('users.mobile', '=', $request->input('mobile')); + } + if ($request->filled('location_id')) { $users = $users->where('users.location_id', '=', $request->input('location_id')); } @@ -293,6 +302,7 @@ class UsersController extends Controller 'manages_users_count', 'manages_locations_count', 'phone', + 'mobile', 'address', 'city', 'state', diff --git a/app/Http/Transformers/UsersTransformer.php b/app/Http/Transformers/UsersTransformer.php index 5140f67148..fb941007ab 100644 --- a/app/Http/Transformers/UsersTransformer.php +++ b/app/Http/Transformers/UsersTransformer.php @@ -45,6 +45,7 @@ class UsersTransformer 'jobtitle' => ($user->jobtitle) ? e($user->jobtitle) : null, 'vip' => ($user->vip == '1') ? true : false, 'phone' => ($user->phone) ? e($user->phone) : null, + 'mobile' => ($user->mobile) ? e($user->mobile) : null, 'website' => ($user->website) ? e($user->website) : null, 'address' => ($user->address) ? e($user->address) : null, 'city' => ($user->city) ? e($user->city) : null, diff --git a/app/Importer/UserImporter.php b/app/Importer/UserImporter.php index 31f56602d3..633551c24d 100644 --- a/app/Importer/UserImporter.php +++ b/app/Importer/UserImporter.php @@ -52,6 +52,7 @@ class UserImporter extends ItemImporter $this->item['email'] = trim($this->findCsvMatch($row, 'email')); $this->item['gravatar'] = trim($this->findCsvMatch($row, 'gravatar')); $this->item['phone'] = trim($this->findCsvMatch($row, 'phone_number')); + $this->item['mobile'] = trim($this->findCsvMatch($row, 'mobile_number')); $this->item['website'] = trim($this->findCsvMatch($row, 'website')); $this->item['jobtitle'] = trim($this->findCsvMatch($row, 'jobtitle')); $this->item['address'] = trim($this->findCsvMatch($row, 'address')); diff --git a/app/Livewire/Importer.php b/app/Livewire/Importer.php index f0ba0d735a..6e6a6f1847 100644 --- a/app/Livewire/Importer.php +++ b/app/Livewire/Importer.php @@ -334,6 +334,7 @@ class Importer extends Component 'manager_username' => trans('general.importer.manager_username'), 'notes' => trans('general.notes'), 'phone_number' => trans('admin/users/table.phone'), + 'mobile_number' => trans('admin/users/table.mobile'), 'remote' => trans('admin/users/general.remote'), 'start_date' => trans('general.start_date'), 'state' => trans('general.state'), @@ -510,6 +511,13 @@ class Importer extends Component 'telephone', 'tel.', ], + 'mobile_number' => + [ + 'mobile', + 'mobile number', + 'cell', + 'cellphone', + ], 'serial' => [ diff --git a/app/Models/User.php b/app/Models/User.php index 48f7849d66..0c1cbe21fd 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -70,6 +70,7 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo 'manager_id', 'password', 'phone', + 'mobile', 'notes', 'state', 'username', @@ -139,6 +140,7 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo 'locale', 'notes', 'phone', + 'mobile', 'state', 'username', 'website', diff --git a/app/Presenters/UserPresenter.php b/app/Presenters/UserPresenter.php index a97aa0cd5f..c60457ea05 100644 --- a/app/Presenters/UserPresenter.php +++ b/app/Presenters/UserPresenter.php @@ -124,6 +124,15 @@ class UserPresenter extends Presenter 'visible' => true, 'formatter' => 'phoneFormatter', ], + [ + 'field' => 'mobile', + 'searchable' => true, + 'sortable' => true, + 'switchable' => true, + 'title' => trans('admin/users/table.mobile'), + 'visible' => false, + 'formatter' => 'mobileFormatter', + ], [ 'field' => 'website', 'searchable' => true, diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index 2d9a54bc70..565621ca95 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -35,6 +35,7 @@ class UserFactory extends Factory 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password 'permissions' => '{}', 'phone' => $this->faker->phoneNumber(), + 'mobile' => $this->faker->phoneNumber(), 'state' => $this->faker->stateAbbr(), 'username' => $this->faker->unique()->username(), 'zip' => $this->faker->postcode(), diff --git a/database/migrations/2025_08_11_181519_add_mobile_number_to_users_table.php b/database/migrations/2025_08_11_181519_add_mobile_number_to_users_table.php new file mode 100644 index 0000000000..b0e0bbdd31 --- /dev/null +++ b/database/migrations/2025_08_11_181519_add_mobile_number_to_users_table.php @@ -0,0 +1,30 @@ +text('mobile')->after('phone')->nullable()->default(null); + } + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn('mobile'); + }); + } +}; diff --git a/resources/lang/en-US/admin/users/table.php b/resources/lang/en-US/admin/users/table.php index 969770b213..e7a5aa6490 100644 --- a/resources/lang/en-US/admin/users/table.php +++ b/resources/lang/en-US/admin/users/table.php @@ -27,6 +27,7 @@ return array( 'password_confirm' => 'Confirm Password', 'password' => 'Password', 'phone' => 'Phone', + 'mobile' => 'Mobile', 'show_current' => 'Show Current Users', 'show_deleted' => 'Show Deleted Users', 'title' => 'Title', diff --git a/resources/views/partials/bootstrap-table.blade.php b/resources/views/partials/bootstrap-table.blade.php index 0438f11914..0eca09d946 100644 --- a/resources/views/partials/bootstrap-table.blade.php +++ b/resources/views/partials/bootstrap-table.blade.php @@ -778,6 +778,13 @@ } } + // Create a linked phone number in the table list + function mobileFormatter(value) { + if (value) { + return ' ' + value + ''; + } + } + function deployedLocationFormatter(row, value) { if ((row) && (row!=undefined)) { diff --git a/resources/views/users/edit.blade.php b/resources/views/users/edit.blade.php index 25dd799177..3df806ff7a 100755 --- a/resources/views/users/edit.blade.php +++ b/resources/views/users/edit.blade.php @@ -436,6 +436,15 @@ + +
+ +
+ + {!! $errors->first('mobile', '') !!} +
+
+
diff --git a/resources/views/users/view.blade.php b/resources/views/users/view.blade.php index fcfc6c2e6b..cc944dbf65 100755 --- a/resources/views/users/view.blade.php +++ b/resources/views/users/view.blade.php @@ -527,6 +527,19 @@
@endif + @if ($user->mobile) + +
+
+ {{ trans('admin/users/table.mobile') }} +
+ +
+ @endif @if ($user->userloc)