From 8650923b01662b0584bd8c9959f134a79c4033df Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Mon, 8 Jul 2024 12:55:59 -0500 Subject: [PATCH 1/6] new branch cuz test merge --- app/Models/CheckoutAcceptance.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/CheckoutAcceptance.php b/app/Models/CheckoutAcceptance.php index 9c501aaf63..b1c6c79141 100644 --- a/app/Models/CheckoutAcceptance.php +++ b/app/Models/CheckoutAcceptance.php @@ -70,7 +70,7 @@ class CheckoutAcceptance extends Model */ public function isCheckedOutTo(User $user) { - return $this->assignedTo->is($user); + return $this->assignedTo?->is($user); } /** From 33b2c7b78ab1d297d7d0cd4c7d0384392372ed64 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Tue, 9 Jul 2024 10:35:16 -0500 Subject: [PATCH 2/6] push so i can do something else --- .../Ui/AccessoryAcceptanceTest.php | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php b/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php index 83ec916cb4..aa73e9593f 100644 --- a/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php +++ b/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php @@ -3,7 +3,9 @@ namespace Tests\Feature\CheckoutAcceptances\Ui; use App\Models\Accessory; +use App\Models\Asset; use App\Models\CheckoutAcceptance; +use App\Models\User; use App\Notifications\AcceptanceAssetAcceptedNotification; use App\Notifications\AcceptanceAssetDeclinedNotification; use Notification; @@ -76,4 +78,25 @@ class AccessoryAcceptanceTest extends TestCase } ); } + + public function testUserIsNotAbleToAcceptAnAssetAssignedToADifferentUser() + { + Notification::fake(); + + $otherUser = User::factory()->create(); + + $acceptance = CheckoutAcceptance::factory() + ->pending() + ->for(Asset::factory()->laptopMbp(), 'checkoutable') + ->create(); + + $request = $this->actingAs($otherUser) + ->post(route('account.store-acceptance', $acceptance), ['asset_acceptance' => 'accepted']) + //->assertSessionHasNoErrors(); + //->dd() + ->assertSessionHasNoErrors(); + + $this->assertNotNull($acceptance->fresh()->accepted_at); + + } } From 66255291da6e3c90a5fd44265fa47c167af25e70 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Tue, 9 Jul 2024 11:13:06 -0500 Subject: [PATCH 3/6] test working --- .../CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php b/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php index aa73e9593f..2390b16808 100644 --- a/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php +++ b/tests/Feature/CheckoutAcceptances/Ui/AccessoryAcceptanceTest.php @@ -90,13 +90,10 @@ class AccessoryAcceptanceTest extends TestCase ->for(Asset::factory()->laptopMbp(), 'checkoutable') ->create(); - $request = $this->actingAs($otherUser) + $this->actingAs($otherUser) ->post(route('account.store-acceptance', $acceptance), ['asset_acceptance' => 'accepted']) - //->assertSessionHasNoErrors(); - //->dd() - ->assertSessionHasNoErrors(); - - $this->assertNotNull($acceptance->fresh()->accepted_at); + ->assertSessionHas(['error' => trans('admin/users/message.error.incorrect_user_accepted')]); + $this->assertNull($acceptance->fresh()->accepted_at); } } From 624632d0ca77599b364367b8681859deea99bd5f Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 9 Jul 2024 11:41:31 -0700 Subject: [PATCH 4/6] removed push and endpush --- resources/views/users/print.blade.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/resources/views/users/print.blade.php b/resources/views/users/print.blade.php index 5d2cf4f5f8..bdea19ab7c 100644 --- a/resources/views/users/print.blade.php +++ b/resources/views/users/print.blade.php @@ -6,6 +6,8 @@ + + {{-- stylesheets --}} @@ -386,18 +388,16 @@ -@push('css') - -@endpush -@push('js') + + -@endpush + From 6932a63217817c712b45b0cd692a67d475a44dd0 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Tue, 9 Jul 2024 16:32:44 -0500 Subject: [PATCH 5/6] make some naming a little clearer --- app/Http/Controllers/AssetModelsController.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/AssetModelsController.php b/app/Http/Controllers/AssetModelsController.php index 42802fc708..4421829f48 100755 --- a/app/Http/Controllers/AssetModelsController.php +++ b/app/Http/Controllers/AssetModelsController.php @@ -8,6 +8,7 @@ use App\Http\Requests\StoreAssetModelRequest; use App\Models\Actionlog; use App\Models\AssetModel; use App\Models\CustomField; +use App\Models\SnipeModel; use App\Models\User; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; @@ -457,7 +458,7 @@ class AssetModelsController extends Controller * @param AssetModel $model * @param array $defaultValues */ - private function assignCustomFieldsDefaultValues(AssetModel $model, array $defaultValues): bool + private function assignCustomFieldsDefaultValues(AssetModel|SnipeModel $model, array $defaultValues): bool { $data = array(); foreach ($defaultValues as $customFieldId => $defaultValue) { @@ -466,17 +467,17 @@ class AssetModelsController extends Controller $data[$customField->db_column] = $defaultValue; } - $fieldsets = $model->fieldset->validation_rules(); + $allRules = $model->fieldset->validation_rules(); $rules = array(); - foreach ($fieldsets as $fieldset => $validation){ + foreach ($allRules as $field => $validation) { // If the field is marked as required, eliminate the rule so it doesn't interfere with the default values // (we are at model level, the rule still applies when creating a new asset using this model) $index = array_search('required', $validation); if ($index !== false){ $validation[$index] = 'nullable'; } - $rules[$fieldset] = $validation; + $rules[$field] = $validation; } $validator = Validator::make($data, $rules); @@ -499,7 +500,7 @@ class AssetModelsController extends Controller * Removes all default values * */ - private function removeCustomFieldsDefaultValues(AssetModel $model) : void + private function removeCustomFieldsDefaultValues(AssetModel|SnipeModel $model): void { $model->defaultValues()->detach(); } From 71a5d076984bfd97422ef82df835534aef4f14b1 Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 10 Jul 2024 08:56:14 +0100 Subject: [PATCH 6/6] Fixes #15056 - only try to load avatars if one exists or default is set Signed-off-by: snipe --- resources/views/hardware/view.blade.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/resources/views/hardware/view.blade.php b/resources/views/hardware/view.blade.php index 179db4a0b1..f305b0e457 100755 --- a/resources/views/hardware/view.blade.php +++ b/resources/views/hardware/view.blade.php @@ -962,11 +962,13 @@ @if (($asset->assignedTo) && ($asset->deleted_at==''))
-

{{ trans('admin/hardware/form.checkedout_to') }}

+

+ {{ trans('admin/hardware/form.checkedout_to') }} +

- @if($asset->checkedOutToUser()) + @if (($asset->checkedOutToUser()) && ($asset->assignedTo->present()->gravatar())) {{ $asset->assignedTo->present()->fullName() }} - @endif + @endif

{!! $asset->assignedTo->present()->glyph() . ' ' .$asset->assignedTo->present()->nameUrl() !!}