From 5b8e0b3af1859e6878e58607ed020e34159b5b1c Mon Sep 17 00:00:00 2001 From: Ivan Nieto Vivanco Date: Wed, 5 Oct 2022 18:40:07 -0500 Subject: [PATCH 01/13] Use a regex (gulp) to admit ',' (comma) and ', '(comma plus space) as customfields checkbox value delimiter --- resources/views/models/custom_fields_form.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/models/custom_fields_form.blade.php b/resources/views/models/custom_fields_form.blade.php index 90d6d77eb1..a95ddd978a 100644 --- a/resources/views/models/custom_fields_form.blade.php +++ b/resources/views/models/custom_fields_form.blade.php @@ -19,7 +19,7 @@ @foreach ($field->formatFieldValuesAsArray() as $key => $value)
From 7353ecd388a573217dbf38e1d35370cbaae65b68 Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 5 Oct 2022 16:55:59 -0700 Subject: [PATCH 02/13] Added `start_date` and `end_date` migration to users table Signed-off-by: snipe --- ...44_add_start_termination_date_to_users.php | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 database/migrations/2022_10_05_163044_add_start_termination_date_to_users.php diff --git a/database/migrations/2022_10_05_163044_add_start_termination_date_to_users.php b/database/migrations/2022_10_05_163044_add_start_termination_date_to_users.php new file mode 100644 index 0000000000..23074b6eaf --- /dev/null +++ b/database/migrations/2022_10_05_163044_add_start_termination_date_to_users.php @@ -0,0 +1,34 @@ +date('start_date')->nullable()->default(null); + $table->date('end_date')->nullable()->default(null); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn('start_date'); + $table->dropColumn('end_date'); + }); + } +} From d23e178c62abaa8c2875e1f5ae2a0653a61c2660 Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 5 Oct 2022 16:56:10 -0700 Subject: [PATCH 03/13] Adde language strings Signed-off-by: snipe --- resources/lang/en/general.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/resources/lang/en/general.php b/resources/lang/en/general.php index 0f82492428..e4b2af1e45 100644 --- a/resources/lang/en/general.php +++ b/resources/lang/en/general.php @@ -378,6 +378,8 @@ return [ 'pie_chart_type' => 'Dashboard Pie Chart Type', 'hello_name' => 'Hello, :name!', 'unaccepted_profile_warning' => 'You have :count items requiring acceptance. Click here to accept or decline them', + 'start_date' => 'Start Date', + 'end_date' => 'End Date', ]; \ No newline at end of file From cf62761d18725ff3e2c7fe0d3c82f477ad437354 Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 5 Oct 2022 16:57:59 -0700 Subject: [PATCH 04/13] Added date casting and fillable to models Signed-off-by: snipe --- app/Models/User.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/app/Models/User.php b/app/Models/User.php index b33997e860..09e3509124 100755 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -59,6 +59,8 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo 'username', 'zip', 'remote', + 'start_date', + 'end_date', ]; protected $casts = [ @@ -68,6 +70,16 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo 'company_id' => 'integer', ]; + + protected $dates = [ + 'created_at', + 'updated_at', + 'deleted_at', + 'start_date', + 'end_date', + ]; + + /** * Model validation rules * @@ -83,6 +95,8 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo 'website' => 'url|nullable|max:191', 'manager_id' => 'nullable|exists:users,id|cant_manage_self', 'location_id' => 'exists:locations,id|nullable', + 'start_date' => 'nullable|date', + 'end_date' => 'nullable|date|after_or_equal:start_date', ]; /** From 56ba8a7e245c9b2a85b168de51ee9fba7e0e0806 Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 5 Oct 2022 16:58:16 -0700 Subject: [PATCH 05/13] Added API select fields and filters Signed-off-by: snipe --- app/Http/Controllers/Api/UsersController.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index 92d763dd23..edfce18689 100644 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -66,6 +66,8 @@ class UsersController extends Controller 'users.zip', 'users.remote', 'users.ldap_import', + 'users.start_date', + 'users.end_date', ])->with('manager', 'groups', 'userloc', 'company', 'department', 'assets', 'licenses', 'accessories', 'consumables', 'createdBy',) ->withCount('assets as assets_count', 'licenses as licenses_count', 'accessories as accessories_count', 'consumables as consumables_count'); @@ -146,6 +148,15 @@ class UsersController extends Controller $users = $users->where('remote', '=', $request->input('remote')); } + if ($request->filled('start_date')) { + $users = $users->where('users.start_date', '=', $request->input('start_date')); + } + + if ($request->filled('end_date')) { + $users = $users->where('users.end_date', '=', $request->input('end_date')); + } + + if ($request->filled('assets_count')) { $users->has('assets', '=', $request->input('assets_count')); } From f7a9be92ca22e74648bd06c7d3626dfd51b8369d Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 5 Oct 2022 16:58:26 -0700 Subject: [PATCH 06/13] Store data for start and end Signed-off-by: snipe --- app/Http/Controllers/Users/UsersController.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/Http/Controllers/Users/UsersController.php b/app/Http/Controllers/Users/UsersController.php index 8582ace158..52d423036f 100755 --- a/app/Http/Controllers/Users/UsersController.php +++ b/app/Http/Controllers/Users/UsersController.php @@ -119,6 +119,8 @@ class UsersController extends Controller $user->remote = $request->input('remote', 0); $user->website = $request->input('website', null); $user->created_by = Auth::user()->id; + $user->start_date = $request->input('start_date', null); + $user->end_date = $request->input('end_date', null); // Strip out the superuser permission if the user isn't a superadmin $permissions_array = $request->input('permission'); @@ -270,6 +272,8 @@ class UsersController extends Controller $user->zip = $request->input('zip', null); $user->remote = $request->input('remote', 0); $user->website = $request->input('website', null); + $user->start_date = $request->input('start_date', null); + $user->end_date = $request->input('end_date', null); // Update the location of any assets checked out to this user Asset::where('assigned_type', User::class) From bdfac1a34566a08d4262aeaa28145cc1c64d3fc4 Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 5 Oct 2022 16:58:37 -0700 Subject: [PATCH 07/13] Added start/end to the users API Signed-off-by: snipe --- app/Http/Transformers/UsersTransformer.php | 2 ++ app/Presenters/UserPresenter.php | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/app/Http/Transformers/UsersTransformer.php b/app/Http/Transformers/UsersTransformer.php index 4cd0159a07..bf510bab83 100644 --- a/app/Http/Transformers/UsersTransformer.php +++ b/app/Http/Transformers/UsersTransformer.php @@ -69,6 +69,8 @@ class UsersTransformer ] : null, 'created_at' => Helper::getFormattedDateObject($user->created_at, 'datetime'), 'updated_at' => Helper::getFormattedDateObject($user->updated_at, 'datetime'), + 'start_date' => Helper::getFormattedDateObject($user->start_date, 'date'), + 'end_date' => Helper::getFormattedDateObject($user->end_date, 'date'), 'last_login' => Helper::getFormattedDateObject($user->last_login, 'datetime'), 'deleted_at' => ($user->deleted_at) ? Helper::getFormattedDateObject($user->deleted_at, 'datetime') : null, ]; diff --git a/app/Presenters/UserPresenter.php b/app/Presenters/UserPresenter.php index 598f8f677e..c2a003bdc1 100644 --- a/app/Presenters/UserPresenter.php +++ b/app/Presenters/UserPresenter.php @@ -302,6 +302,24 @@ class UserPresenter extends Presenter 'visible' => false, 'formatter' => 'dateDisplayFormatter', ], + [ + 'field' => 'start_date', + 'searchable' => true, + 'sortable' => true, + 'switchable' => true, + 'title' => trans('general.start_date'), + 'visible' => false, + 'formatter' => 'dateDisplayFormatter', + ], + [ + 'field' => 'end_date', + 'searchable' => true, + 'sortable' => true, + 'switchable' => true, + 'title' => trans('general.end_date'), + 'visible' => false, + 'formatter' => 'dateDisplayFormatter', + ], [ 'field' => 'last_login', 'searchable' => false, From 0817308822e773267f84f3003227ec607f30c8f3 Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 5 Oct 2022 16:58:49 -0700 Subject: [PATCH 08/13] Added start/end to edit/view screens Signed-off-by: snipe --- resources/views/users/edit.blade.php | 4 ++++ resources/views/users/view.blade.php | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/resources/views/users/edit.blade.php b/resources/views/users/edit.blade.php index ac82949586..6fde28012e 100755 --- a/resources/views/users/edit.blade.php +++ b/resources/views/users/edit.blade.php @@ -358,6 +358,10 @@ @include ('partials.forms.edit.department-select', ['translated_name' => trans('general.department'), 'fieldname' => 'department_id']) + @include ('partials.forms.edit.datepicker', ['translated_name' => trans('general.start_date'), 'fieldname' => 'start_date']) + + @include ('partials.forms.edit.datepicker', ['translated_name' => trans('general.end_date'), 'fieldname' => 'end_date']) +
diff --git a/resources/views/users/view.blade.php b/resources/views/users/view.blade.php index c257bae1ae..589c9b603b 100755 --- a/resources/views/users/view.blade.php +++ b/resources/views/users/view.blade.php @@ -343,6 +343,30 @@
+ + @if ($user->start_date) +
+
+ {{ trans('general.start_date') }} +
+
+ {{ \App\Helpers\Helper::getFormattedDateObject($user->start_date, 'date', false) }} +
+
+ @endif + + + @if ($user->end_date) +
+
+ {{ trans('general.end_date') }} +
+
+ {{ \App\Helpers\Helper::getFormattedDateObject($user->end_date, 'date', false) }} +
+
+ @endif + @if ($user->jobtitle)
From 3605aa8f5a25fba3764e7a6cf39849971f3e44d4 Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 5 Oct 2022 16:59:06 -0700 Subject: [PATCH 09/13] Added clear button to generic datepicker and made it wider Signed-off-by: snipe --- resources/views/partials/forms/edit/datepicker.blade.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/views/partials/forms/edit/datepicker.blade.php b/resources/views/partials/forms/edit/datepicker.blade.php index 74bc96d8db..eab990877d 100644 --- a/resources/views/partials/forms/edit/datepicker.blade.php +++ b/resources/views/partials/forms/edit/datepicker.blade.php @@ -1,9 +1,9 @@
{{ Form::label($fieldname, $translated_name, array('class' => 'col-md-3 control-label')) }} -
-
- +
+
+
{!! $errors->first($fieldname, '') !!} From 9d641573b58968bc9fb923530c5ef060c8cf0bda Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 5 Oct 2022 17:01:04 -0700 Subject: [PATCH 10/13] Make the APU return null instead of blank Signed-off-by: snipe --- app/Http/Transformers/UsersTransformer.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Http/Transformers/UsersTransformer.php b/app/Http/Transformers/UsersTransformer.php index bf510bab83..4d291d22d4 100644 --- a/app/Http/Transformers/UsersTransformer.php +++ b/app/Http/Transformers/UsersTransformer.php @@ -30,7 +30,7 @@ class UsersTransformer 'username' => e($user->username), 'remote' => ($user->remote == '1') ? true : false, 'locale' => ($user->locale) ? e($user->locale) : null, - 'employee_num' => e($user->employee_num), + 'employee_num' => ($user->employee_num) ? e($user->employee_num) : null, 'manager' => ($user->manager) ? [ 'id' => (int) $user->manager->id, 'name'=> e($user->manager->first_name).' '.e($user->manager->last_name), @@ -43,7 +43,7 @@ class UsersTransformer 'state' => ($user->state) ? e($user->state) : null, 'country' => ($user->country) ? e($user->country) : null, 'zip' => ($user->zip) ? e($user->zip) : null, - 'email' => e($user->email), + 'email' => ($user->email) ? e($user->email) : null, 'department' => ($user->department) ? [ 'id' => (int) $user->department->id, 'name'=> e($user->department->name), From 14b7319b63c8d0aa8e9f3952c60704a52a180bb0 Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 5 Oct 2022 17:07:07 -0700 Subject: [PATCH 11/13] Added start/end to sortable columns Signed-off-by: snipe --- app/Http/Controllers/Api/UsersController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index edfce18689..eded29f82f 100644 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -211,7 +211,7 @@ class UsersController extends Controller 'assets', 'accessories', 'consumables', 'licenses', 'groups', 'activated', 'created_at', 'two_factor_enrolled', 'two_factor_optin', 'last_login', 'assets_count', 'licenses_count', 'consumables_count', 'accessories_count', 'phone', 'address', 'city', 'state', - 'country', 'zip', 'id', 'ldap_import', 'remote', + 'country', 'zip', 'id', 'ldap_import', 'remote', 'start_date', 'end_date', ]; $sort = in_array($request->get('sort'), $allowed_columns) ? $request->get('sort') : 'first_name'; From ca937667b4437adfe73b0a4b6236944155225efd Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 5 Oct 2022 17:21:39 -0700 Subject: [PATCH 12/13] Indented divs per @uberbrady Signed-off-by: snipe --- resources/views/users/view.blade.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/resources/views/users/view.blade.php b/resources/views/users/view.blade.php index 589c9b603b..f210bb03e7 100755 --- a/resources/views/users/view.blade.php +++ b/resources/views/users/view.blade.php @@ -345,14 +345,14 @@ @if ($user->start_date) -
-
- {{ trans('general.start_date') }} +
+
+ {{ trans('general.start_date') }} +
+
+ {{ \App\Helpers\Helper::getFormattedDateObject($user->start_date, 'date', false) }} +
-
- {{ \App\Helpers\Helper::getFormattedDateObject($user->start_date, 'date', false) }} -
-
@endif From 9605dec22a3e31cfc12529f19613e425d56f43ea Mon Sep 17 00:00:00 2001 From: Brady Wetherington Date: Wed, 5 Oct 2022 17:43:59 -0700 Subject: [PATCH 13/13] Use the new scim-trace feature from our fork of laravel-scim-server lib --- composer.lock | 12 ++++++------ config/logging.php | 5 +++++ config/scim.php | 3 ++- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/composer.lock b/composer.lock index be6c124001..9de93e404d 100644 --- a/composer.lock +++ b/composer.lock @@ -78,19 +78,19 @@ "source": { "type": "git", "url": "https://github.com/grokability/laravel-scim-server.git", - "reference": "d0e3d7c0b5da2ec76283b8a2fa2e672a91596509" + "reference": "9e7a8fd51a7380bc18ca1f01256574d75a2c6b49" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/grokability/laravel-scim-server/zipball/d0e3d7c0b5da2ec76283b8a2fa2e672a91596509", - "reference": "d0e3d7c0b5da2ec76283b8a2fa2e672a91596509", + "url": "https://api.github.com/repos/grokability/laravel-scim-server/zipball/9e7a8fd51a7380bc18ca1f01256574d75a2c6b49", + "reference": "9e7a8fd51a7380bc18ca1f01256574d75a2c6b49", "shasum": "" }, "require": { "illuminate/console": "^6.0|^7.0|^8.0", "illuminate/database": "^6.0|^7.0|^8.0", "illuminate/support": "^6.0|^7.0|^8.0", - "php": "^7.0|^8.0", + "php": "^7.4|^8.0", "tmilos/scim-filter-parser": "^1.3", "tmilos/scim-schema": "^0.1.0" }, @@ -133,7 +133,7 @@ "support": { "source": "https://github.com/grokability/laravel-scim-server/tree/master" }, - "time": "2022-07-18T22:15:42+00:00" + "time": "2022-10-06T00:42:37+00:00" }, { "name": "asm89/stack-cors", @@ -13530,5 +13530,5 @@ "ext-pdo": "*" }, "platform-dev": [], - "plugin-api-version": "2.0.0" + "plugin-api-version": "2.3.0" } diff --git a/config/logging.php b/config/logging.php index 2f884d3acd..f15e490664 100644 --- a/config/logging.php +++ b/config/logging.php @@ -100,6 +100,11 @@ return [ 'emergency' => [ 'path' => storage_path('logs/laravel.log'), ], + + 'scimtrace' => [ + 'driver' => 'single', + 'path' => storage_path('logs/scim.log') + ] ], ]; diff --git a/config/scim.php b/config/scim.php index 3008e2f07e..60f196f4ef 100644 --- a/config/scim.php +++ b/config/scim.php @@ -1,5 +1,6 @@ false + "publish_routes" => false, + "trace" => env("SCIM_TRACE",false) ];