From 43c19490920154ae642f2de16c0ad5130bdc9195 Mon Sep 17 00:00:00 2001 From: snipe Date: Fri, 4 Mar 2022 05:35:26 -0800 Subject: [PATCH] Add remote option to user Signed-off-by: snipe --- app/Http/Controllers/Api/UsersController.php | 5 +++ .../Controllers/Users/UsersController.php | 7 ++-- app/Http/Transformers/UsersTransformer.php | 1 + app/Models/User.php | 1 + app/Presenters/UserPresenter.php | 9 +++++ .../2022_03_04_080836_add_remote_to_user.php | 34 +++++++++++++++++++ resources/lang/en/admin/users/general.php | 3 ++ resources/views/users/edit.blade.php | 17 ++++++++-- 8 files changed, 71 insertions(+), 6 deletions(-) create mode 100644 database/migrations/2022_03_04_080836_add_remote_to_user.php diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index 5872c7bfca..aad203109e 100644 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -63,6 +63,7 @@ class UsersController extends Controller 'users.updated_at', 'users.username', 'users.zip', + 'users.remote', 'users.ldap_import', ])->with('manager', 'groups', 'userloc', 'company', 'department', 'assets', 'licenses', 'accessories', 'consumables') @@ -136,6 +137,10 @@ class UsersController extends Controller $users = $users->where('ldap_import', '=', $request->input('ldap_import')); } + if ($request->filled('remote')) { + $users = $users->where('remote', '=', $request->input('remote')); + } + if ($request->filled('assets_count')) { $users->has('assets', '=', $request->input('assets_count')); } diff --git a/app/Http/Controllers/Users/UsersController.php b/app/Http/Controllers/Users/UsersController.php index ebf8df5d6b..e0a355facd 100755 --- a/app/Http/Controllers/Users/UsersController.php +++ b/app/Http/Controllers/Users/UsersController.php @@ -115,6 +115,7 @@ class UsersController extends Controller $user->state = $request->input('state', null); $user->country = $request->input('country', null); $user->zip = $request->input('zip', null); + $user->remote = $request->input('remote', 0); // Strip out the superuser permission if the user isn't a superadmin $permissions_array = $request->input('permission'); @@ -179,7 +180,6 @@ class UsersController extends Controller if ($user = User::find($id)) { $this->authorize('update', $user); $permissions = config('permissions'); - $groups = Group::pluck('name', 'id'); $userGroups = $user->groups()->pluck('name', 'id'); @@ -190,9 +190,7 @@ class UsersController extends Controller return view('users/edit', compact('user', 'groups', 'userGroups', 'permissions', 'userPermissions'))->with('item', $user); } - $error = trans('admin/users/message.user_not_found', compact('id')); - - return redirect()->route('users.index')->with('error', $error); + return redirect()->route('users.index')->with('error', trans('admin/users/message.user_not_found', compact('id'))); } /** @@ -267,6 +265,7 @@ class UsersController extends Controller $user->country = $request->input('country', null); $user->activated = $request->input('activated', 0); $user->zip = $request->input('zip', null); + $user->remote = $request->input('remote', 0); // Update the location of any assets checked out to this user Asset::where('assigned_type', User::class) diff --git a/app/Http/Transformers/UsersTransformer.php b/app/Http/Transformers/UsersTransformer.php index 49aea90a1d..5366a524c9 100644 --- a/app/Http/Transformers/UsersTransformer.php +++ b/app/Http/Transformers/UsersTransformer.php @@ -28,6 +28,7 @@ class UsersTransformer 'first_name' => e($user->first_name), 'last_name' => e($user->last_name), 'username' => e($user->username), + 'remote' => ($user->remote == '1') ? true : false, 'locale' => ($user->locale) ? e($user->locale) : null, 'employee_num' => e($user->employee_num), 'manager' => ($user->manager) ? [ diff --git a/app/Models/User.php b/app/Models/User.php index 492dece3ff..8f06eae6a8 100755 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -58,6 +58,7 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo 'state', 'username', 'zip', + 'remote', ]; protected $casts = [ diff --git a/app/Presenters/UserPresenter.php b/app/Presenters/UserPresenter.php index d7dd7e6457..7654eb5e23 100644 --- a/app/Presenters/UserPresenter.php +++ b/app/Presenters/UserPresenter.php @@ -85,6 +85,15 @@ class UserPresenter extends Presenter 'visible' => true, 'formatter' => 'usersLinkFormatter', ], + [ + 'field' => 'remote', + 'searchable' => false, + 'sortable' => true, + 'switchable' => true, + 'title' => trans('admin/users/general.remote'), + 'visible' => false, + 'formatter' => 'trueFalseFormatter', + ], [ 'field' => 'email', 'searchable' => true, diff --git a/database/migrations/2022_03_04_080836_add_remote_to_user.php b/database/migrations/2022_03_04_080836_add_remote_to_user.php new file mode 100644 index 0000000000..2f48dfe0b3 --- /dev/null +++ b/database/migrations/2022_03_04_080836_add_remote_to_user.php @@ -0,0 +1,34 @@ +boolean('remote')->nullable()->default(0); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + if (Schema::hasColumn('users', 'remote')) { + $table->dropColumn('remote'); + } + }); + } +} diff --git a/resources/lang/en/admin/users/general.php b/resources/lang/en/admin/users/general.php index 852890a9cf..dfefcbe1a1 100644 --- a/resources/lang/en/admin/users/general.php +++ b/resources/lang/en/admin/users/general.php @@ -34,4 +34,7 @@ return [ 'warning_deletion_information' => 'You are about to delete the :count user(s) listed below. Super admin names are highlighted in red.', 'update_user_asssets_status' => 'Update all assets for these users to this status', 'checkin_user_properties' => 'Check in all properties associated with these users', + 'remote_label' => 'This is a remote user', + 'remote' => 'Remote', + 'remote_help' => 'This can be useful if you need to filter by remote users who never or rarely come into your physical locations.' ]; diff --git a/resources/views/users/edit.blade.php b/resources/views/users/edit.blade.php index ae7fbfa70a..6eb525d174 100755 --- a/resources/views/users/edit.blade.php +++ b/resources/views/users/edit.blade.php @@ -273,7 +273,7 @@ @include ('partials.forms.edit.company-select', ['translated_name' => trans('general.select_company'), 'fieldname' => 'company_id']) @endif - + @if ($user->avatar)
@@ -338,7 +338,20 @@ @include ('partials.forms.edit.department-select', ['translated_name' => trans('general.department'), 'fieldname' => 'department_id']) - + +
+
+ +

{{ trans('admin/users/general.remote_help') }} +

+
+
+ + @include ('partials.forms.edit.location-select', ['translated_name' => trans('general.location'), 'fieldname' => 'location_id'])