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 '