Compare commits

...

2426 Commits

Author SHA1 Message Date
Brady Wetherington
a8231bc338 Merge branch 'develop' into v8 2025-02-18 22:40:27 +00:00
snipe
4d25e8f7f0 Merge pull request #16271 from snipe/localization/2024-02-18
Updated language strings
2025-02-18 22:26:02 +00:00
snipe
8368576dc9 Updated language strings
Signed-off-by: snipe <snipe@snipe.net>
2025-02-18 22:18:39 +00:00
snipe
071b4d1e67 Merge pull request #16245 from marcusmoore/chore/migrate-form-open-pt5
Replace Form::open and Form::close pt5
2025-02-18 21:23:15 +00:00
snipe
1fe170e6a1 Merge pull request #16040 from Godmartinz/template_validate_error
Adds a null check to label templates, adds return types for validation methods
2025-02-18 21:00:10 +00:00
snipe
612a708c8d Merge pull request #16246 from marcusmoore/chore/migrate-form-open-pt6
Replace Form::open and Form::close pt6
2025-02-18 20:43:38 +00:00
snipe
580a4c476e Merge pull request #16244 from marcusmoore/chore/migrate-form-open-pt4
Replace Form::open and Form::close pt4
2025-02-18 20:42:44 +00:00
snipe
c9de9ebbab Merge pull request #16243 from marcusmoore/chore/migrate-form-open-pt3
Replace Form::open and Form::close pt3
2025-02-18 20:41:56 +00:00
snipe
3d0770973a Merge pull request #16242 from marcusmoore/chore/migrate-form-open-pt2
Replace Form::open and Form::close pt2
2025-02-18 20:41:16 +00:00
snipe
e814cd5a9e Merge pull request #16235 from marcusmoore/chore/migrate-form-open-pt1
Replace Form::open and Form::close pt1
2025-02-18 20:23:47 +00:00
Marcus Moore
e5f426ec64 Remove unneeded multipart/form-data 2025-02-18 12:19:32 -08:00
snipe
a1b0a30351 Merge pull request #16225 from marcusmoore/chore/remove-cols-from-textarea
Removed cols property from textarea component
2025-02-18 19:56:40 +00:00
snipe
c0f0f43dd7 Merge pull request #16188 from Godmartinz/translations-for-labels-n-ldap
Adds translations to LDAP  and Label settings pages
2025-02-18 19:56:14 +00:00
snipe
57c07a3687 Merge pull request #16270 from snipe/feature/sc-28365_ldap_text_update
Updated LDAP sync text
2025-02-18 19:28:18 +00:00
snipe
6de08f46fd Few more tweaks
Signed-off-by: snipe <snipe@snipe.net>
2025-02-18 19:26:36 +00:00
snipe
3554270366 Updated LDAP sync text
Signed-off-by: snipe <snipe@snipe.net>
2025-02-18 19:25:40 +00:00
snipe
029450bcbf Merge pull request #16269 from snipe/bug/sc-28437_fix
Scope API results by location ID
2025-02-18 19:05:29 +00:00
snipe
329fbf6a7c Scope results by location ID
Signed-off-by: snipe <snipe@snipe.net>
2025-02-18 19:01:16 +00:00
snipe
b7d0fccabc Merge pull request #16268 from snipe/fixed_16259_archived_assets_in_company_scope
Fixed #16259 - mismatch in asset count if archived assets are hidden
2025-02-18 16:35:01 +00:00
snipe
48ab94c15b Fixed query duplication for AssetsForShow scope
Signed-off-by: snipe <snipe@snipe.net>
2025-02-18 16:18:12 +00:00
snipe
ac907add83 Merge pull request #16082 from marcusmoore/chore/sc-28173
Replace calls to Form::text
2025-02-18 14:58:40 +00:00
snipe
3d47a8ba50 Fixed name format tests (#16236)
Signed-off-by: snipe <snipe@snipe.net>
2025-02-18 14:52:52 +00:00
snipe
452185be45 Merge pull request #16199 from akemidx/feature/sc-28271
Adding <Last Name.First Initial> as an option for usernames
2025-02-18 14:42:54 +00:00
Brady Wetherington
14feed61d8 Merge branch 'develop' into v8 2025-02-17 16:18:02 +00:00
snipe
02a8e17704 Merge pull request #16260 from snipe/fix_for_qr_on_old_label_engine
Fix for QR code on old label engine
2025-02-17 10:45:51 +00:00
snipe
7553ec3e27 Fixed equals
Signed-off-by: snipe <snipe@snipe.net>
2025-02-17 10:44:58 +00:00
snipe
c8f82cbc2b Merge pull request #16250 from uberbrady/improve_tls_client_side_file_caching
Instead of saving TLS cache-files on save, cache them when used
2025-02-13 15:46:22 +00:00
Brady Wetherington
b7bd56daf7 Instead of saving TLS cache-files on save, cache them when used 2025-02-13 15:09:28 +00:00
snipe
393118f083 Merge pull request #16249 from snipe/flatten_api_return
Return flat JSON instead of transformed data
2025-02-13 14:28:41 +00:00
snipe
d3210c6d40 Return flat JSON instead of transformed data
Signed-off-by: snipe <snipe@snipe.net>
2025-02-13 14:16:32 +00:00
Marcus Moore
60d7232569 Remove unneeded Form::close from users index 2025-02-12 13:50:38 -08:00
Marcus Moore
2f1212fa1a Remove unneeded Form::close on view status label page 2025-02-12 13:49:37 -08:00
Marcus Moore
cc4d8f2a5b Migrate Form::close on security settings page 2025-02-12 13:47:15 -08:00
Marcus Moore
c0a3284fad Migrate Form::open and Form::close on saml settings 2025-02-12 13:46:42 -08:00
Marcus Moore
caff608e3c Migrate Form::open and Form::close on purge deleted records page 2025-02-12 13:41:44 -08:00
Marcus Moore
c48fa7c2cb Migrate Form::open and Form::close on localization page 2025-02-12 13:39:04 -08:00
Marcus Moore
14b25949b8 Migrate Form::close on ldap settings page 2025-02-12 13:36:48 -08:00
Marcus Moore
2df995c2c7 Remove unneeded Form::open on label settings page 2025-02-12 13:29:02 -08:00
Marcus Moore
ad182a96fa Migrate Form::open and Form::close on label settings 2025-02-12 13:28:40 -08:00
Marcus Moore
a728f38bd1 Migrate Form::open and Form::close on google settings page 2025-02-12 13:21:07 -08:00
Marcus Moore
894754e8dc Migrate Form::close on general settings page 2025-02-12 13:18:55 -08:00
Marcus Moore
d141675478 Migrate Form::open and Form::close on branding settings pagee 2025-02-12 13:17:59 -08:00
Marcus Moore
8bdd80e236 Migrate Form::open and Form::close on backups page 2025-02-12 13:12:45 -08:00
Marcus Moore
c422737525 Migrate Form::open and Form::close on asset tag settings page 2025-02-12 13:11:06 -08:00
Marcus Moore
fc55786ca2 Migrate Form::close on notification settings page 2025-02-12 12:50:37 -08:00
Marcus Moore
2949fdecdd Migrate Form::open and Form::close on unaccepted assets report page 2025-02-12 12:49:19 -08:00
Marcus Moore
d32163f881 Migrate Form::open and Form::close on custom report page 2025-02-12 12:43:51 -08:00
Marcus Moore
215fe501ac Migrate Form::open and Form::close on activity report page 2025-02-12 12:14:00 -08:00
Marcus Moore
ef3112e526 Add missing @csrf 2025-02-12 12:11:36 -08:00
Marcus Moore
8aa0135afa Migrate Form::open and Form::close in bulk users partial 2025-02-12 12:10:16 -08:00
snipe
ff1157a95e Merge pull request #16232 from Godmartinz/adds-expiring-notifications
Expiration notifcation switched to use Mailable
2025-02-12 20:07:24 +00:00
Godfrey M
e66b690c93 removed unnecessary base_path changes 2025-02-12 12:01:43 -08:00
Godfrey M
242fd00e8a remove commented dd 2025-02-12 11:55:28 -08:00
Godfrey M
c77a1faa69 moar unnecssary changes removed 2025-02-12 11:54:34 -08:00
Marcus Moore
540b609591 Migrate Form::open and Form::close in models bulk actions partial 2025-02-12 11:53:23 -08:00
Marcus Moore
ac5a409cdf Migrate Form::open and Form::close in locations bulk actions partial 2025-02-12 11:51:17 -08:00
Godfrey M
4cbc751dad removed unnecessary changes 2025-02-12 11:49:36 -08:00
Marcus Moore
1dc579ce71 Migrate Form::open and Form::close in asset bulk actions partial 2025-02-12 11:49:13 -08:00
Marcus Moore
37282fffff Remove unneeded Form::close on model show page 2025-02-12 11:45:09 -08:00
Marcus Moore
b3e98cb7eb Remove unneeded Form::close on model index page 2025-02-12 11:44:14 -08:00
Godfrey M
bd03d70937 adds test for expiring licenses 2025-02-12 11:43:22 -08:00
Marcus Moore
716161e626 Migrate Form::open and Form::close in upload file modal 2025-02-12 11:42:09 -08:00
Marcus Moore
93a67847ba Migrate Form::open and Form::close on asset view 2025-02-12 11:38:19 -08:00
Godfrey M
6873244e7e adds test for expiring asset notifications 2025-02-12 11:28:36 -08:00
Marcus Moore
c569a84f87 Migrate Form::open and Form::close on requested assets page 2025-02-12 10:52:32 -08:00
akemidx
1e07927e78 test created and passing 2025-02-11 19:35:55 -05:00
Marcus Moore
c4b8b85602 Migrate Form::open and Form::close on bulk audit page 2025-02-11 15:42:20 -08:00
Marcus Moore
464e4d11e9 Migrate Form::open and Form::close on quick scan checkin page 2025-02-11 14:24:38 -08:00
Marcus Moore
85e4a19f03 Migrate Form::open on asset audit page 2025-02-11 14:22:17 -08:00
Marcus Moore
6263d01c73 Migrate Form::close in previously changed views 2025-02-11 14:10:52 -08:00
Marcus Moore
967e646989 Migrate Form::open in depreciations view 2025-02-11 14:10:52 -08:00
Marcus Moore
e9d3b9dcde Migrate Form::open and Form::close in manage custom fields view 2025-02-11 14:10:52 -08:00
Marcus Moore
3065ba851e Migrate Form::open in custom fieldset view 2025-02-11 14:10:52 -08:00
Marcus Moore
80522a2505 Migrate Form::open in custom field view 2025-02-11 14:10:52 -08:00
Marcus Moore
532e6c1c1d Migrate Form::open in profile view 2025-02-11 14:10:52 -08:00
Marcus Moore
5cf314a314 Migrate Form::open in change password view 2025-02-11 14:10:52 -08:00
snipe
c08cfb9b73 Merge pull request #16226 from snipe/add_notes_to_locations_companies_etc
Fixed #16184 - added notes to locations, companies, categories, manufacturers and groups
2025-02-11 19:25:10 +00:00
snipe
61591633f8 Fixed layout sorta
Signed-off-by: snipe <snipe@snipe.net>
2025-02-11 19:23:04 +00:00
Godfrey M
9b5b58687d removed unused 2025-02-11 11:02:25 -08:00
Godfrey M
fb7bec4be4 adds expiring asset and license mail 2025-02-11 10:55:56 -08:00
snipe
9dba03646b Pointless rename
Signed-off-by: snipe <snipe@snipe.net>
2025-02-11 18:32:51 +00:00
snipe
ddd2ce07f3 Fixed branch from weird merge down
Signed-off-by: snipe <snipe@snipe.net>
2025-02-11 01:14:35 +00:00
snipe
3de5f5882c Added/updated tests
Signed-off-by: snipe <snipe@snipe.net>
2025-02-11 01:07:41 +00:00
Marcus Moore
73e010434e Remove cols property 2025-02-10 16:43:39 -08:00
snipe
a9d6a5f618 Updated note partial to use generic notes text
Signed-off-by: snipe <snipe@snipe.net>
2025-02-11 00:39:46 +00:00
snipe
ef9cc4fceb Added notes to blades
Signed-off-by: snipe <snipe@snipe.net>
2025-02-11 00:39:26 +00:00
snipe
e104decf77 Added placeholder translation array
Signed-off-by: snipe <snipe@snipe.net>
2025-02-11 00:35:03 +00:00
snipe
96e38da875 Created migration
Signed-off-by: snipe <snipe@snipe.net>
2025-02-11 00:34:50 +00:00
snipe
ff95049f7c Added notes to factories
Signed-off-by: snipe <snipe@snipe.net>
2025-02-11 00:34:30 +00:00
snipe
63cb4e70bc Added notes to presenters
Signed-off-by: snipe <snipe@snipe.net>
2025-02-11 00:34:10 +00:00
snipe
e6ae9cae6b Added notes to searchable and fillable attributes
Signed-off-by: snipe <snipe@snipe.net>
2025-02-11 00:33:51 +00:00
snipe
1f1e1401cf Added location notes to importer
Signed-off-by: snipe <snipe@snipe.net>
2025-02-11 00:32:58 +00:00
snipe
af1159658d Added notes to transformers
Signed-off-by: snipe <snipe@snipe.net>
2025-02-11 00:32:37 +00:00
snipe
4e2b22135a Added notes to UI controllers
Signed-off-by: snipe <snipe@snipe.net>
2025-02-11 00:32:07 +00:00
snipe
4ee5a4c5c3 Added notes to API controllers
Signed-off-by: snipe <snipe@snipe.net>
2025-02-11 00:31:50 +00:00
snipe
aa14cfe18d Merge pull request #16075 from marcusmoore/chore/migrate-textarea-helper
Convert Form::textarea to blade component
2025-02-11 00:14:23 +00:00
Marcus Moore
0797c4ac97 Merge branch 'develop' into chore/sc-28173
# Conflicts:
#	resources/views/settings/saml.blade.php
#	resources/views/settings/security.blade.php
#	resources/views/setup/user.blade.php
2025-02-10 15:57:41 -08:00
snipe
b4ea75f34f Merge branch 'master' into chore/migrate-textarea-helper 2025-02-10 23:47:13 +00:00
snipe
e37a990820 Merge remote-tracking branch 'origin/develop' 2025-02-10 22:42:58 +00:00
snipe
b54d68ebf1 Merge pull request #16212 from Godmartinz/ternary-checks-on-location-in-notifications
adds ternaries on check in/out hardware notifications
2025-02-10 22:28:36 +00:00
snipe
4ae2126ded Merge pull request #16213 from marcusmoore/chore/migrate-checkbox-helpers-p1
Replace calls to Form::checkbox pt1
2025-02-10 22:27:19 +00:00
snipe
c420670ebb Small fixes to accessories files handling
Signed-off-by: snipe <snipe@snipe.net>
2025-02-10 22:26:00 +00:00
Brady Wetherington
dae1f43359 Merge branch 'develop' into v8 2025-02-10 15:14:55 +00:00
Marcus Moore
38df5e8b07 Replace more Form::checkboxes 2025-02-06 15:52:23 -08:00
akemidx
d1cd670af5 oop forgot the user form bit 2025-02-06 18:05:22 -05:00
Marcus Moore
04e4b6c181 Replace Form::checkbox 2025-02-06 14:16:18 -08:00
Marcus Moore
9559c5a025 Replace Form::checkbox and inline label 2025-02-06 14:08:13 -08:00
Marcus Moore
42fa2e12db Replace Form::checkbox 2025-02-06 13:55:33 -08:00
Godfrey M
f41583fd59 adds ternary checks on locations before pulling names in notifications 2025-02-06 11:34:14 -08:00
snipe
b48704b3af Merge pull request #16209 from uberbrady/eliminate_preg_split_deprecation_warnings
Fixed #16208 - don't call preg_split() with a null
2025-02-06 13:30:53 +00:00
Brady Wetherington
de3ebfecfe Ensure we don't call preg_split() with a null as the second parameter 2025-02-06 13:24:39 +00:00
snipe
29311b1b5b Merge remote-tracking branch 'origin/develop' 2025-02-06 10:34:58 +00:00
snipe
b131227b71 Merge pull request #16207 from snipe/security/upgrade_papaparse
Upgraded papaparse to 5.5.1
2025-02-06 10:34:29 +00:00
snipe
ec45833cd8 Upgraded papaparse to 5.5.1
Signed-off-by: snipe <snipe@snipe.net>
2025-02-06 10:22:17 +00:00
snipe
4c2905b1f0 Merge pull request #16176 from marcusmoore/chore/migrate-form-radio
Replaced some calls to the Form::radio helper
2025-02-06 10:19:51 +00:00
snipe
6e51be6c57 Merge pull request #16178 from marcusmoore/chore/migrate-form-radio-helpers-pt1
Replaced calls to Form::radio helper on group create and edit pages
2025-02-06 10:19:35 +00:00
snipe
b195168c83 Merge pull request #16167 from Godmartinz/asset_controller_qr_check_fix
Adds qr code type check in getQRCode method
2025-02-06 10:18:34 +00:00
snipe
a722eca6aa Merge pull request #16179 from marcusmoore/chore/migrate-form-radio-helpers-bulk-hardware
Replaced calls to Form::radio helper on bulk hardware edit page
2025-02-06 10:18:16 +00:00
snipe
1f6428ee1c Merge pull request #16180 from marcusmoore/chore/migrate-form-radio-helpers-bulk-models
Replaced calls to Form::radio helper on bulk asset model edit page
2025-02-06 10:18:05 +00:00
snipe
ab10fb466c Merge pull request #16193 from marcusmoore/chore/migrate-label-helpers-pt3
Replace calls to Form::label pt3
2025-02-06 10:17:26 +00:00
snipe
dcabf90409 Merge pull request #16192 from marcusmoore/chore/migrate-label-helpers-pt2
Replace calls to Form::label pt2
2025-02-06 10:17:11 +00:00
snipe
27752f595c Merge pull request #16194 from marcusmoore/chore/migrate-label-helpers-pt4
Replace calls to Form::label pt4
2025-02-06 10:16:33 +00:00
snipe
c17598d4b4 Merge pull request #16195 from marcusmoore/chore/migrate-label-helpers-pt5
Replace calls to Form::label pt5
2025-02-06 10:16:17 +00:00
snipe
d74d9900da Merge pull request #16190 from marcusmoore/chore/migrate-label-helpers-pt1
Replace calls to Form::label pt1
2025-02-06 10:15:43 +00:00
snipe
5505c9ab67 Merge pull request #16196 from marcusmoore/chore/migrate-label-helpers-pt6
Replace calls to Form::label pt6
2025-02-06 10:14:55 +00:00
snipe
8d2ffea7df Merge pull request #16197 from marcusmoore/chore/migrate-label-helpers-pt7
Replace calls to Form::label in QuickStart
2025-02-06 10:06:41 +00:00
snipe
1233c939f8 Merge branch 'develop' into chore/migrate-label-helpers-pt7 2025-02-06 10:03:42 +00:00
snipe
46dd83c34e Merge pull request #16168 from Godmartinz/print_all_assigned_location_null_check
Added ternary check that asset has `asset status` before checking archived
2025-02-06 10:01:10 +00:00
snipe
639aa85353 Merge pull request #16198 from marcusmoore/chore/migrate-email-helpers
Replace call to Form::email
2025-02-06 09:57:53 +00:00
akemidx
008b6f1db2 lastname.first initial 2025-02-05 20:11:33 -05:00
Marcus Moore
f46ad4811e Migrate form email helper on user setup page 2025-02-05 16:44:09 -08:00
Marcus Moore
b39b24e6b9 Migrate form labels on user setup 2025-02-05 15:01:51 -08:00
Marcus Moore
7f0133a4d6 Migrate form labels on create supplier page 2025-02-05 14:42:07 -08:00
Marcus Moore
85bc8bc8f0 Migrate form label on create status label page 2025-02-05 14:40:20 -08:00
Marcus Moore
32e1d4b2ef Migrate form labels on security settings page 2025-02-05 14:39:16 -08:00
Marcus Moore
f8d5af836f Migrate form labels on saml settings page 2025-02-05 14:35:53 -08:00
Marcus Moore
19ceb3f5b7 Migrate form label on purge page 2025-02-05 14:29:49 -08:00
Marcus Moore
f346c55cf1 Migrate form labels on localization settings page 2025-02-05 14:29:49 -08:00
Marcus Moore
e797705dad Migrate form labels on google settings page 2025-02-05 14:29:49 -08:00
Marcus Moore
a331e14ef2 Migrate form labels on general settings page 2025-02-05 14:19:34 -08:00
Marcus Moore
d6b4c27302 Migrate form label on branding settings page 2025-02-05 14:14:50 -08:00
Marcus Moore
f8d7291923 Migrate form labels on asset tag settings page 2025-02-05 14:11:36 -08:00
Marcus Moore
b59674ab77 Migrate form labels on settings alert page 2025-02-05 13:48:50 -08:00
Marcus Moore
0620b8b163 Migrate form label in checkout select partial 2025-02-05 13:44:00 -08:00
Marcus Moore
f639d82693 Migrate form label in user select partial 2025-02-05 13:40:27 -08:00
Marcus Moore
13d2d41f0c Migrate form label in supplier select partial 2025-02-05 13:39:03 -08:00
Marcus Moore
015cd44136 Migrate form label in status select partial 2025-02-05 13:34:07 -08:00
Marcus Moore
4834f60a44 Migrate form label in phone input partial 2025-02-05 13:32:06 -08:00
Marcus Moore
3327e1d8f2 Migrate form label in asset model select partial 2025-02-05 13:30:14 -08:00
Marcus Moore
40e002911c Migrate form label in manufacturer select partial 2025-02-05 13:29:06 -08:00
Marcus Moore
03bcc3b73f Migrate form label in location select partial 2025-02-05 13:27:29 -08:00
Marcus Moore
f963df0658 Migrate form label in location profile select partial 2025-02-05 13:26:08 -08:00
Marcus Moore
0aa77d281f Replace calls to Form::label in license-select partial 2025-02-05 13:24:02 -08:00
Marcus Moore
0988255693 Replace calls to Form::label in (unused?) kit select 2025-02-05 13:23:10 -08:00
Marcus Moore
fb9e7cf5e1 Migrate form label in fax input partial 2025-02-05 13:19:22 -08:00
Marcus Moore
ecc1bd69b9 Migrate form label in department select partial 2025-02-05 13:19:16 -08:00
Marcus Moore
830f095a6e Migrate form label in datepicker partial 2025-02-05 13:16:28 -08:00
Marcus Moore
288f7e4e93 Migrate form label on consumable select 2025-02-05 13:12:52 -08:00
Marcus Moore
a205ae12a4 Migrate form label on (unsed?) company select partial 2025-02-05 13:11:49 -08:00
Marcus Moore
1866426f11 Migrate form label in category select partial 2025-02-05 13:02:36 -08:00
Marcus Moore
e4ab6c0c24 Migrate form label on asset select partial 2025-02-05 12:59:00 -08:00
Marcus Moore
189c148761 Migrate labels on address partial 2025-02-05 12:47:06 -08:00
Marcus Moore
8b7c1a195c Migrate label on accessory select partial 2025-02-05 12:41:35 -08:00
Marcus Moore
d77547aecf Migrate labels on slack component 2025-02-05 12:40:00 -08:00
Marcus Moore
478a5c0e1a Migrate labels on bulk audit pag 2025-02-05 12:12:43 -08:00
Marcus Moore
5c6757ecf6 Migrate labels on quick checkin page 2025-02-05 12:07:17 -08:00
Godfrey M
f2981cf12b adds translations to label settings 2025-02-05 10:55:05 -08:00
Godfrey M
c3310a0772 adds translations to LDAP settings page 2025-02-05 10:38:16 -08:00
Marcus Moore
fe485acd4a Swap Form::radio in bulk model edit view 2025-02-04 16:18:49 -08:00
Marcus Moore
fbe19738cb Swap Form::radio in bulk hardware edit view 2025-02-04 15:49:46 -08:00
Marcus Moore
d29a62a335 Simplify @checked 2025-02-04 13:50:08 -08:00
snipe
6cc2013102 Merge remote-tracking branch 'origin/develop' 2025-02-04 21:39:27 +00:00
snipe
39ce7b75ca Merge pull request #16175 from Godmartinz/channel-not-found-warning-added 2025-02-04 21:38:15 +00:00
Marcus Moore
f3959323ff Add required attribute to name field 2025-02-04 13:33:16 -08:00
Marcus Moore
0d62ab2ad4 Fix call to @checked 2025-02-04 13:31:28 -08:00
Godfrey M
cbf9239d86 adds channel not found warning 2025-02-04 11:21:56 -08:00
Marcus Moore
295875c45e Fix and replace remaining radios on bulk user edit page 2025-02-04 11:02:40 -08:00
snipe
5e363f7dd4 Merge pull request #16166 from Godmartinz/rollbar_none-qr-code 2025-02-04 16:16:00 +00:00
Godfrey M
6bb0927f26 remove unrelated change 2025-02-03 12:30:21 -08:00
Godfrey M
24bb679305 adds check that asset has asset status before checking archived 2025-02-03 12:24:22 -08:00
Godfrey M
ddc22b4d6b adds a check to see that qr code type is not none 2025-02-03 10:38:49 -08:00
Godfrey M
9a75131a98 removed old label artifact 2025-02-03 10:18:13 -08:00
Marcus Moore
26b4063435 Convert section items 2025-01-30 16:07:46 -08:00
Marcus Moore
8dd432c3a2 Convert section headings 2025-01-30 15:56:08 -08:00
Marcus Moore
0e390f1a9b Temporarily order properties 2025-01-30 15:54:27 -08:00
Marcus Moore
6fb83d66a2 Revert "Re-order parameters"
This reverts commit bf96688aef.
2025-01-30 15:46:22 -08:00
Marcus Moore
bf96688aef Re-order parameters 2025-01-30 15:37:05 -08:00
Marcus Moore
eb4aeb47c1 Replace Form::radio in top section of group permissions page 2025-01-30 15:36:38 -08:00
snipe
d906f3cf62 Merge pull request #16148 from spencerrlongg/bug/sc-27619 2025-01-29 21:05:08 +00:00
spencerrlongg
0defed9abe add nullsafe 2025-01-29 11:27:02 -06:00
Marcus Moore
ac925af3d0 Replace a few radio inputs on bulk user edit page 2025-01-27 13:50:22 -08:00
Marcus Moore
4f08b2360c Migrate radios on custom report page 2025-01-27 13:36:59 -08:00
snipe
fd60ce1198 Merge pull request #16140 from marcusmoore/chore/sc-28233 2025-01-27 19:28:41 +00:00
Marcus Moore
00cdb13803 Convert remaining Form:hidden in labels view 2025-01-27 11:23:01 -08:00
Marcus Moore
ef6d747b37 Convert some Form:hidden in labels view 2025-01-27 11:15:09 -08:00
Marcus Moore
e26abb8684 Replace Form::hidden with @csrf 2025-01-27 11:07:19 -08:00
Marcus Moore
82801242d3 Merge branch 'develop' into chore/sc-28173
# Conflicts:
#	resources/views/settings/alerts.blade.php
2025-01-22 14:54:53 -08:00
snipe
e53ed2319c Merge pull request #16118 from marcusmoore/fixes/undefined-key-in-asset-observer 2025-01-22 22:30:55 +00:00
Marcus Moore
8f512e5941 Replace isset with the more appropriate array_key_exists 2025-01-22 14:28:35 -08:00
Marcus Moore
8a1b6b0684 Add isset check 2025-01-22 14:15:35 -08:00
snipe
5ac6caf257 Merge remote-tracking branch 'origin/develop' 2025-01-22 21:49:55 +00:00
snipe
36f460d32b Default to localStorage for bootstap table cookies
Signed-off-by: snipe <snipe@snipe.net>
2025-01-22 21:48:03 +00:00
snipe
802fcbafa0 Merge pull request #16116 from marcusmoore/bug/sc-20259 2025-01-22 18:50:12 +00:00
Marcus Moore
1098b8cd9d Avoid trying to divide by zero 2025-01-22 10:21:30 -08:00
Marcus Moore
da8999f59a Add failing test 2025-01-22 10:21:18 -08:00
snipe
bebc1f4d0d Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	config/version.php
2025-01-22 17:31:17 +00:00
snipe
1212267da3 Bumped version
Signed-off-by: snipe <snipe@snipe.net>
2025-01-22 17:30:41 +00:00
snipe
d696ed8a5a Merge pull request #16107 from marcusmoore/chore/migrate-password-helper 2025-01-22 17:28:23 +00:00
Marcus Moore
c3d17c5727 Remove value for readonly 2025-01-22 09:27:40 -08:00
snipe
cb25d0f2f3 Merge pull request #16115 from snipe/localization/2025-01-22 2025-01-22 17:21:54 +00:00
snipe
be535671bc Updated language files
Signed-off-by: snipe <snipe@snipe.net>
2025-01-22 17:09:41 +00:00
snipe
63838f6e74 Merge pull request #16108 from marcusmoore/chore/migrate-form-submit-helper 2025-01-22 13:16:24 +00:00
Marcus Moore
5ddf0dd789 Migrate form submit helper 2025-01-21 16:36:22 -08:00
Marcus Moore
b003890dd2 Migrate password helpers 2025-01-21 16:14:20 -08:00
snipe
8db8d4beba Merge pull request #16105 from snipe/use_url_fragment_for_file_uploads 2025-01-21 18:10:10 +00:00
snipe
d5309c7d94 Added fragment to uploads for redirect
Signed-off-by: snipe <snipe@snipe.net>
2025-01-21 18:06:00 +00:00
snipe
fb857ccf56 Merge remote-tracking branch 'origin/develop' 2025-01-20 21:07:04 +00:00
snipe
2668960bb9 Merge pull request #16102 from snipe/added_serial_search_to_activity_report 2025-01-20 21:06:23 +00:00
snipe
8e4878fac0 Added serial as relation search
Signed-off-by: snipe <snipe@snipe.net>
2025-01-20 21:00:01 +00:00
snipe
d4ef0f8aa8 Merge remote-tracking branch 'origin/develop' 2025-01-20 20:26:33 +00:00
snipe
752d89d177 Merge pull request #16101 from snipe/standarize_modelfile_api 2025-01-20 20:23:50 +00:00
snipe
0d7304eb8b Use transformer for model files
Signed-off-by: snipe <snipe@snipe.net>
2025-01-20 20:20:35 +00:00
snipe
48ff7cdbe8 Prod assets
Signed-off-by: snipe <snipe@snipe.net>
2025-01-20 17:00:02 +00:00
snipe
ca446ad7df Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	public/css/dist/all.css
#	public/css/dist/bootstrap-table.css
#	public/js/dist/bootstrap-table.js
#	public/mix-manifest.json
2025-01-20 16:59:55 +00:00
snipe
5afcd8ddb3 Merge pull request #16099 from snipe/add_id_to_locations_importer
Fixed #16097 - added location ID to location importer
2025-01-20 16:58:24 +00:00
snipe
5273408631 Check for matching ID
Signed-off-by: snipe <snipe@snipe.net>
2025-01-20 16:53:48 +00:00
snipe
713c9fdd6f Derp
Signed-off-by: snipe <snipe@snipe.net>
2025-01-20 16:46:22 +00:00
snipe
0a5c41ce23 Log error
Signed-off-by: snipe <snipe@snipe.net>
2025-01-20 16:42:53 +00:00
snipe
48a916ab77 Check that the ID has a value
Signed-off-by: snipe <snipe@snipe.net>
2025-01-20 16:38:31 +00:00
snipe
67ab602e3b Merge pull request #16090 from snipe/fixes/s3_support_for_eulas
Fixed #16000 - add S3 support for eula PDF downloads
2025-01-20 16:26:11 +00:00
snipe
801328ec42 Fixed #16097 - allow location update by ID in importer
Signed-off-by: snipe <snipe@snipe.net>
2025-01-20 16:23:13 +00:00
snipe
4fe83467ee Removed log error
Signed-off-by: snipe <snipe@snipe.net>
2025-01-20 16:20:31 +00:00
Brady Wetherington
dd34f07989 Fix custom translator for new Laravel 11 syntax 2025-01-20 15:24:06 +00:00
snipe
27a7a89990 Updated bootstrap tables to 1.24.0
Signed-off-by: snipe <snipe@snipe.net>
2025-01-20 15:06:00 +00:00
snipe
5dafa3c5c9 Merge remote-tracking branch 'origin/develop' 2025-01-20 15:00:01 +00:00
Brady Wetherington
6b242f47e4 Initial work at putting together a v8 branch 2025-01-20 14:54:28 +00:00
snipe
446c7fb483 Merge pull request #16096 from uberbrady/detect_csv_encodings_v2 2025-01-20 14:42:07 +00:00
Brady Wetherington
17c9c93456 Made composer changes for v8 2025-01-20 14:04:57 +00:00
Brady Wetherington
bbb2af7f53 remove log messages 2025-01-20 13:52:26 +00:00
Brady Wetherington
d65206c7fe Move tests to UI-side 2025-01-20 13:49:42 +00:00
snipe
954ffbfcaf Merge remote-tracking branch 'origin/develop' 2025-01-17 19:11:18 +00:00
snipe
327491c3a4 Merge pull request #16091 from snipe/hide_password_reset_if_ldap 2025-01-17 19:09:23 +00:00
snipe
02eeb7f916 Added extrab option in bulk edit
Signed-off-by: snipe <snipe@snipe.net>
2025-01-17 19:04:23 +00:00
snipe
e9ad43afbe Better hide reset password functionality for LDAP users
Signed-off-by: snipe <snipe@snipe.net>
2025-01-17 18:51:08 +00:00
snipe
434068a2ed Fixes #16000 - add S3 support for eula PDF downloads
Signed-off-by: snipe <snipe@snipe.net>
2025-01-17 17:49:19 +00:00
snipe
7f5ea30904 Prod assets
Signed-off-by: snipe <snipe@snipe.net>
2025-01-17 17:09:00 +00:00
snipe
53b6ccbac0 Merge remote-tracking branch 'origin/develop' 2025-01-17 17:07:44 +00:00
snipe
7e65d68392 Merge pull request #16089 from snipe/fixes/15017_card_view
Fixes #15017 - card view for mobile
2025-01-17 17:04:04 +00:00
snipe
b3d35beeb9 Fixes #15017 - card view for mobile
Signed-off-by: snipe <snipe@snipe.net>
2025-01-17 16:58:30 +00:00
snipe
eaa0e9d1fa Bumped hash
Signed-off-by: snipe <snipe@snipe.net>
2025-01-17 16:38:46 +00:00
snipe
fed7c2dc16 Bumped hash
Signed-off-by: snipe <snipe@snipe.net>
2025-01-17 16:38:04 +00:00
snipe
79951c3f17 Set support footer to on in reset demo script
Signed-off-by: snipe <snipe@snipe.net>
2025-01-17 16:37:00 +00:00
snipe
221ffb446c Fixed #15946 - added comtent type to webhook test
Signed-off-by: snipe <snipe@snipe.net>
2025-01-17 16:36:43 +00:00
Godfrey M
0eb34cb979 adds period to translation 2025-01-16 13:24:32 -08:00
Godfrey M
79a4c83879 add spaces 2025-01-16 13:23:16 -08:00
snipe
57f80290a1 Merge pull request #16081 from marcusmoore/fixes/zerofill-count-on-setup 2025-01-16 21:22:02 +00:00
Marcus Moore
4b2ede7a71 Use 0 for zerofill_count if nothing provided 2025-01-16 12:20:14 -08:00
snipe
5e465fa417 Merge remote-tracking branch 'origin/master' into develop 2025-01-16 19:06:02 +00:00
snipe
de5d66f5d2 Comment out ad-hoc note button for now
Signed-off-by: snipe <snipe@snipe.net>
2025-01-16 19:05:52 +00:00
Brady Wetherington
a50c8c6269 Automatically detect character encoding of CSV files when processsing them
to handle non-UTF-8 file types. Added a new test case and enhanced the test
rigs to be able to write non-UTF-8 files.

Final cleanup
2025-01-16 17:03:37 +00:00
Marcus Moore
cb56f89954 Merge branch 'develop' into chore/sc-28173
# Conflicts:
#	resources/views/settings/alerts.blade.php
2025-01-15 16:54:10 -08:00
Marcus Moore
96379d0a62 Use provided zerofill_count 2025-01-15 16:39:50 -08:00
Marcus Moore
68988524d6 Replace Form::text in certain views 2025-01-15 16:31:16 -08:00
Marcus Moore
c278900581 Replace Form::text in certain views 2025-01-15 15:58:33 -08:00
snipe
bbc9ed5778 Fixed audit date default on bulk audit
Signed-off-by: snipe <snipe@snipe.net>
2025-01-15 22:28:50 +00:00
snipe
1d0c156d2e Increased due for checkin warning
Signed-off-by: snipe <snipe@snipe.net>
2025-01-15 22:12:18 +00:00
snipe
7de5e2e7ef One more audot field increase
Signed-off-by: snipe <snipe@snipe.net>
2025-01-15 22:11:22 +00:00
snipe
8d935b34eb Fixed audit interval input width
Signed-off-by: snipe <snipe@snipe.net>
2025-01-15 22:07:53 +00:00
snipe
9830959f11 Fixed input width on audit interval
Signed-off-by: snipe <snipe@snipe.net>
2025-01-15 22:07:15 +00:00
Marcus Moore
8e790fdc47 Replace Form::text in certain views 2025-01-15 13:37:00 -08:00
Marcus Moore
0ef20c524f Replace Form::text in certain views 2025-01-15 13:01:32 -08:00
Marcus Moore
5ccaf2c23e Replace Form::text in certain views 2025-01-15 12:23:43 -08:00
Marcus Moore
bec9511df1 Add more spacing for input values to be displayed 2025-01-15 12:10:05 -08:00
Marcus Moore
017948c3bb Replace Form::text in certain views 2025-01-15 12:07:33 -08:00
Marcus Moore
1cb72e3e9c Replace Form::text in certain views 2025-01-15 11:53:22 -08:00
Marcus Moore
e45f563b50 Convert Form::textareas to blade component 2025-01-14 13:16:31 -08:00
Godfrey M
69d255f584 adds validation rules for label names 2025-01-14 12:07:59 -08:00
Godfrey Martinez
dd08642a7c Merge pull request #25 from Godmartinz/template_validate_error_p2
remove try catch, add validation rules for label template
2025-01-14 09:52:09 -08:00
Godfrey M
3ac0877418 remove try/catch, add rules for template 2025-01-14 09:50:43 -08:00
snipe
37b39956b5 Merge pull request #16071 from snipe/bug/sc-28149 2025-01-14 14:35:24 +00:00
snipe
9a4fd81c70 Use correct icon for ad-hoc notes on assets
Signed-off-by: snipe <snipe@snipe.net>
2025-01-14 14:34:17 +00:00
snipe
0bb2e98af3 Built assets
Signed-off-by: snipe <snipe@snipe.net>
2025-01-14 12:33:59 +00:00
snipe
1c8d94c953 Merge pull request #15525 from akemidx/updated_ad_hoc_notes 2025-01-14 11:33:21 +00:00
Marcus Moore
9573428201 Introduce textarea component 2025-01-13 16:34:12 -08:00
snipe
ca11efd3ee Merge pull request #16036 from Godmartinz/unaccepted_assets_reports_memory_fix 2025-01-13 22:23:30 +00:00
snipe
4a6a94a50e Merge pull request #16010 from AnouarTouati/dev-container-fixes 2025-01-13 22:23:13 +00:00
snipe
2d65b38155 Merge pull request #16011 from AnouarTouati/dev-docker-improv 2025-01-13 21:00:04 +00:00
snipe
587449ef97 Merge pull request #15981 from akemidx/bug/sc-27551 2025-01-13 17:35:58 +00:00
snipe
06ffac9d7d Merge pull request #16046 from uberbrady/ldap_asset_location_switch_fix 2025-01-13 17:33:13 +00:00
snipe
e32ed03f66 Merge pull request #16061 from snipe/moved_keywords_on_admin_settings 2025-01-13 17:10:01 +00:00
snipe
a7543b407f Added a few more words
Signed-off-by: snipe <snipe@snipe.net>
2025-01-13 17:07:22 +00:00
snipe
98b1ba1e39 Moved keywords in lang file
Signed-off-by: snipe <snipe@snipe.net>
2025-01-13 17:04:48 +00:00
snipe
e03ed7567a Merge pull request #15747 from NebelKreis/feature/custom-data-options-for-2d-barcode 2025-01-13 15:20:56 +00:00
Nebel
9f0581275b Merge branch 'develop' into feature/custom-data-options-for-2d-barcode 2025-01-13 15:49:32 +01:00
snipe
3f5c166417 Merge branch 'develop' of https://github.com/snipe/snipe-it into develop 2025-01-13 13:59:41 +00:00
snipe
cf091377b6 Add @brlin-tw as a contributor 2025-01-13 13:59:34 +00:00
snipe
0cc7a7014f Merge pull request #16053 from brlin-tw/patch-1
Fixed #16054: fix incorrect compose service name in the APP_KEY generation command of the Docker env file
2025-01-13 13:59:05 +00:00
snipe
4790ad53e3 Updated font-awesome to 6.7.2
Signed-off-by: snipe <snipe@snipe.net>
2025-01-13 13:57:45 +00:00
snipe
62dc075834 Add @aHVzY2g as a contributor 2025-01-13 13:55:28 +00:00
snipe
41da04cd22 Merge pull request #16018 from aHVzY2g/patch-3 2025-01-13 13:55:04 +00:00
Marlon Spangenberg
0c4fc56b80 increased label/field size to 2.5, reduced supported fields to 3 2025-01-13 12:20:56 +01:00
Marlon Spangenberg
907f0553d4 moved label value into the same line, changed label font to freemono 2025-01-13 12:14:30 +01:00
snipe
224f04db6c Merge pull request #16050 from Godmartinz/inactive-slack-hook
Adds try/catch around notification failing with an inactive webhook for better user experience
2025-01-10 11:23:41 +00:00
snipe
f0bcf78941 Merge pull request #16051 from marcusmoore/testing/checkoutable-acceptance-factory-fix
Update related asset when checkout acceptance created via factory
2025-01-10 11:22:50 +00:00
林博仁 Buo-ren Lin
c08a4a2b0a Fixed #16054: fix incorrect compose service name in the APP_KEY generation command of the Docker env file
This resolves the following error:

```
$ docker compose run --rm snipe-it php artisan key:generate --show
no such service: snipe-it
```

and is also how it is done in the documentation.

Fixes #16054.

Refer-to: APP_KEY | Docker | Snipe-IT documentation <https://snipe-it.readme.io/docs/docker#app_key>
Signed-off-by: Buo-ren Lin (OSSII) <buoren.lin@ossii.com.tw>
2025-01-10 11:29:49 +08:00
Marcus Moore
8597984787 Update asset's assigned_to and assigned_type after creating 2025-01-09 15:09:57 -08:00
Godfrey M
001ccf1ce9 adds translation string instead of hardcoded message 2025-01-09 14:47:07 -08:00
Godfrey M
082a974ee3 changed from redirect with error to with warning 2025-01-09 14:26:54 -08:00
Godfrey M
152c23b8f3 changed log from warning to error 2025-01-09 12:55:25 -08:00
Godfrey M
b635822a85 add try/catch around notification failing for inactive slack hooks 2025-01-09 12:51:54 -08:00
snipe
ec85e4b5b0 Upgrade less from 4.2.0 to 4.2.1 #15996
Signed-off-by: snipe <snipe@snipe.net>
2025-01-09 20:42:04 +00:00
snipe
1acb7e0fe4 Merge branch 'develop' of https://github.com/snipe/snipe-it into develop 2025-01-09 20:38:47 +00:00
snipe
5914004a57 Add @AnouarTouati as a contributor 2025-01-09 16:13:05 +00:00
snipe
c5afc66d46 Merge pull request #16009 from AnouarTouati/prod-docker-fixes 2025-01-09 16:12:37 +00:00
snipe
bc69660247 Merge pull request #16049 from snipe/localization/update_strings-2025-01-09 2025-01-09 16:02:03 +00:00
snipe
71c7c64fde Updated language strings
Signed-off-by: snipe <snipe@snipe.net>
2025-01-09 15:54:51 +00:00
snipe
c284ac5287 Merge pull request #16047 from snipe/bug/sc-28054 2025-01-09 15:19:13 +00:00
snipe
639afe5b9b Check for blank OR null on formatter
Signed-off-by: snipe <snipe@snipe.net>
2025-01-09 15:11:22 +00:00
Brady Wetherington
049b9c542b Conditionally update assets when user's location moves via LDAP 2025-01-09 13:43:59 +00:00
Godfrey M
0118504cd3 adds redirect to render and save if template is null 2025-01-08 15:32:23 -08:00
Godfrey M
f4e69679ca add a try catch around template validation 2025-01-08 12:13:31 -08:00
Godfrey M
ce7a8ad808 add a space 2025-01-08 09:48:45 -08:00
Godfrey M
c17c011488 checks if template is null, adds return types for validation methods 2025-01-08 09:47:20 -08:00
Godfrey M
92762896ef moar removal 2025-01-07 15:10:46 -08:00
Godfrey M
c699baf519 removed commented out code, and unrelated crap 2025-01-07 15:10:00 -08:00
Godfrey M
97b765b5cc improved reports query, could be further optimized 2025-01-07 15:06:09 -08:00
snipe
40b41e646d Merge pull request #16033 from Godmartinz/barcode-fix 2025-01-07 19:59:30 +00:00
snipe
63853db450 Merge pull request #16035 from marcusmoore/fixes/unaccepted-assets-reminder 2025-01-07 19:58:23 +00:00
Marcus Moore
48dd3252cb Fix parameter order 2025-01-07 11:47:16 -08:00
snipe
ee6f60e63c Merge pull request #16034 from Godmartinz/fix-locale-check 2025-01-07 19:00:32 +00:00
Godfrey M
f6abf90ba0 fix locale check 2025-01-07 10:51:48 -08:00
Godfrey M
83ee0e0fb6 untangled code visibility from each label engine 2025-01-07 10:37:59 -08:00
Godfrey M
94f44d1b77 fix label type values in db and defaults. update help text 2025-01-07 10:00:52 -08:00
Godfrey M
e12c7473f8 tinkering with the polymorphic eager load 2025-01-07 09:08:36 -08:00
snipe
407d69b370 Merge pull request #16031 from snipe/make_backups_more_configurable 2025-01-07 11:25:17 +00:00
snipe
774e795d97 Pull backup:clean settings into config
Signed-off-by: snipe <snipe@snipe.net>
2025-01-07 11:17:43 +00:00
snipe
f698f74d3e Merge pull request #16028 from marcusmoore/fixes/report-template-column
Fixed migration causing issues with mariadb
2025-01-06 22:58:30 +00:00
Marcus Moore
80f9159f4d Change options to text type 2025-01-06 14:29:18 -08:00
Godfrey M
0ec25d55a0 Merge branch 'develop' into unaccepted_assets_reports_memory_fix 2025-01-06 12:28:17 -08:00
Godfrey M
bb03e00279 fix deprecation on asset obs get unaccept report to populate 2025-01-06 11:26:45 -08:00
snipe
4d3db2ab44 Merge pull request #15919 from Godmartinz/table_dropdownmenu-fix
Removed the `table-responsive` div from several index blades
2025-01-06 18:11:19 +00:00
snipe
c3d52af546 Merge pull request #16024 from snipe/fixes/#15977
Fixed  #15977 - Set order by on companies
2025-01-06 16:12:42 +00:00
snipe
9672a13402 Set order by on companies
Signed-off-by: snipe <snipe@snipe.net>
2025-01-06 16:11:18 +00:00
snipe
9564f7fdb8 Updated dev assets
Signed-off-by: snipe <snipe@snipe.net>
2025-01-06 12:46:17 +00:00
aHVzY2g
eba1f03363 Added: TZe_24mm_D.php modified TZe_24mm_A that includes 1D code
New label format for TZe_24mm that includes all fields of TZe_24mm_A with the addition of the 1D code at the bottom of the label.
2025-01-03 11:10:44 +01:00
snipe
c7ca4d061f Merge pull request #16013 from ubc-cpsc/bugfix/CVE-2024-56521-tcpdf
Fixes tecnickcom/tcpdf security CVEs
2024-12-30 23:22:32 +00:00
Joël Pittet
115f08ee49 Fixes tecnickcom/tcpdf security CVES: CVE-2024-56522, CVE-2024-56527, CVE-2024-56519, CVE-2024-56521 2024-12-30 13:59:03 -08:00
Anouar Touati
e33c680679 Improvement: Change the logging channel to storage/logs/laravel.log file in dev container 2024-12-29 11:13:47 -05:00
Anouar Touati
1e8ec783b4 following docs for prod docker without specifying APP_VERSION will now get latest version as doc says 2024-12-29 11:05:02 -05:00
Anouar Touati
a6ed958687 Fixed: dev dependencies are not installed in dev container 2024-12-29 11:02:09 -05:00
Anouar Touati
4354f50168 Fixed: Debug mode is not enabled in dev container 2024-12-29 11:02:09 -05:00
snipe
8fc1227974 Merge pull request #16003 from snipe/asset_maintenance_api_fix
Check for valid asset before accessing properties
2024-12-26 10:31:47 +00:00
snipe
d410f168bd Removed extra checks, since we already check higher up
Signed-off-by: snipe <snipe@snipe.net>
2024-12-26 10:28:27 +00:00
snipe
b38f9ad33c Updated return types
Signed-off-by: snipe <snipe@snipe.net>
2024-12-26 10:18:00 +00:00
snipe
f8311815ee Check for valid asset before accessing properties
Signed-off-by: snipe <snipe@snipe.net>
2024-12-26 10:17:45 +00:00
snipe
3edb501973 Fixed typo sanitze to sanitize
Signed-off-by: snipe <snipe@snipe.net>
2024-12-25 20:45:19 +00:00
snipe
49918d3302 Merge pull request #15992 from marcusmoore/fixes/reset-demo-command
Fixed reset demo command
2024-12-19 23:24:37 +00:00
Marcus Moore
876ab44a16 Update settings property keys 2024-12-19 15:18:27 -08:00
snipe
15296d2b1c Merge pull request #15714 from akemidx/saving_custom_report_template
Saved Custom Report Templates
2024-12-19 22:43:59 +00:00
snipe
1434522149 Merge pull request #15912 from marcusmoore/bug/harden-checkout-validation-v2
Harden asset checkout validation
2024-12-19 22:42:06 +00:00
snipe
23af5fb06e Merge pull request #15964 from marcusmoore/testing/accessories-ui
Added Accessory UI tests
2024-12-19 22:40:34 +00:00
snipe
6b8c1eb523 Merge branch 'develop' into testing/accessories-ui 2024-12-19 22:38:04 +00:00
snipe
0984194ec6 Merge pull request #15965 from marcusmoore/testing/consumable-ui
Added Consumable UI tests
2024-12-19 22:36:47 +00:00
snipe
26264e1d55 Merge branch 'develop' into testing/consumable-ui 2024-12-19 22:34:10 +00:00
snipe
dc5dedd5a3 Merge pull request #15975 from marcusmoore/testing/license-checkin
Added tests around license checkin
2024-12-19 22:33:03 +00:00
snipe
d49bfb562a Merge branch 'develop' into testing/license-checkin 2024-12-19 22:29:31 +00:00
snipe
f90dd9d74d Merge pull request #15976 from marcusmoore/testing/ui-render
Added simple front end render tests
2024-12-19 22:27:35 +00:00
snipe
8d24c0af0d Merge pull request #15982 from spencerrlongg/bug/sc-27228
Update Checkout Button Permission for Predefined Kits
2024-12-19 22:25:51 +00:00
snipe
174a01cb6b Merge pull request #15991 from snipe/added_some_sorting_on_audit_report
Added a few order options on audit report
2024-12-19 22:24:57 +00:00
snipe
360e0ff534 Added a few order options on audit report
Signed-off-by: snipe <snipe@snipe.net>
2024-12-19 22:19:33 +00:00
snipe
4f2721e93f Merge pull request #15986 from Godmartinz/fix-settings-seeder
Renames variables to match columns for label settings
2024-12-19 19:06:28 +00:00
snipe
0dce3b8b8c Merge pull request #15987 from spencerrlongg/bug/sc-27192
Add `string` to Password Reset Username Rules
2024-12-18 20:09:14 +00:00
spencerrlongg
5042c2b30a oops, rm dump 2024-12-18 13:58:18 -06:00
spencerrlongg
b45cf6124f add note 2024-12-18 13:57:18 -06:00
Godfrey M
c8f280ac90 change barcode column names in seeder 2024-12-18 09:50:55 -08:00
spencerrlongg
7eb936883a rm note 2024-12-17 16:38:29 -06:00
akemidx
c3b5a92a48 added builder 2024-12-17 17:11:52 -05:00
spencerrlongg
eb054897d6 Remove leftover testing logic and fix checkout permissions
Removed console logs and temporary testing code from the bootstrap-table view. Updated the transformer to correctly check checkout permissions against the Asset class instead of PredefinedKit.
2024-12-17 16:06:10 -06:00
akemidx
f6dbda4056 fixing count to not used trashed 2024-12-17 17:03:46 -05:00
akemidx
5992d2a1d2 adding to controller 2024-12-17 15:43:13 -05:00
Marcus Moore
a53976967a Use correct id 2024-12-17 10:31:35 -08:00
Marcus Moore
1be7508340 Add simple tests to ensure views render 2024-12-16 17:45:10 -08:00
Marcus Moore
af135fa42c Add permissions property to group factory 2024-12-16 17:37:58 -08:00
Marcus Moore
7aa5195e87 Add tests for license checkin 2024-12-16 14:39:24 -08:00
snipe
04c3481734 Merge pull request #15973 from uberbrady/next_try_accessories_to_locations_rebased
Next try accessories to locations rebased
2024-12-16 20:25:25 +00:00
Brady Wetherington
582b462326 Removed inadvertently added files. 2024-12-16 16:55:54 +00:00
snipe
b233715796 Fixed property
Signed-off-by: snipe <snipe@snipe.net>
2024-12-16 16:35:34 +00:00
snipe
b93fc80011 Fixed admin -> adminuser property
Signed-off-by: snipe <snipe@snipe.net>
2024-12-16 16:35:34 +00:00
snipe
41a6b34768 Added new test
Signed-off-by: snipe <snipe@snipe.net>
2024-12-16 16:35:34 +00:00
snipe
17a6a871ae Updated comment
Signed-off-by: snipe <snipe@snipe.net>
2024-12-16 16:35:34 +00:00
snipe
5fceef1dc3 Updated routes with new endpoints
Signed-off-by: snipe <snipe@snipe.net>
2024-12-16 16:35:34 +00:00
snipe
9b04d2e51c Updated route in view
Signed-off-by: snipe <snipe@snipe.net>
2024-12-16 16:35:34 +00:00
snipe
51b426f0b4 Added accessory transformer to assets transformer
Signed-off-by: snipe <snipe@snipe.net>
2024-12-16 16:35:34 +00:00
snipe
021c4f2598 Added assets endpoint
Signed-off-by: snipe <snipe@snipe.net>
2024-12-16 16:35:34 +00:00
snipe
ac96b8d4ae Added assignedAccessories method
Signed-off-by: snipe <snipe@snipe.net>
2024-12-16 16:35:34 +00:00
snipe
bc8719e336 Specify created_by in the API call as well
Signed-off-by: snipe <snipe@snipe.net>
2024-12-16 16:35:34 +00:00
snipe
bd38d64e66 Removed create() method
Signed-off-by: snipe <snipe@snipe.net>
2024-12-16 16:35:34 +00:00
snipe
74b5d6d12b Updated transformer
Signed-off-by: snipe <snipe@snipe.net>
2024-12-16 16:35:34 +00:00
snipe
ddd11939a5 No need to include assigned_to
Signed-off-by: snipe <snipe@snipe.net>
2024-12-16 16:35:34 +00:00
snipe
3caa5f2042 Fixed user_id to created_by
Signed-off-by: snipe <snipe@snipe.net>
2024-12-16 16:35:34 +00:00
snipe
5226d507d4 Updated route
Signed-off-by: snipe <snipe@snipe.net>
2024-12-16 16:35:34 +00:00
snipe
274b659905 Added new route
Signed-off-by: snipe <snipe@snipe.net>
2024-12-16 16:35:34 +00:00
snipe
a0b9714d72 Updated user_id to created_by
Signed-off-by: snipe <snipe@snipe.net>
2024-12-16 16:35:34 +00:00
snipe
36aea52ae0 Fixed variable in test
Signed-off-by: snipe <snipe@snipe.net>
2024-12-16 16:35:34 +00:00
snipe
e0643cd744 Added currency and history icons
Signed-off-by: snipe <snipe@snipe.net>
2024-12-16 16:35:30 +00:00
snipe
27fab0f573 Use history icon
Signed-off-by: snipe <snipe@snipe.net>
2024-12-16 16:34:51 +00:00
snipe
183a4d49d8 Refactor of #15235 - added accessory checkout to locations, assets
Signed-off-by: snipe <snipe@snipe.net>
2024-12-16 16:34:49 +00:00
snipe
edacc4eb54 Merge pull request #15446 from Godmartinz/barcode_settings_hide
Refactored Barcode Settings into Label Settings
2024-12-16 16:09:34 +00:00
snipe
1e7d7a147b Merge pull request #15972 from snipe/upgrade_fontawesome
Updated font awesome
2024-12-16 15:55:14 +00:00
snipe
8ee549efbf Bumped font-awesome to 6.7.0
Signed-off-by: snipe <snipe@snipe.net>
2024-12-16 15:51:23 +00:00
Marcus Moore
699476da90 Scaffold and implement some license checkin tests 2024-12-12 17:33:34 -08:00
Marcus Moore
d763feb803 Add consumable ui tests 2024-12-12 16:41:46 -08:00
Marcus Moore
d3bfa75251 Add accessory ui tests 2024-12-12 14:30:58 -08:00
Godfrey M
833af55806 Merge branch 'develop' into barcode_settings_hide 2024-12-12 12:05:29 -08:00
snipe
d1246c65bd Merge pull request #15963 from snipe/localization/updated_strings_2024-12-12 2024-12-12 19:24:09 +00:00
snipe
38db890660 Updated strings
Signed-off-by: snipe <snipe@snipe.net>
2024-12-12 19:22:56 +00:00
snipe
01c18f6303 Merge pull request #15962 from snipe/fixes_rb-18772 2024-12-12 17:40:40 +00:00
snipe
c5e2aed164 Check for assigned (not assigned_to) before trying to present() the name on bulk delete assets
Signed-off-by: snipe <snipe@snipe.net>
2024-12-12 17:37:08 +00:00
snipe
4d1d2fedb7 Merge pull request #15960 from uberbrady/improve_restore_cleaner_utf8 2024-12-12 17:05:10 +00:00
snipe
ab6363a124 Merge pull request #15959 from snipe/remove_settings_api_endpoints 2024-12-12 16:53:15 +00:00
Brady Wetherington
a0e7dcf4ff Fixes to 'clean' mode to better handle character sets and zero-values 2024-12-12 16:50:36 +00:00
snipe
da33f1815a Removed index and destroy settinga API endpoints
Signed-off-by: snipe <snipe@snipe.net>
2024-12-12 16:46:19 +00:00
snipe
f089d1f0a4 Merge pull request #15944 from marcusmoore/bug/required-display-for-selects 2024-12-12 01:42:26 +00:00
spencerrlongg
72f58b0405 leaving this here for notes etc 2024-12-11 19:13:51 -06:00
snipe
4bd6c2171c Merge pull request #15957 from Godmartinz/fix-checkout-notif-parameters 2024-12-12 00:38:21 +00:00
Marcus Moore
67494c1b0b Fix validation messages for select2 inputs 2024-12-11 16:26:23 -08:00
Godfrey M
3264149a2c fix other mailables 2024-12-11 16:26:18 -08:00
Marcus Moore
8417fcb604 Revert "Show frontend "required" validation for model and status selects"
This reverts commit 10a7ae8d47.
2024-12-11 16:25:45 -08:00
Godfrey M
331fbb66bd fix other mailables 2024-12-11 16:25:04 -08:00
Godfrey M
400833f834 reversed order of the acceptance and note paramter 2024-12-11 16:14:06 -08:00
snipe
a7e6b8ea3f Merge pull request #15956 from marcusmoore/bug/sc-27731 2024-12-11 23:52:33 +00:00
Marcus Moore
6e31d0f2c3 Use appropriate category for licenses when seeding 2024-12-11 15:39:41 -08:00
snipe
b9a660683c Merge pull request #15955 from ubc-cpsc/bugfix/GHSA-c2pc-g5qf-rfrf 2024-12-11 20:42:13 +00:00
Joël Pittet
014350a26b Fix league/commonmark's quadratic complexity bugs may lead to a denial of service 2024-12-11 12:04:45 -08:00
snipe
06a0ac895d Fixed #15928 - updated method name to setCreatedBy from SetUserId
Signed-off-by: snipe <snipe@snipe.net>
2024-12-11 18:34:18 +00:00
snipe
34a47e9e44 Add @sgross-emlix as a contributor 2024-12-11 18:09:53 +00:00
snipe
f5a9e4bafa Fixes #15952 - fixed typo in content-type
Signed-off-by: snipe <snipe@snipe.net>
2024-12-11 18:09:19 +00:00
snipe
66339481cf Merge pull request #15954 from Godmartinz/null_fix-for-reminder-command 2024-12-11 17:38:59 +00:00
Godfrey M
2e97b56deb add null safe operator to acceptance reminder 2024-12-11 09:27:27 -08:00
akemidx
8adb62fd3a width fix 2024-12-10 19:17:01 -05:00
akemidx
43537d414b removed redundancy. 2024-12-10 16:42:55 -05:00
snipe
5014a95d9a Updated supported versions
Signed-off-by: snipe <snipe@snipe.net>
2024-12-10 13:27:59 +00:00
akemidx
f2fab57187 cancel button pull to left.
added pull right to save
2024-12-09 19:28:57 -05:00
Marcus Moore
10a7ae8d47 Show frontend "required" validation for model and status selects 2024-12-09 16:09:51 -08:00
snipe
5f0efd8cdb Merge pull request #15940 from snipe/reove_gh_templates 2024-12-09 19:35:31 +00:00
spencerrlongg
03c90d7b60 note, will come back to this once question is answered 2024-12-09 13:29:06 -06:00
snipe
31155b5351 Removed issue/PR templates
Signed-off-by: snipe <snipe@snipe.net>
2024-12-09 19:28:51 +00:00
snipe
cc8f72c3f9 Merge pull request #15914 from Godmartinz/send_reminder_emails 2024-12-09 19:23:13 +00:00
snipe
a0bab70def Merge pull request #15939 from uberbrady/fix_ldap_asset_location_updater 2024-12-09 17:56:23 +00:00
Brady Wetherington
b5c8251539 Only update asset locations to assets checked out to users. 2024-12-09 17:40:10 +00:00
snipe
0149ed75fd Merge pull request #15565 from spencerrlongg/bug/sc-25921 2024-12-09 17:00:10 +00:00
snipe
f72635955d Merge pull request #15925 from Godmartinz/refactor-unaccepted-assets-reminder-notif 2024-12-09 16:40:21 +00:00
Godfrey M
5120cddda4 delete notification version of reminder 2024-12-05 16:02:55 -08:00
Godfrey M
97398f1e68 adds testing to unaccepted reminder command 2024-12-05 12:41:33 -08:00
Godfrey M
281ff6ad5d wrap comment 2024-12-05 11:52:34 -08:00
Godfrey M
9d49b01958 cleans up the Unaccepted Asset reminder variables 2024-12-05 11:46:56 -08:00
Godfrey M
3f8916ea2e fix duplicate emails being sent in unaccepted reminder command 2024-12-05 11:37:03 -08:00
Godfrey M
f6b9ae6aee missed a spot 2024-12-05 10:18:35 -08:00
Godfrey M
de41def2b3 fixed conditionals 2024-12-05 10:15:57 -08:00
Godfrey M
52b051e940 add mail class for unaccepted assets reminders 2024-12-05 10:08:39 -08:00
snipe
a137e31797 Merge pull request #15920 from akemidx/asset-category-in-emails 2024-12-04 21:46:43 +00:00
akemidx
ca0f8ace99 fixed 2024-12-03 16:57:28 -05:00
akemidx
6252f0ac5e layout / added category id 2024-12-03 16:10:42 -05:00
Godfrey M
b85b4b1e1b remove table-responsive div from several index bladees 2024-12-03 10:26:14 -08:00
snipe
43d66a8fcc Merge pull request #15918 from Godmartinz/mail_name_fix
Adds `MAIL_FROM_NAME` to mail envelope
2024-12-03 17:17:26 +00:00
Godfrey M
e5284c03e2 fix typo 2024-12-03 09:10:50 -08:00
Godfrey M
16283b8fc0 adds mail from name to mail envelope 2024-12-03 09:08:39 -08:00
Godfrey M
983b78edd9 add property check 2024-12-02 14:27:04 -08:00
snipe
2ad1407d51 Merge pull request #15909 from Godmartinz/checkin-out-notifications
Fixed general webhook option notifications not firing
2024-12-02 22:03:32 +00:00
Godfrey M
ab67c48352 fix unaccepted assets report resend acceptance 2024-12-02 13:03:09 -08:00
Marcus Moore
1d0d14876c Harden asset checkout validation 2024-12-02 12:49:02 -08:00
snipe
14730184c9 Fixed sr-only blank text
Signed-off-by: snipe <snipe@snipe.net>
2024-12-02 18:48:02 +00:00
snipe
8ff099e802 Merge pull request #15910 from marcusmoore/chore/include-testing-variable
Included MAIL_FROM_ADDR in phpunit configuration
2024-12-02 18:34:08 +00:00
Marcus Moore
ea1f8328b9 Include MAIL_FROM_ADDR in phpunit configuration 2024-12-02 10:23:02 -08:00
Godfrey M
99464fcd86 fixes general webhook not firing 2024-12-02 10:19:24 -08:00
snipe
93d4d24194 Fixed funky layout in importer
Signed-off-by: snipe <snipe@snipe.net>
2024-12-02 17:56:15 +00:00
snipe
1bbe9bf6c9 Merge remote-tracking branch 'origin/develop' 2024-12-02 17:43:03 +00:00
snipe
6874f703bf Some CSS twiddling
Signed-off-by: snipe <snipe@snipe.net>
2024-12-02 17:42:26 +00:00
snipe
a7d5b3944e Merge pull request #15908 from snipe/revert-15892-bug/harden-checkout-validation
Revert "Hardened asset checkout validation by requiring integer"
2024-12-02 17:42:02 +00:00
Marcus Moore
b5e83899c6 Revert "Hardened asset checkout validation by requiring integer" 2024-12-02 09:37:21 -08:00
snipe
dcd586e3cd Merge remote-tracking branch 'origin/develop' 2024-12-02 17:17:20 +00:00
snipe
1246ab1de7 Fixed bulk user form in user detail view
Signed-off-by: snipe <snipe@snipe.net>
2024-12-02 17:14:36 +00:00
snipe
5a4a3aa8f3 Merge remote-tracking branch 'origin/develop' 2024-12-02 15:59:25 +00:00
snipe
2220828b00 Merge pull request #15904 from snipe/fixes/#15901
Fixed #15901 - re-added required indicator on text and select custom fields
2024-12-02 15:51:32 +00:00
snipe
716c67d4b8 Fixed #15901 - re-added required indicator on text and select custom fields
Signed-off-by: snipe <snipe@snipe.net>
2024-12-02 15:45:07 +00:00
snipe
ee4a54be24 Fixed order by notes for users
Signed-off-by: snipe <snipe@snipe.net>
2024-11-27 15:48:13 +00:00
snipe
46be1ada60 Merge pull request #15892 from marcusmoore/bug/harden-checkout-validation
Hardened asset checkout validation by requiring integer
2024-11-27 14:55:11 +00:00
snipe
e1c0a80c20 Merge remote-tracking branch 'origin/develop' 2024-11-27 13:52:03 +00:00
snipe
2cb1b6d462 Use transformer on API update
Signed-off-by: snipe <snipe@snipe.net>
2024-11-27 13:51:53 +00:00
snipe
37ac7fe25c Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	public/css/build/app.css
#	public/css/build/overrides.css
#	public/css/dist/all.css
#	public/mix-manifest.json
2024-11-26 20:38:46 +00:00
snipe
11f83b4cd9 Merge branch 'develop' of https://github.com/snipe/snipe-it into develop 2024-11-26 20:12:14 +00:00
snipe
0f1d10bd69 Dev assets
Signed-off-by: snipe <snipe@snipe.net>
2024-11-26 20:12:09 +00:00
snipe
82108f8a18 Merge pull request #15208 from akemidx/feature/sc-26415
FEATURE: Option for Notes to be Required on Asset Checkin/Checkout
2024-11-26 20:11:04 +00:00
akemidx
a7dae10a82 fixing line 2024-11-26 15:06:25 -05:00
akemidx
2727210c78 requested changes from pr 2024-11-26 15:04:54 -05:00
Marcus Moore
fcbd5dcae5 Harden asset checkout validation by requiring ints 2024-11-26 11:33:17 -08:00
snipe
fa80716320 Merge pull request #15890 from Godmartinz/mobile-view-fix
Mobile view fix
2024-11-26 19:13:39 +00:00
Godfrey M
15c9df0ab1 fix mobile view for asset and user 2024-11-26 10:59:31 -08:00
snipe
6ee0c93c87 Merge remote-tracking branch 'origin/develop' 2024-11-26 18:47:22 +00:00
snipe
37e091adbb Merge pull request #15889 from Godmartinz/Fix-user-API-location-update
Fixed Users API `update` from clearing `location_id` unnecessarily
2024-11-26 18:45:20 +00:00
Godfrey M
021e82927e fixed mobile view of assets 2024-11-26 10:42:59 -08:00
Godfrey M
60642cd902 fix user api update from clearing location_id unnecessarily 2024-11-26 09:58:17 -08:00
snipe
fd07550803 Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	config/version.php
2024-11-25 14:19:05 +00:00
snipe
30b481bc93 Updated version
Signed-off-by: snipe <snipe@snipe.net>
2024-11-25 14:18:31 +00:00
snipe
25bfd3e845 Merge remote-tracking branch 'origin/develop' 2024-11-25 13:05:28 +00:00
snipe
0f18ee86f7 Updated translations
Signed-off-by: snipe <snipe@snipe.net>
2024-11-25 13:05:05 +00:00
snipe
4a5f65616f Merge remote-tracking branch 'origin/develop' 2024-11-25 12:56:08 +00:00
snipe
f125c90c94 Merge pull request #15870 from marcusmoore/bug/sc-26857
Always call resizeCanvas
2024-11-22 00:59:36 +00:00
akemidx
0d608552ef orange bar for requirednessness 2024-11-21 19:09:54 -05:00
akemidx
dd223fc215 commit for testing 2024-11-21 19:01:27 -05:00
Marcus Moore
87756cac66 Remove debugging 2024-11-21 14:30:17 -08:00
Marcus Moore
9f49c25401 WIP: move signature pad creation up and add debugging 2024-11-21 13:12:13 -08:00
Marcus Moore
d0378070c8 Always call resizeCanvas 2024-11-21 12:38:53 -08:00
snipe
9f395d1f6a Merge remote-tracking branch 'origin/develop' 2024-11-21 19:58:49 +00:00
snipe
feba860a90 Merge pull request #15850 from akemidx/bug/sc-27448
Adding colon to password translation string
2024-11-21 19:58:04 +00:00
akemidx
424316df9f fixing colon placements 2024-11-21 14:32:22 -05:00
snipe
b7aedb7dcb Merge pull request #15818 from spencerrlongg/bug/sc-27213
Resolves Validation for Encrypted Numeric and Alpha Custom Fields
2024-11-21 19:25:27 +00:00
snipe
8b38dc83f6 Merge pull request #15851 from marcusmoore/testing/api-component-checkin
Fixed bug in component checkins via api
2024-11-21 19:24:12 +00:00
snipe
ad2b85393b Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	public/js/build/app.js
#	public/js/build/vendor.js
#	public/js/dist/all.js
#	public/mix-manifest.json
2024-11-21 19:23:10 +00:00
snipe
85c1b0ec57 [Snyk] Upgrade jquery-ui from 1.14.0 to 1.14.1 #15868
Signed-off-by: snipe <snipe@snipe.net>
2024-11-21 19:22:08 +00:00
snipe
b99b56b32b Merge remote-tracking branch 'origin/develop' 2024-11-21 14:41:42 +00:00
snipe
2a21cce4f5 Merge pull request #15839 from Godmartinz/fix-mail-envelope-variable
replace env with config variable for from address
2024-11-21 14:41:04 +00:00
snipe
3a683d84a7 Merge pull request #15859 from Godmartinz/remove_name_null_warning
Adds a ternary for blank emails for mail notifications
2024-11-21 14:38:03 +00:00
snipe
e05f443886 Merge pull request #15864 from marcusmoore/testing/api-component-checkout
Added tests for component checkout api endpoint
2024-11-21 14:37:45 +00:00
Marcus Moore
d65254c4ec Add tests for component checkout api endpoint 2024-11-20 15:34:08 -08:00
Godfrey M
6969b8be47 remove the changes to mail.from.address default 2024-11-20 14:25:57 -08:00
snipe
0a3bca078c Merge pull request #15860 from marcusmoore/tests/switch-to-file-for-sqlite-in-action
Improved speed of sqlite tests in GitHub Actions
2024-11-20 22:09:11 +00:00
Marcus Moore
9bbd802fce Use database file for sqlite in GitHub Action for tests 2024-11-20 12:33:58 -08:00
Marcus Moore
f932a4fc76 Always run validation on checkin 2024-11-20 12:25:06 -08:00
Godfrey M
f7c1fc852d no checked out to email doesnt trigger a 500 2024-11-20 08:29:28 -08:00
snipe
5522def054 Merge pull request #15854 from NebelKreis/feature/add-category-to-asset-mails
Added #15803: Category Field to Asset Related Mails
2024-11-20 13:51:34 +00:00
snipe
8cd4b3303e Merge pull request #15847 from NebelKreis/feature/hardware-label-generation-api
Added #15677: API Route for Generating Asset Labels
2024-11-20 11:14:28 +00:00
NebelKreis
d5c141dc59 Fix: Removed setting validation as it is not strictly necessary 2024-11-20 11:55:48 +01:00
NebelKreis
7618169d79 Feature: Added category to asset requested email 2024-11-20 11:22:19 +01:00
NebelKreis
eb026248a8 Feature: Added category to asset acceptance/decline email 2024-11-20 10:59:59 +01:00
NebelKreis
4304af0508 Feature: Added category to asset checkin email 2024-11-20 10:27:37 +01:00
NebelKreis
61eff02fcb Feature: Added category to asset checkout email 2024-11-20 10:27:22 +01:00
snipe
cca76005a2 Merge pull request #15852 from marcusmoore/testing/ui-delete-component
Added tests around deleting component via ui
2024-11-20 01:27:19 +00:00
Marcus Moore
54f5f46e31 Improve check for image existence 2024-11-19 16:44:42 -08:00
Marcus Moore
51a0767be9 Add tests around deleting component via ui 2024-11-19 16:44:19 -08:00
Marcus Moore
da4c877ed8 Use === over == 2024-11-19 16:13:53 -08:00
Marcus Moore
e8cad0df69 Formatting 2024-11-19 16:13:30 -08:00
Marcus Moore
59fe53842d Add tests around component check ins via api 2024-11-19 16:11:23 -08:00
akemidx
1e513312eb adding colon to password translation 2024-11-19 16:58:10 -05:00
Godfrey M
99de639be4 fix mail.from.address variables in config, simplify envelop[ variable 2024-11-19 09:32:11 -08:00
Godfrey M
b513575643 add testing example var MAIL_FROM_ADDR 2024-11-19 09:10:52 -08:00
spencerrlongg
22602c7997 use existing validation strings 2024-11-19 08:59:47 -06:00
snipe
d10f118128 Merge remote-tracking branch 'origin/develop' 2024-11-19 13:55:55 +00:00
snipe
5a5f1082fb Merge pull request #15848 from snipe/chore/sc-27531
Indicate requiredness on status select on bulk user checkin+delete
2024-11-19 13:55:22 +00:00
snipe
30a6a678d4 Indicate requiredness on status select on bulk user checkin+delete
Signed-off-by: snipe <snipe@snipe.net>
2024-11-19 13:50:18 +00:00
snipe
4384f8dcbb Merge remote-tracking branch 'origin/develop' 2024-11-19 13:32:02 +00:00
snipe
d576016a1c Merge pull request #15845 from snipe/bug/sc-27523
Fixed variable name to correctly log created_by and date for bulk user delete/checkin
2024-11-19 13:29:21 +00:00
snipe
15a31bd141 Fixed variable name
Signed-off-by: snipe <snipe@snipe.net>
2024-11-19 13:22:44 +00:00
NebelKreis
5639a84d90 Feature: Added API route for asset label generation 2024-11-19 14:16:58 +01:00
NebelKreis
66d6b01307 Feature: Added translations for label generation API endpoint 2024-11-19 14:16:06 +01:00
NebelKreis
889aff43c2 Feature: Added API endpoint for generating asset labels 2024-11-19 14:13:05 +01:00
snipe
8f7223128f Merge pull request #15757 from akemidx/bug/sc-26944
FIXED: Bulk Delete page not showing full information
2024-11-19 12:34:57 +00:00
snipe
53cfcb7143 Merge pull request #15843 from snipe/viclou-patch-1
Update README.md - small typo
2024-11-19 10:50:28 +00:00
snipe
d60ac0c78d Merge pull request #15840 from marcusmoore/fixes/migration-rollbacks
Fixed a couple migrate:rollback issues
2024-11-19 10:20:58 +00:00
victoria
a328c7a64c Update README.md
typo mosrt to most under Join our Community links
2024-11-18 23:03:31 -10:00
Godfrey M
f533cdc07a update default from address to alternate config variable 2024-11-18 12:39:28 -08:00
Marcus Moore
f5206078d4 Fix rollback for webhook_endpoint by using correct column type 2024-11-18 12:25:02 -08:00
Marcus Moore
0209d27081 Fix rollback for created_by 2024-11-18 12:24:47 -08:00
Godfrey M
d14f43fbbe replace env with config variable for from address 2024-11-18 10:54:03 -08:00
spencerrlongg
b71a90a3c5 this should be all it takes to fix this, i think 2024-11-18 12:44:24 -06:00
snipe
8d321edca8 Merge remote-tracking branch 'origin/develop' 2024-11-15 18:59:40 +00:00
snipe
3fb543bf03 Merge pull request #15828 from snipe/bug/sc-27500
Fixed admin user not showing in download all activity report
2024-11-15 18:59:07 +00:00
snipe
e8d1093376 Fixed admin user not showing in download all activity report
Signed-off-by: snipe <snipe@snipe.net>
2024-11-15 18:51:45 +00:00
snipe
66e82a345a Merge remote-tracking branch 'origin/develop' 2024-11-15 13:18:25 +00:00
snipe
187e231c0e Fixed #15825
Signed-off-by: snipe <snipe@snipe.net>
2024-11-15 13:18:15 +00:00
snipe
caf92748fc Merge remote-tracking branch 'origin/develop' 2024-11-14 20:57:18 +00:00
snipe
09b7db5103 Additional fix for #15817
Signed-off-by: snipe <snipe@snipe.net>
2024-11-14 20:57:09 +00:00
snipe
5381c4e1e3 Merge remote-tracking branch 'origin/develop' 2024-11-14 20:53:17 +00:00
snipe
add3edba20 Merge pull request #15822 from snipe/add_model_number_to_view_assets
Fixed #15820 - added model number to view-assets
2024-11-14 20:52:44 +00:00
snipe
b4a2a4e1ec Fixed #15820 - added model number to view-assets
Signed-off-by: snipe <snipe@snipe.net>
2024-11-14 20:51:18 +00:00
snipe
f2faf58786 Merge pull request #15817 from Godmartinz/label_fix
Removes asset tag if 2D code is not present
2024-11-14 20:49:31 +00:00
spencerrlongg
124f9c84c2 oops, something went wrong translation 2024-11-14 13:45:47 -06:00
snipe
96a4391d5c Merge remote-tracking branch 'origin/develop' 2024-11-14 19:05:08 +00:00
snipe
7b7a848a43 Merge pull request #15819 from snipe/fixes_asset_file_deletion
Corrected route name for delete action on filestable on assets
2024-11-14 18:01:56 +00:00
snipe
636e466b8a Fixed delete model file route
Signed-off-by: snipe <snipe@snipe.net>
2024-11-14 17:58:20 +00:00
snipe
838a6d03bd Corrected route name for filestable on assets
Signed-off-by: snipe <snipe@snipe.net>
2024-11-14 17:51:49 +00:00
spencerrlongg
8465806536 rm unnecessary imports 2024-11-14 11:51:41 -06:00
Godfrey M
0f1f6bc6a5 fixed rest of dymos 2024-11-14 09:45:52 -08:00
spencerrlongg
95cd779334 translations and attribute names 2024-11-14 11:42:35 -06:00
snipe
0a7d1a27ee Merge remote-tracking branch 'origin/develop' 2024-11-14 17:10:16 +00:00
snipe
306c97b5b5 Merge pull request #15816 from Godmartinz/Teams_fix
replace the via() channel for MS Teams (deprecated)
2024-11-14 17:09:47 +00:00
Godfrey M
23038ab209 removes tag if qr code is not present 2024-11-14 08:54:12 -08:00
Godfrey M
702621ec57 replace the via channel class 2024-11-14 08:38:18 -08:00
snipe
0be123b115 Merge remote-tracking branch 'origin/develop' 2024-11-14 14:47:18 +00:00
snipe
c093b4531d Fixed anchor links
Signed-off-by: snipe <snipe@snipe.net>
2024-11-14 14:47:09 +00:00
snipe
517e923f70 Merge remote-tracking branch 'origin/develop' 2024-11-14 14:42:44 +00:00
snipe
a0b8483878 Removed extra sort
Signed-off-by: snipe <snipe@snipe.net>
2024-11-14 14:41:11 +00:00
snipe
075e3503b1 Removed Twitter links
Signed-off-by: snipe <snipe@snipe.net>
2024-11-14 14:38:51 +00:00
snipe
d427d9e5af Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>
2024-11-14 12:25:10 +00:00
snipe
940f1c2ecc Fixed #15812 - regression in action_type search
Signed-off-by: snipe <snipe@snipe.net>
2024-11-14 12:24:15 +00:00
snipe
3e131d515d Add @maciej-poleszczyk as a contributor 2024-11-14 11:06:55 +00:00
snipe
364410a586 Merge pull request #15558 from maciej-poleszczyk/develop
Fixing #15064 - to not fail ldap sync on single data issue with ldap …
2024-11-14 11:06:18 +00:00
snipe
70d9ef428c Merge pull request #15811 from snipe/small_fix_for_embiguous_created_by
Specify table name in select for models controller
2024-11-14 10:20:16 +00:00
snipe
4e28650ca9 Specify table name in select
Signed-off-by: snipe <snipe@snipe.net>
2024-11-14 10:18:39 +00:00
spencerrlongg
8c6869fd34 note and rm dump and comment 2024-11-13 21:59:32 -06:00
spencerrlongg
7e7cbc4cc8 seems to work just fine now, needs translations 2024-11-13 21:54:25 -06:00
spencerrlongg
25163d1756 working except for null 🤔 2024-11-13 21:46:23 -06:00
spencerrlongg
3982201d0e this should work in theory - local is screwy though 2024-11-13 21:38:09 -06:00
snipe
647ef6a4b7 Versioning stuff is hard - fixed v7.0.14 to v7.1.14
Signed-off-by: snipe <snipe@snipe.net>
2024-11-14 01:11:29 +00:00
snipe
a060f603b5 Versioning stuff is hard - fixed v7.0.14 to v7.1.14
Signed-off-by: snipe <snipe@snipe.net>
2024-11-14 01:11:01 +00:00
snipe
a89e17212e Bumped version
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 23:46:30 +00:00
snipe
f7dcfca66c Bumped version
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 23:46:04 +00:00
akemidx
efeef5cdc4 removing || parts of if else 2024-11-13 18:29:58 -05:00
akemidx
9cb411c500 removing required form div container 2024-11-13 18:06:04 -05:00
snipe
eb57652548 Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	config/version.php
#	public/css/build/app.css
#	public/css/build/overrides.css
#	public/css/dist/all.css
#	public/css/dist/skins/_all-skins.css
#	public/css/dist/skins/_all-skins.min.css
#	public/css/dist/skins/skin-black-dark.css
#	public/css/dist/skins/skin-black-dark.min.css
#	public/css/dist/skins/skin-blue-dark.css
#	public/css/dist/skins/skin-blue-dark.min.css
#	public/css/dist/skins/skin-green-dark.css
#	public/css/dist/skins/skin-green-dark.min.css
#	public/css/dist/skins/skin-orange-dark.css
#	public/css/dist/skins/skin-orange-dark.min.css
#	public/css/dist/skins/skin-purple-dark.css
#	public/css/dist/skins/skin-purple-dark.min.css
#	public/css/dist/skins/skin-red-dark.css
#	public/css/dist/skins/skin-red-dark.min.css
#	public/css/dist/skins/skin-yellow-dark.css
#	public/css/dist/skins/skin-yellow-dark.min.css
#	public/mix-manifest.json
2024-11-13 22:57:00 +00:00
snipe
cb7e47a3a3 Updated translations
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 22:55:33 +00:00
Marcus Moore
92f33c08f7 Merge branch 'develop' into saving_custom_report_template 2024-11-13 14:54:00 -08:00
snipe
0ba861920f Updated dev assets
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 22:51:20 +00:00
snipe
e185b2b781 Bumped hash
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 22:50:13 +00:00
snipe
3bf33aa682 Merge remote-tracking branch 'origin/develop' 2024-11-13 22:39:01 +00:00
snipe
5084843f9d Merge pull request #15809 from marcusmoore/fixes/teams
Fixed Microsoft Teams notifications
2024-11-13 22:38:24 +00:00
Marcus Moore
e80a456e04 Remove duplicate method 2024-11-13 14:35:20 -08:00
Marcus Moore
c399d797b4 Add conditional for microsoft team integration version 2024-11-13 14:29:01 -08:00
Marcus Moore
ac3ae651b1 Remove incorrect typehint 2024-11-13 14:15:43 -08:00
snipe
73383c688e Merge pull request #15782 from Toreg87/fixes/indentation_userscontroller
Fix Indentation in UsersController
2024-11-13 21:21:40 +00:00
snipe
24456f723b Merge remote-tracking branch 'origin/develop' 2024-11-13 21:21:08 +00:00
snipe
9d2cbc4bb9 Add @DarrenRainey as a contributor 2024-11-13 21:20:45 +00:00
snipe
796a397d08 Merge pull request #15807 from DarrenRainey/develop
Patch for whitespace causing HTTP 500 errors.
2024-11-13 21:20:26 +00:00
snipe
19bf549450 Merge remote-tracking branch 'origin/develop' 2024-11-13 21:17:40 +00:00
snipe
381c6e05bb Merge pull request #15808 from Godmartinz/check-license-for-email-boolean
Fixed checkin/checkout email boolean check for Licenses
2024-11-13 21:17:08 +00:00
snipe
ada8e77b85 Added location to asset view
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 21:16:08 +00:00
Godfrey M
1061df8c8b fix user checkout license category email check 2024-11-13 13:07:28 -08:00
Darren Rainey
823af33d1f Patch for whitespace causing HTTP 500 errors.
Patch for whitespace causing HTTP 500 errors.
Patch that adds qoutes around MAIL_FROM_NAME and MAIL_REPLYTO_NAME as current script will generate a .env file which causes an 500 error preventing the site from loading.

Log File: /var/log/apache2/error.log:
The environment file is invalid!
Failed to parse dotenv file. Encountered unexpected whitespace at [Asset Management System].
2024-11-13 20:58:36 +00:00
snipe
02ba13be26 Merge pull request #15730 from akemidx/bug/sc-26974-2
FIXED: Login button can disappear under some circumstances
2024-11-13 20:47:20 +00:00
snipe
0a87b0b790 Merge pull request #15784 from Godmartinz/Fieldset_table_borders
Fixed dark background to fieldsets and right border
2024-11-13 20:40:25 +00:00
snipe
8feb9c49b0 Merge remote-tracking branch 'origin/develop' 2024-11-13 20:39:45 +00:00
snipe
f2fc11035f Merge pull request #15806 from Godmartinz/improved-checkoutable-logging
improved logging in checkoutable listener
2024-11-13 20:39:21 +00:00
snipe
3c08760aeb Merge pull request #15802 from snipe/features/import_models
Ability to import asset models (separate from assets)
2024-11-13 20:37:31 +00:00
Godfrey M
8389c03450 improved logging in checkoutable listener 2024-11-13 12:19:16 -08:00
snipe
ab2e7a315a Merge pull request #15805 from Godmartinz/license-markdown-fix
Fixed license serial gate in markdown
2024-11-13 20:13:28 +00:00
Godfrey M
d7b60b3482 fix serial check in markdown 2024-11-13 11:59:22 -08:00
snipe
52dceda5a2 Merge pull request #15804 from snipe/update_laravel
Updated laravel, additional packages for CVE-2024-52301
2024-11-13 19:49:12 +00:00
snipe
92ae7267d0 Updated laravel, additional packages
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 19:43:39 +00:00
snipe
7ccbc60ec0 Chaneg to ucfirst for Assetmodel -> AssetModel
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 19:35:56 +00:00
snipe
2e340f9a23 Two more case fixes
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 19:18:38 +00:00
snipe
304fddb1d1 Removed unused test
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 18:59:32 +00:00
snipe
1caf73f9da Fixed casing, fixed typo
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 18:58:30 +00:00
spencerrlongg
4841b89109 scratch code for this issue 2024-11-13 12:45:39 -06:00
snipe
6f700ccc95 Added relationship for adminuser
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 18:42:44 +00:00
snipe
6fee533283 Updated CSV
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 18:42:35 +00:00
snipe
4a18946dd7 Added created by to imports
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 18:42:27 +00:00
snipe
7c3f9ba6af Fixed tests
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 18:42:03 +00:00
snipe
d3602c0595 Allow sorting on admin name in API
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 18:23:26 +00:00
snipe
1aef7edc43 Added created by to the import itself
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 18:23:11 +00:00
snipe
d4018a2834 Added created_by to models API
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 18:22:57 +00:00
snipe
0c3b8cb114 Moved created by to create only
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 18:22:46 +00:00
snipe
b6dbb8879a Added created by
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 18:22:30 +00:00
snipe
3a1fb615e7 Added admin sort scope
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 18:22:05 +00:00
snipe
8c3b50dbf2 Added created by
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 18:21:36 +00:00
snipe
54f7917fbe Added created by
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 18:21:27 +00:00
snipe
d7e5fe50eb Use auth facade
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 18:21:19 +00:00
snipe
0a6096e528 Updated method name
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 18:21:00 +00:00
snipe
0ae1db6fe3 Added created_by
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 18:20:47 +00:00
snipe
4d3137e15a Added $accessory->created_by = auth()->id();
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 18:18:46 +00:00
snipe
66aaafc4f2 Updated variable name
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 17:08:20 +00:00
snipe
85dbbdbbcb wtf
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 16:53:19 +00:00
snipe
813b304a01 Fixed tests
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 16:49:58 +00:00
snipe
2f943bc052 Better error messaging for bad fields
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 16:44:09 +00:00
snipe
74ca561ab0 Fixed welcome email toggle
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 16:43:57 +00:00
snipe
69e36738fe Updated CSV
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 16:28:10 +00:00
snipe
4afe873f24 Fixed tests, updated CSV
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 16:21:40 +00:00
snipe
220902a8b4 Merge branch 'develop' into features/import_models 2024-11-13 15:51:36 +00:00
snipe
3740b58580 Re-added assetmodel import factory
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 15:46:25 +00:00
snipe
3d3e3a9557 Squashed commit of the following:
commit c012bf0ece
Merge: 787340b98 947351af6
Author: snipe <snipe@snipe.net>
Date:   Wed Nov 13 00:55:53 2024 +0000

    Merge pull request #15799 from Godmartinz/update_deprecated_trigger_for_ms_teams

    Updated deprecated trigger for ms teams

commit 947351af67
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Nov 12 16:49:02 2024 -0800

    removed unused variabl

commit 4e0d70e0b8
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Nov 12 15:44:14 2024 -0800

    checkin notif was missing

commit 832ccc6aa3
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Nov 12 15:35:09 2024 -0800

    updated deprecated trigger for ms teams

commit 787340b987
Merge: 6bec57395 c62a02225
Author: snipe <snipe@snipe.net>
Date:   Tue Nov 12 22:35:11 2024 +0000

    Merge pull request #14441 from Godmartinz/ldap_location-resync

    Fixes Assets location not being resynced when Users location is updated via LDAP

commit 6bec573956
Merge: b6ad69fac 1fc5bb54e
Author: snipe <snipe@snipe.net>
Date:   Mon Nov 11 13:54:09 2024 +0000

    Merge pull request #15794 from snipe/check_for_file_on_asset_acceptance

    Check that the file exists before trying to download stored EULA

commit 1fc5bb54e1
Author: snipe <snipe@snipe.net>
Date:   Mon Nov 11 13:50:53 2024 +0000

    Check that the file exists before trying to download

    Signed-off-by: snipe <snipe@snipe.net>

commit b6ad69fac2
Merge: 357ef7e37 47b2cdb84
Author: snipe <snipe@snipe.net>
Date:   Sun Nov 10 18:05:20 2024 +0000

    Merge pull request #15793 from snipe/allow_eol_explicit

    Allow user to specify null for calculation or explicit on bulk edit

commit 47b2cdb846
Author: snipe <snipe@snipe.net>
Date:   Sun Nov 10 18:04:13 2024 +0000

    Allow user to specify null for calculation or explicit on bulk edit

    Signed-off-by: snipe <snipe@snipe.net>

commit 357ef7e375
Merge: 000f3171e 6928b1b27
Author: snipe <snipe@snipe.net>
Date:   Sun Nov 10 17:48:25 2024 +0000

    Merge pull request #15792 from snipe/edit_eol_from_bulk

    Added EOL date to bulk asset edit

commit 6928b1b273
Author: snipe <snipe@snipe.net>
Date:   Sun Nov 10 17:47:10 2024 +0000

    Added eol date to bulk asset edit

    Signed-off-by: snipe <snipe@snipe.net>

commit 000f3171e3
Author: snipe <snipe@snipe.net>
Date:   Fri Nov 8 10:28:01 2024 +0000

    Upgrade jspdf-autotable from 3.8.3 to 3.8.4 #15786

    Signed-off-by: snipe <snipe@snipe.net>

commit 5ef3183a52
Merge: a41529dbc 050831868
Author: snipe <snipe@snipe.net>
Date:   Thu Nov 7 11:44:06 2024 +0000

    Merge pull request #15783 from uberbrady/improve_user_and_location_manager_indexes

    Improved indexes on manager_id for locations and users, including del…

commit 050831868e
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Thu Nov 7 11:39:27 2024 +0000

    Improved indexes on manager_id for locations and users, including deleted_at

commit a41529dbc4
Merge: aa168fcb5 4fcf5ac7d
Author: snipe <snipe@snipe.net>
Date:   Wed Nov 6 21:22:45 2024 +0000

    Merge pull request #15780 from uberbrady/add_manager_indexes

    Add new indexes to locations and users for faster manager lookups

commit 4fcf5ac7da
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Nov 6 21:19:41 2024 +0000

    Add new indexes to locations and users for faster manager lookups

commit aa168fcb5b
Author: snipe <snipe@snipe.net>
Date:   Wed Nov 6 18:41:52 2024 +0000

    Updated BS table to 1.23.5

    Signed-off-by: snipe <snipe@snipe.net>

commit 9c1c93ad52
Merge: b96a31253 ad99b8b45
Author: snipe <snipe@snipe.net>
Date:   Wed Nov 6 18:40:35 2024 +0000

    Merge pull request #15774 from marcusmoore/feature/sc-27350

    Added Checkout ID column to user accessory table

commit ad99b8b456
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Nov 6 10:37:31 2024 -0800

    Use generic ID translation

commit b96a312539
Merge: 654f67b6a bab1e58ea
Author: snipe <snipe@snipe.net>
Date:   Wed Nov 6 18:29:22 2024 +0000

    Merge pull request #15779 from ubc-cpsc/bugfix/CVE-2024-50345

    Fixes CVE-2024-50342, CVE-2024-50345, CVE-2024-51736

commit bab1e58ea4
Author: Joël Pittet <pittet@cs.ubc.ca>
Date:   Wed Nov 6 09:46:11 2024 -0800

    symfony/http-client CVE-2024-50342, symfony/http-foundation CVE-2024-50345, symfony/process CVE-2024-51736

commit 654f67b6ac
Author: snipe <snipe@snipe.net>
Date:   Wed Nov 6 14:05:42 2024 +0000

    Updated webpack

    Signed-off-by: snipe <snipe@snipe.net>

commit 3965bcd7c1
Merge: 287f4addf 2362cb5e5
Author: snipe <snipe@snipe.net>
Date:   Wed Nov 6 14:02:44 2024 +0000

    Merge pull request #15773 from Godmartinz/Fix_failing_failing_tests

    Fixed notifications for licenses and asset to asset checkoutables

commit 2362cb5e52
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Nov 4 16:32:46 2024 -0800

    refactor to getNotifiables

commit e7cb4a75eb
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Nov 4 15:56:53 2024 -0800

    Show accessory checkout id in user accessory table

commit 93494ac554
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Nov 4 15:17:58 2024 -0800

    put dataprovider back in for tests

commit 0d707a1851
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Nov 4 15:13:10 2024 -0800

    fixes notifications for licenses and asset to asset checkouables

commit 287f4addf0
Merge: f32ebdc7a 2e96d478f
Author: snipe <snipe@snipe.net>
Date:   Mon Nov 4 20:06:24 2024 +0000

    Merge pull request #15771 from snipe/revert-15744-chore/action-tests-debugging

    Revert "Added the display of logs when tests fail in GitHub Actions"

commit 2e96d478f1
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Nov 4 11:04:17 2024 -0800

    Revert "Added the display of logs when tests fail in GitHub Actions"

commit f32ebdc7ac
Merge: 5897d37fc d6c7dc8e1
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 31 22:39:58 2024 +0000

    Merge pull request #15765 from marcusmoore/chore/add-missing-livewire-file

    Added missing Livewire file

commit d6c7dc8e1c
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 31 15:37:01 2024 -0700

    Add missing livewire file

commit 5897d37fcf
Merge: 49de07045 21a27dcac
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 31 20:54:01 2024 +0000

    Merge pull request #15763 from Godmartinz/no_to_email_check

    Fixed emails not being send if target has no email or if not instance of User. Cc_emails will still be sent.

commit 21a27dcac1
Merge: 379138076 49de07045
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 31 12:55:46 2024 -0700

    fixed conflicts

commit 3791380764
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 31 12:52:47 2024 -0700

    remove unused uses

commit 7a0f79ecd2
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 31 12:51:22 2024 -0700

    remove test route

commit 97a449e80e
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 31 12:50:13 2024 -0700

    removes instanceof User check

commit e65942064e
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 31 12:45:29 2024 -0700

    send emails even if target has no email

commit 49de07045a
Merge: 7e996c40f 73772a013
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 31 17:53:17 2024 +0000

    Merge pull request #15731 from Godmartinz/refacto_ms_teams_notifs

    Fixed MS Team Notifications to utilize workflows after deprecation

commit 7e996c40f5
Merge: 73e8f160c 69e74bbdd
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 31 02:51:42 2024 +0000

    Merge pull request #15758 from snipe/jerm/fix-deprecation-warning

    Fix ${var} deprecation warning in License model

commit 69e74bbdd3
Author: Jeremy Price <jeremy@grokability.com>
Date:   Wed Oct 30 19:43:54 2024 -0700

    Fix ${var} deprecation warning in License model

    When upgrading to php8.3 i started getting deprecation warning about
    using ${var} instead of {$var} in 2 places in License.php

    PHP Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /var/www/snipe-it/app/Models/License.php on line 187
    PHP Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /var/www/snipe-it/app/Models/License.php on line 219

    This simple fix switches the offending statements to {$var} syntax.

commit 73e8f160cf
Merge: f68df1fa0 bd23772fe
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 30 19:29:09 2024 +0000

    Merge pull request #15756 from Godmartinz/cc-email-array

    changes `admin_cc_email` validation to allow an array

commit bd23772fe9
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 30 11:42:15 2024 -0700

    changes cc_email validation to allow array

commit 73772a0138
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 30 11:12:31 2024 -0700

    change button text

commit b26cae372c
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 30 10:40:23 2024 -0700

    merged in develop

commit d6ba303f39
Merge: 9a0eee8f0 f68df1fa0
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 30 10:27:45 2024 -0700

    Merge branch 'develop' into refacto_ms_teams_notifs

    # Conflicts:
    #	app/Listeners/CheckoutableListener.php

commit f68df1fa06
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 30 13:21:13 2024 +0000

    Made type searchable in action logs

    Signed-off-by: snipe <snipe@snipe.net>

commit f0813e03bf
Merge: 05875ebd1 58ff641f8
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 30 12:18:41 2024 +0000

    Merge pull request #15681 from Godmartinz/seperating_notification_n_mail

    Separated Notifications and Emails: Check ins and Check outs

commit 05875ebd1f
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 28 22:04:35 2024 +0000

    Updated translations

    Signed-off-by: snipe <snipe@snipe.net>

commit 9a0eee8f03
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Oct 28 15:03:43 2024 -0700

    revert testing variables

commit 6128765d1f
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Oct 28 15:03:03 2024 -0700

    change wording on notification button

commit c24f79c025
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Oct 28 14:58:43 2024 -0700

    update method comment

commit e7c4343c90
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Oct 28 14:56:48 2024 -0700

    readd checkin accessory format

commit c0620c27ff
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Oct 28 14:30:34 2024 -0700

    adds back laravels channel formats

commit ed81973fe6
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Oct 28 13:57:42 2024 -0700

    adds notifications for deprecation

commit 2d318b394c
Merge: 86d784bd5 5c4971612
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 28 18:41:49 2024 +0000

    Merge pull request #15744 from marcusmoore/chore/action-tests-debugging

    Added the display of logs when tests fail in GitHub Actions

commit b987b3dc00
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Oct 28 10:57:48 2024 -0700

    adds back the laravel channels package and applies a deprecated check

commit 5c49716129
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Oct 28 10:24:35 2024 -0700

    Dump logs on test failure

commit 86d784bd59
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 28 13:37:59 2024 +0000

    Fixed #15740 - use non-translated strings for icons

    Signed-off-by: snipe <snipe@snipe.net>

commit 589f9cccdf
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 28 12:04:10 2024 +0000

    Fixed  #15732

    Signed-off-by: snipe <snipe@snipe.net>

commit 4d848e45e6
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 28 11:55:24 2024 +0000

    Fixed #15736

    Signed-off-by: snipe <snipe@snipe.net>

commit 58ff641f82
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 24 22:53:53 2024 -0700

    removed unused variables

commit ce68f550d8
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 24 16:01:17 2024 -0700

    remove alert emails from cc

commit 6f0c1b12b1
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 24 15:04:54 2024 -0700

    this adds check out message for consumables

commit 278bc5e52a
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 24 14:59:10 2024 -0700

    ads check in and checkout message for license seats

commit cce75a8185
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 24 14:48:23 2024 -0700

    adds check in and checkout messag for accessories

commit e27ff13377
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 24 14:39:40 2024 -0700

    adds check in and checkout message for assets

commit 56365495a1
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 24 14:26:42 2024 -0700

    remove unnecessary fields in accessory checkout mail

commit 18da80e6de
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 24 14:24:00 2024 -0700

    fix checkoutable listener for microsoft teams

commit 18760e3fa1
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 24 12:21:51 2024 -0700

    replaces teams notification package, passes integration test

commit 57107c487c
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 24 09:40:10 2024 -0700

    fixed last test, definetly the last test

commit dfc63641dc
Merge: 07a51ec8b b6340532d
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 24 11:40:50 2024 +0100

    Merge pull request #15550 from uberbrady/fix_multi_create_partial_failure

    Fix multi create partial failure (fixes: [RB-18591])

commit 07a51ec8b1
Merge: e0ec6795b 727c0e458
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 24 10:03:10 2024 +0100

    Merge pull request #15712 from Godmartinz/fix_import-progress-bar

    Upgraded `livewire v3.5.9 => v3.5.12`

commit 6329f5b87e
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 23 17:33:23 2024 -0700

    removed unused variable from test

commit e0ec6795b5
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 24 01:27:50 2024 +0100

    Use crucial for seeded data

    Signed-off-by: snipe <snipe@snipe.net>

commit 15073a0d38
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 23 17:27:37 2024 -0700

    last test to fix

commit a80c09c16d
Merge: ab3b9c451 5509d756b
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 23 17:23:55 2024 -0700

    Merge branch 'develop' into seperating_notification_n_mail

commit 5509d756b7
Merge: 55ba6279a b16a978f1
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 24 01:12:11 2024 +0100

    Merge pull request #15722 from Godmartinz/fix_component_factory

    Fixed Component Factory: use manufacturer factory for `manufactuer_id`

commit b16a978f1b
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 23 16:25:51 2024 -0700

    uses manufacturer factory for manufactuer_id

commit ab3b9c4510
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 23 16:24:01 2024 -0700

    remove unnecessary code from checkinasset notification

commit 2cc2b2b1df
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 23 16:06:27 2024 -0700

    apply array_filter to cc emails to prevent errors

commit 62d06b44d6
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 23 15:43:42 2024 -0700

    set fallback from email address to service.snipe-it.io

commit f29a383179
Merge: fd74c3510 55ba6279a
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 23 15:15:14 2024 -0700

    Merge branch 'develop' into seperating_notification_n_mail

    # Conflicts:
    #	app/Notifications/CheckoutConsumableNotification.php

commit fd74c35102
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 23 15:08:29 2024 -0700

    remove old notify by mail from consumable notification

commit c681946b1d
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 23 15:05:39 2024 -0700

    added component markdown changes

commit 257d25bd9e
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 23 14:56:54 2024 -0700

    removed import notification from test, feature is not present in project

commit 6c34a5c52c
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 23 14:54:21 2024 -0700

    conditionally check cc emails, initiate variables

commit 1b5f4415ae
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 23 14:44:45 2024 -0700

    corrected cc email behavior

commit 55ba6279a4
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 23 19:14:17 2024 +0100

    Use trans_choice on alert menu

    Signed-off-by: snipe <snipe@snipe.net>

commit a9eea830e3
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 23 19:05:34 2024 +0100

    Added manufacturer and model number to component seeders

    Signed-off-by: snipe <snipe@snipe.net>

commit af564935d5
Merge: d58f87862 3ee76be7e
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 23 17:56:04 2024 +0100

    Merge pull request #15720 from snipe/15695_adds_manufacturer_and_model_number_to_components

    Fixed #15695 - Added manufacturer and model_number to components

commit 3ee76be7e3
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 23 17:50:22 2024 +0100

    Added manufacturer and model_number to components

    Signed-off-by: snipe <snipe@snipe.net>

commit d58f87862c
Merge: 5da3ce356 0b6859c49
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 23 15:09:50 2024 +0100

    Merge pull request #15719 from snipe/#15717_adds_qty_to_consumable

    Fixed #15717 - Added ability to checkout consumables in variable qty via API

commit 0b6859c491
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 23 15:05:35 2024 +0100

    Added ability to checkout consumables in variable qty

    Signed-off-by: snipe <snipe@snipe.net>

commit 1e9922a0b0
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Oct 22 16:14:36 2024 -0700

    fix moar tests

commit ead27accac
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Oct 22 15:45:52 2024 -0700

    fixed accessory tests and notifiable target

commit 727c0e458c
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Oct 22 14:34:39 2024 -0700

    remove translation

commit 870dc747db
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Oct 22 14:27:32 2024 -0700

    oops

commit 0fb3d83fac
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Oct 22 14:26:54 2024 -0700

    revert controller change

commit 0d59ccd6a6
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Oct 22 14:23:26 2024 -0700

    upgraded livewire v3.5.9 => v3.5.12

commit 5da3ce3564
Merge: c3bbca30a 5ecd2b629
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 22:10:20 2024 +0100

    Merge pull request #15711 from marcusmoore/fixes/custom-fieldset-checkboxes

    Fixed custom field checkboxes on asset edit page

commit c3bbca30ad
Merge: dccb788a8 37f14fff3
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 22:07:50 2024 +0100

    Merge pull request #15710 from snipe/fixes_lightbox_for_avif

    Fixes #15701 - load avif files properly in lightbox

commit 37f14fff3b
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 22:07:28 2024 +0100

    Fixed typo

    Signed-off-by: snipe <snipe@snipe.net>

commit eb6c51fabd
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 22:04:57 2024 +0100

    Fixes #15701 - load avif files properly in lightbox

    Signed-off-by: snipe <snipe@snipe.net>

commit 5ecd2b6293
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Oct 22 14:04:05 2024 -0700

    Default checkbox elements to an empty array

commit 1e31592c55
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Oct 22 11:49:06 2024 -0700

    messing with the tests

commit dccb788a88
Merge: 5e1d792bb d10fe77ee
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 17:44:30 2024 +0100

    Merge pull request #15691 from marcusmoore/fixes/get-id-for-current-user

    Updated `Company::getIdForCurrentUser()` to return null in certain scenarios

commit d10fe77ee7
Merge: e1882ee6d 5e1d792bb
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Oct 22 09:38:31 2024 -0700

    Merge branch 'develop' into fixes/get-id-for-current-user

commit 5e1d792bba
Merge: 9cf71976f 780ed91a1
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 16:52:28 2024 +0100

    Merge pull request #15687 from NebelKreis/fix/dashboard-title-casing

    Fixed #15686: Corrected capitalization for dashboard section titles by removing strtolower()

commit 9cf71976f6
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 16:51:42 2024 +0100

    Fixed #15706 - Removed purchase order number from asset import

    Signed-off-by: snipe <snipe@snipe.net>

commit 15745d9737
Merge: bd97955b9 3f74ff25d
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 16:39:44 2024 +0100

    Merge pull request #15566 from Godmartinz/status-label-error-message

    Fixed Status Labels Error Message

commit bd97955b9e
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 16:38:46 2024 +0100

    Bumped hash

    Signed-off-by: snipe <snipe@snipe.net>

commit 252d99421c
Merge: 5767a98ad db8170162
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 16:26:48 2024 +0100

    Merge pull request #15689 from snipe/better_handle_inline_files

    Better handle inline files in file listing

commit 5767a98ad8
Merge: 0c820cbc0 524a44272
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 16:26:23 2024 +0100

    Merge pull request #15649 from bryanlopezinc/ImproveImporting

    Improve import performance

commit 0c820cbc0d
Merge: 147fcfb8e 3153bbb13
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 15:56:12 2024 +0100

    Merge pull request #15598 from spencerrlongg/bug/custom_field_validation_issue

    Custom Field Existence Validation Issue

commit db81701621
Merge: a05c33feb 147fcfb8e
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 15:44:24 2024 +0100

    Merge branch 'develop' into better_handle_inline_files

commit a05c33febf
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 15:43:19 2024 +0100

    Squashed commit of the following:

    commit 147fcfb8eb
    Merge: 58a3d09b5 fdcc17ca2
    Author: snipe <snipe@snipe.net>
    Date:   Tue Oct 22 15:12:55 2024 +0100

        Merge pull request #15676 from Toreg87/fixes/api_create_user_fmcs

        Fix user creation with FullMultipleCompanySupport enabled over API

    commit 58a3d09b5f
    Merge: 30a06a594 867fa2f36
    Author: snipe <snipe@snipe.net>
    Date:   Tue Oct 22 14:55:42 2024 +0100

        Merge pull request #15703 from marcusmoore/bug/sc-27188

        Linked accessory files in activity report

    commit 30a06a5942
    Merge: 6c6af78e0 ce3086317
    Author: snipe <snipe@snipe.net>
    Date:   Tue Oct 22 11:47:06 2024 +0100

        Merge pull request #15693 from marcusmoore/chore/remove-parallel-testing

        Removed brianium/paratest

    commit 6c6af78e08
    Merge: 9b06bbb6c 3f79fd7ea
    Author: snipe <snipe@snipe.net>
    Date:   Tue Oct 22 11:46:04 2024 +0100

        Merge pull request #15705 from marcusmoore/tests/icon-component-test

        Added test to ensure icon component does not end in newline

    commit 3f79fd7ea7
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Oct 21 17:07:40 2024 -0700

        Add test to ensure icon component does not end in newline

    commit 9b06bbb6c3
    Merge: 46ad1d072 d7f70146f
    Author: snipe <snipe@snipe.net>
    Date:   Mon Oct 21 22:38:26 2024 +0100

        Merge pull request #15704 from marcusmoore/bug/remove-extra-icon

        Removed second icon in accessory file list

    commit ce30863177
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Oct 21 13:57:04 2024 -0700

        Remove brianium/paratest dependency

    commit d7f70146f4
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Oct 21 13:48:25 2024 -0700

        Remove extra icon in accessory file upload list

    commit 867fa2f36e
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Oct 21 12:40:24 2024 -0700

        Display file in activity report for accessories

    commit 0933a2d4ea
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Oct 17 18:01:48 2024 -0700

        Remove --parallel flag

    commit 46ad1d072f
    Merge: bcb4bd9eb 3cf746d7d
    Author: snipe <snipe@snipe.net>
    Date:   Thu Oct 17 15:29:47 2024 +0100

        Merge pull request #15680 from uberbrady/bulk_checkout_to_bulk_actions

        Bulk checkout to bulk actions

    commit bcb4bd9eb4
    Merge: 250037540 f50ccbcc4
    Author: snipe <snipe@snipe.net>
    Date:   Thu Oct 17 10:20:13 2024 +0100

        Merge pull request #15683 from Toreg87/fixes/outdated_comment

        Fix outdated comment in CompanyableTrait

    commit f50ccbcc49
    Author: Tobias Regnery <tobias.regnery@gmail.com>
    Date:   Thu Oct 17 11:07:28 2024 +0200

        Fix outdated comment in CompanyableTrait

        As of commit 5800e8d the user model uses CompanyableTrait so remove this clearly outdated comment

    commit 3cf746d7df
    Author: Brady Wetherington <bwetherington@grokability.com>
    Date:   Wed Oct 16 23:13:32 2024 +0100

        Rework the bulk checkout to not change how all checkouts work

    commit 6b7af802af
    Author: Brady Wetherington <bwetherington@grokability.com>
    Date:   Thu Oct 10 13:28:23 2024 +0100

        Add 'bulk checkout' as one of the bulk actions in the bulk actions toolbar

    commit fdcc17ca2c
    Author: Tobias Regnery <tobias.regnery@gmail.com>
    Date:   Wed Oct 16 11:18:24 2024 +0200

        Fix user creation with FullMultipleCompanySupport enabled over API

        It is currently possible as a non-superuser to create a new user or patch an existing user with arbitrary company over the API if FullMultipleCompanySupport is enabled.
        Altough a highly unlikely scenario as the user needs permission to create API keys and new users, it is a bug that should get fixed.

        Add a call to getIdForCurrentUser() to normalize the company_id if FullMultipleCompanySupport is enabled.

    Signed-off-by: snipe <snipe@snipe.net>

commit 147fcfb8eb
Merge: 58a3d09b5 fdcc17ca2
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 15:12:55 2024 +0100

    Merge pull request #15676 from Toreg87/fixes/api_create_user_fmcs

    Fix user creation with FullMultipleCompanySupport enabled over API

commit 58a3d09b5f
Merge: 30a06a594 867fa2f36
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 14:55:42 2024 +0100

    Merge pull request #15703 from marcusmoore/bug/sc-27188

    Linked accessory files in activity report

commit 30a06a5942
Merge: 6c6af78e0 ce3086317
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 11:47:06 2024 +0100

    Merge pull request #15693 from marcusmoore/chore/remove-parallel-testing

    Removed brianium/paratest

commit 6c6af78e08
Merge: 9b06bbb6c 3f79fd7ea
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 11:46:04 2024 +0100

    Merge pull request #15705 from marcusmoore/tests/icon-component-test

    Added test to ensure icon component does not end in newline

commit 3f79fd7ea7
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Oct 21 17:07:40 2024 -0700

    Add test to ensure icon component does not end in newline

commit 9b06bbb6c3
Merge: 46ad1d072 d7f70146f
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 21 22:38:26 2024 +0100

    Merge pull request #15704 from marcusmoore/bug/remove-extra-icon

    Removed second icon in accessory file list

commit ce30863177
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Oct 21 13:57:04 2024 -0700

    Remove brianium/paratest dependency

commit d7f70146f4
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Oct 21 13:48:25 2024 -0700

    Remove extra icon in accessory file upload list

commit 867fa2f36e
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Oct 21 12:40:24 2024 -0700

    Display file in activity report for accessories

commit e1882ee6d2
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Oct 21 12:21:45 2024 -0700

    Add comment

commit 7eee239378
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Oct 21 12:20:28 2024 -0700

    use is_numeric instead of is_int

commit 4188849ae1
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Oct 21 12:19:48 2024 -0700

    Add failing test case

commit 787e651778
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 21 16:52:21 2024 +0100

    Fixed todos with log message

    Signed-off-by: snipe <snipe@snipe.net>

commit ef9b6e3b07
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 21 16:34:54 2024 +0100

    Code cleanup

    Signed-off-by: snipe <snipe@snipe.net>

commit 06c599cc17
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 21 16:34:03 2024 +0100

    Added method to show or download file

    Signed-off-by: snipe <snipe@snipe.net>

commit 6105323877
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 21 14:11:20 2024 +0100

    Use plural class name for src

    Signed-off-by: snipe <snipe@snipe.net>

commit 0933a2d4ea
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 17 18:01:48 2024 -0700

    Remove --parallel flag

commit a8d853c44a
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 17 15:26:27 2024 -0700

    Remove focus group tags

commit 7e1b47708e
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 17 15:18:41 2024 -0700

    Fix failing test ensuring company id is an integer

commit 979e4502ff
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 17 15:14:39 2024 -0700

    Have getIdForCurrentUser method return null if FMCS enabled, user is not super admin, and does not have company

commit ff113ef523
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 17 14:56:58 2024 -0700

    typo fix

commit 99dd51a965
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 17 14:53:18 2024 -0700

    Improve name

commit 15c2169477
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 17 14:31:05 2024 -0700

    Scaffold additional tests

commit 50fa6ce335
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 17 14:12:22 2024 -0700

    Scaffold tests

commit 7ae76e7db9
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 17 13:55:03 2024 -0700

    remove viewdata array from 3 tests

commit b98058ca98
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 17 13:48:26 2024 -0700

    fix tests pt 3

commit 83e8186d9e
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 17 13:39:56 2024 -0700

    fix assertSent to AssertNotSent on some test

commit cdd4fef7df
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 17 13:34:55 2024 -0700

    attempt to fix tests p2

commit dceb8e305f
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 17 13:11:39 2024 -0700

    attempt to fix tests

commit 123cdeb858
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 17 12:39:48 2024 -0700

    add email check to listener

commit 496b44e887
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 17 12:28:57 2024 -0700

    merged composer lock from dev

commit a690cc3582
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 17 12:26:55 2024 -0700

    removing my composer stuff again..for the last time

commit ceb3f5cea6
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 17 12:19:50 2024 -0700

    added mail-gun and http-client to 8.1

commit 65735a31f1
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 17 12:18:34 2024 -0700

    removed symfony/mailgun-mailer symfony/http-client

commit 285d6897cf
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 17 12:05:36 2024 -0700

    added a coulple test adjustments and moved mail send logic to listener

commit 159a1d3f43
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 17 11:48:55 2024 -0700

    Be more explicit

commit d1149730be
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 16:31:17 2024 +0100

    Apply blade component to files views

    Signed-off-by: snipe <snipe@snipe.net>

commit 46ad1d072f
Merge: bcb4bd9eb 3cf746d7d
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 15:29:47 2024 +0100

    Merge pull request #15680 from uberbrady/bulk_checkout_to_bulk_actions

    Bulk checkout to bulk actions

commit 780ed91a10
Author: NebelKreis <leipold.johannes@web.de>
Date:   Thu Oct 17 16:09:25 2024 +0200

    Fix: Removed strtolower() from dashboard titles

    This fix ensures the correct capitalization in different languages.

commit bcb4bd9eb4
Merge: 250037540 f50ccbcc4
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 10:20:13 2024 +0100

    Merge pull request #15683 from Toreg87/fixes/outdated_comment

    Fix outdated comment in CompanyableTrait

commit f50ccbcc49
Author: Tobias Regnery <tobias.regnery@gmail.com>
Date:   Thu Oct 17 11:07:28 2024 +0200

    Fix outdated comment in CompanyableTrait

    As of commit 5800e8d the user model uses CompanyableTrait so remove this clearly outdated comment

commit 9a79483375
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 16:59:18 2024 -0700

    removed namespaces from routing

commit ed6034065b
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 16:47:36 2024 -0700

    removed test route

commit a7754c1a7f
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 16:46:52 2024 -0700

    fixed asset checkout markdown, and notifiable variable

commit 0e9b3c9119
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 00:27:39 2024 +0100

    Check for existence before trying to get the icon

    Signed-off-by: snipe <snipe@snipe.net>

commit 4933aa5784
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 00:27:04 2024 +0100

    Add StorageHelper to app config

    Signed-off-by: snipe <snipe@snipe.net>

commit d67addc69e
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 00:21:43 2024 +0100

    Removed filetype column - it’s dumb

    Signed-off-by: snipe <snipe@snipe.net>

commit 02c80ff18a
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 00:18:40 2024 +0100

    Added comment

    Signed-off-by: snipe <snipe@snipe.net>

commit c01190fac2
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 00:18:34 2024 +0100

    Conditionally add content-type

    Signed-off-by: snipe <snipe@snipe.net>

commit 017884f843
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 00:09:09 2024 +0100

    Added checks and filetype display

    Signed-off-by: snipe <snipe@snipe.net>

commit c49921f50f
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 00:08:54 2024 +0100

    Removed unused (maybe?) API endpoint

    Signed-off-by: snipe <snipe@snipe.net>

commit c49abb6aea
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 00:08:38 2024 +0100

    Refactor the UserFilesController show method for simpler inlining

    Signed-off-by: snipe <snipe@snipe.net>

commit ccd2019448
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 00:08:04 2024 +0100

    Removed unusded use statements

    Signed-off-by: snipe <snipe@snipe.net>

commit 96191a5e93
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 00:07:54 2024 +0100

    Added method to decide if the file should be inlinable

    Signed-off-by: snipe <snipe@snipe.net>

commit c56affd663
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 00:07:37 2024 +0100

    Added SVG icon

    Signed-off-by: snipe <snipe@snipe.net>

commit 02bda3cd95
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 15:53:05 2024 -0700

    adds Checkout Consumable mailable and slackwebhook channel to notifs

commit 02ff646da4
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 15:44:45 2024 -0700

    adds checkin license mailable

commit 4becdca8aa
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 15:39:20 2024 -0700

    removes toMail from license notificaqtion

commit 2584d60344
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 15:38:49 2024 -0700

    adds Licenses seat checkout Mailable

commit f1d83a3f28
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 15:30:53 2024 -0700

    forgot to add asset checkout markdown to projet

commit c39df34bdf
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 15:29:50 2024 -0700

    forgot to add accessory mail to project

commit dcdf600b78
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 15:27:34 2024 -0700

    adds Checkin and Checkout mailables and listner logic

commit 3cf746d7df
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Oct 16 23:13:32 2024 +0100

    Rework the bulk checkout to not change how all checkouts work

commit 6b7af802af
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Thu Oct 10 13:28:23 2024 +0100

    Add 'bulk checkout' as one of the bulk actions in the bulk actions toolbar

commit 9710436d54
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 13:12:07 2024 -0700

    adds Mailables for asset checkin and out

commit 16cffe9a9d
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 12:53:35 2024 -0700

    simplified checkout webhook call

commit 9e1b86f586
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 12:51:19 2024 -0700

    sends checkout notification via webhook

commit 3ab2521cb0
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 12:21:33 2024 -0700

    email comes through, no picture and html markup appear though.

commit 604a964462
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Oct 16 11:52:24 2024 -0700

    Improve scenario descriptions

commit 2f72c66614
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Oct 16 11:30:06 2024 -0700

    Add additional case

commit fdcc17ca2c
Author: Tobias Regnery <tobias.regnery@gmail.com>
Date:   Wed Oct 16 11:18:24 2024 +0200

    Fix user creation with FullMultipleCompanySupport enabled over API

    It is currently possible as a non-superuser to create a new user or patch an existing user with arbitrary company over the API if FullMultipleCompanySupport is enabled.
    Altough a highly unlikely scenario as the user needs permission to create API keys and new users, it is a bug that should get fixed.

    Add a call to getIdForCurrentUser() to normalize the company_id if FullMultipleCompanySupport is enabled.

commit cba1a56040
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Oct 15 17:38:11 2024 -0700

    Improve readability?

commit d9afde4610
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Oct 15 17:00:22 2024 -0700

    Write failing test

commit 9f06a0e441
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Oct 15 14:01:28 2024 -0700

    handle some edge cases, null values clean up variable names

commit 42095c0167
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Oct 15 13:02:22 2024 -0700

    Add reference link

commit f8476f7133
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Oct 15 12:49:52 2024 -0700

    finished the construct and mail call in the listner

commit b29d032bf0
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Oct 15 11:28:27 2024 -0700

    adds checkoutAssetMail class, and content method

commit 2500375400
Merge: 16c8264e7 e4e1d0d50
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 15 17:34:35 2024 +0100

    Merge pull request #15672 from uberbrady/ldap_location_fixes

    Clean up how we use the '$location' in LDAP sync command

commit e4e1d0d50a
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Tue Oct 15 17:26:31 2024 +0100

    Clean up how we use the '$location' in LDAP sync command

commit 16c8264e76
Merge: 914a64720 0ae9ce0aa
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 15 16:42:34 2024 +0100

    Merge pull request #15671 from snipe/bug/sc-27147

    Bug/sc 27147

commit 0ae9ce0aa9
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 15 16:41:45 2024 +0100

    Cannot sort by updated at on Users [sc-27147]

    Signed-off-by: snipe <snipe@snipe.net>

commit 50b8f180b3
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 15 16:41:39 2024 +0100

    More logical grouping in allow_columns

    Signed-off-by: snipe <snipe@snipe.net>

commit 914a647204
Merge: 69b6080bd e9225ff3e
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 15 12:47:15 2024 +0100

    Merge pull request #15669 from snipe/remlove_ou_requirenedess

    Fixed #15663 - remove requiredness for OU

commit e9225ff3ea
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 15 12:43:10 2024 +0100

    Switch to regular HTML for input form field

    Signed-off-by: snipe <snipe@snipe.net>

commit d0d4159088
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 15 12:42:09 2024 +0100

    Fixed typo

    Signed-off-by: snipe <snipe@snipe.net>

commit 69b6080bd8
Merge: ddead359d b997d728f
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 15 10:31:29 2024 +0100

    Merge pull request #15666 from snipe/updated_readme_llm

    Added LLM note

commit b997d728fb
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 15 10:30:34 2024 +0100

    Added LLM note

    Signed-off-by: snipe <snipe@snipe.net>

commit ddead359d0
Merge: 0d35335da f3c4e5566
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 14 14:29:34 2024 +0100

    Merge pull request #15660 from Toreg87/fixes/api_asset_create_fmcs2

    Refactor asset creation with API

commit f3c4e55667
Author: Tobias Regnery <tobias.regnery@gmail.com>
Date:   Mon Oct 14 15:14:41 2024 +0200

    Refactor asset creation with API

    Commit fb4fe3004 restored the previous behaviour to check the company_id in case of FullMultipleCompanySupport.
    But after rereading the code and the laravel documentation, the check is already there where it belongs in AssetStoreRequest::prepareForValidation()
    The bug is the is_int-check of the request input in prepareForValidation(). Is is of type string even if it is a numeric value, so the call to getIdForCurrentUser() never happend.
    Fix this by removing the check and the now redundant call to getIdForCurrentUser().
    Wrong values will get caught by the model-level validation rules.

commit 0d35335da7
Author: snipe <snipe@snipe.net>
Date:   Fri Oct 11 16:06:17 2024 +0100

    Removed debugging

    Signed-off-by: snipe <snipe@snipe.net>

commit feaa714304
Author: snipe <snipe@snipe.net>
Date:   Fri Oct 11 14:23:57 2024 +0100

    Nicer disabled button

    Signed-off-by: snipe <snipe@snipe.net>

commit e1a70023b1
Merge: de62359c6 fb4fe3004
Author: snipe <snipe@snipe.net>
Date:   Fri Oct 11 11:45:48 2024 +0100

    Merge pull request #15655 from Toreg87/fixes/api_asset_create_fmcs

    Fixes #15654 Fix asset creation with API and FullMultipleCompanySupport

commit de62359c67
Merge: 12bda8fc7 3dc64cc5e
Author: snipe <snipe@snipe.net>
Date:   Fri Oct 11 11:29:34 2024 +0100

    Merge pull request #15533 from marcusmoore/testing/fmcs-accessories

    Added tests for accessory api controller

commit 12bda8fc7b
Merge: 8aa298f6b b054017c9
Author: snipe <snipe@snipe.net>
Date:   Fri Oct 11 11:27:18 2024 +0100

    Merge pull request #15653 from snipe/15651_admin_user_on_maintenances

    Fixed #15651 - admin user now displaying on maintenances page

commit fb4fe30049
Author: Tobias Regnery <tobias.regnery@gmail.com>
Date:   Fri Oct 11 12:09:09 2024 +0200

    Fix asset creation with API and FullMultipleCompanySupport

    It is currently possible to create an asset with arbitrary company without being superuser and FullMultipleCompanySupport enabled.
    This bug goes back to 75ac7f80b9 which is part of version 6.3.0.
    Fix this by restoring the previous behaviour to check the company_id with getIdForCurrentUser().

commit b054017c9f
Author: snipe <snipe@snipe.net>
Date:   Fri Oct 11 11:16:24 2024 +0100

    Fixed #15651 - admin user now displaying on maintenances page

    Signed-off-by: snipe <snipe@snipe.net>

commit 524a442724
Author: bryanlopezinc <bryanlopez2kul2@yahoo.com>
Date:   Thu Oct 10 23:32:07 2024 +0100

    Improved import performance

commit 8aa298f6b0
Merge: 1f3465773 b5b93fdd3
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 10 12:30:53 2024 +0100

    Merge pull request #15644 from snipe/form_requests_for_settings

    Form requests for settings

commit 1f34657734
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 10 12:30:35 2024 +0100

    Fixed test

    Signed-off-by: snipe <snipe@snipe.net>

commit 0856ee648e
Merge: 94a074a19 1dafc970d
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 10 12:23:14 2024 +0100

    Merge pull request #15648 from snipe/update_packages

    Updated livewire to 3.5.2

commit 1dafc970df
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 10 12:19:57 2024 +0100

    Updated livewire to 3.5.2

    Signed-off-by: snipe <snipe@snipe.net>

commit 94a074a193
Merge: 2d49e1eff b34a7c8aa
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 10 01:11:10 2024 +0100

    Merge pull request #15601 from snipe/check_db_on_healthcheck

    Fixed #15439 - check database on healthcheck

commit 2d49e1eff2
Merge: 705bc6f0c c2663ea1e
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 10 01:09:11 2024 +0100

    Merge pull request #15637 from akemidx/bug/sc-26614

    FIXED: Badge counter showing deleted assets on User page

commit 705bc6f0c0
Merge: 3ee571374 67a605c9a
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 10 01:08:25 2024 +0100

    Merge pull request #15642 from uberbrady/fix_bulk_checkout

    Fix bulk checkout to users, assets, and locations

commit b5b93fdd3a
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 10 00:27:00 2024 +0100

    Make ldap username required

    Signed-off-by: snipe <snipe@snipe.net>

commit d9432baf7a
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 23:51:20 2024 +0100

    Mlore ldap style improvements

    Signed-off-by: snipe <snipe@snipe.net>

commit 90be2a4498
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 22:26:30 2024 +0100

    Use newer naming convention for errors

    Signed-off-by: snipe <snipe@snipe.net>

commit 3886da8941
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 22:15:49 2024 +0100

    Remove form request from get LDAP method

    Signed-off-by: snipe <snipe@snipe.net>

commit 130e0c6242
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 22:15:37 2024 +0100

    More validation

    Signed-off-by: snipe <snipe@snipe.net>

commit 4361a10818
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 22:15:30 2024 +0100

    Added string

    Signed-off-by: snipe <snipe@snipe.net>

commit aa8048ac15
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 22:15:25 2024 +0100

    Blade changes for ldap

    Signed-off-by: snipe <snipe@snipe.net>

commit 710e738e8e
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 22:15:16 2024 +0100

    Fixed tests

    Signed-off-by: snipe <snipe@snipe.net>

commit 3705b91439
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 20:51:34 2024 +0100

    Added more validation

    Signed-off-by: snipe <snipe@snipe.net>

commit 707bdad192
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 20:33:56 2024 +0100

    Updated test

    Signed-off-by: snipe <snipe@snipe.net>

commit 242fe33f97
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 20:33:42 2024 +0100

    Switch to regular HTML input

    Signed-off-by: snipe <snipe@snipe.net>

commit ded79469c1
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 20:33:29 2024 +0100

    Remove unused controller method

    Signed-off-by: snipe <snipe@snipe.net>

commit d9fbf330e5
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 20:33:15 2024 +0100

    Fixed translations

    Signed-off-by: snipe <snipe@snipe.net>

commit 2cb9ac26cd
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 19:57:04 2024 +0100

    Renamed test

    Signed-off-by: snipe <snipe@snipe.net>

commit 185bc966e6
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 19:46:47 2024 +0100

    Cleaned up use statements in tests

    Signed-off-by: snipe <snipe@snipe.net>

commit a7f7e4938f
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 19:31:56 2024 +0100

    Added form action

    Signed-off-by: snipe <snipe@snipe.net>

commit 2883e79193
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 19:30:55 2024 +0100

    Removed unecessary assets creation

    Signed-off-by: snipe <snipe@snipe.net>

commit 9c4191ae0a
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 19:30:42 2024 +0100

    Basic tests

    Signed-off-by: snipe <snipe@snipe.net>

commit 3a77b83e9c
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 19:30:34 2024 +0100

    Added space

    Signed-off-by: snipe <snipe@snipe.net>

commit d9be2b5a5e
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 19:30:25 2024 +0100

    Trying to use the email_array translation

    Signed-off-by: snipe <snipe@snipe.net>

commit 69c43c610c
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 19:30:00 2024 +0100

    Fixed typo

    Signed-off-by: snipe <snipe@snipe.net>

commit 4f957bcf71
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 18:34:53 2024 +0100

    Required flag

    Signed-off-by: snipe <snipe@snipe.net>

commit 5cda7cce48
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 18:21:40 2024 +0100

    Only accept a positive number for thresholds

    Signed-off-by: snipe <snipe@snipe.net>

commit 41b94e7128
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 18:19:26 2024 +0100

    Fixed form input group

    Signed-off-by: snipe <snipe@snipe.net>

commit aa55fa6ff4
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 18:16:34 2024 +0100

    Switch to form requests for settings

    Signed-off-by: snipe <snipe@snipe.net>

commit 67a605c9a5
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Oct 9 17:01:26 2024 +0100

    Fix bulk checkout to users, assets, and locations

commit c2663ea1e0
Author: akemidx <kojotek.dx@gmail.com>
Date:   Tue Oct 8 16:38:33 2024 -0400

    withouttrashed

commit 3ee5713740
Merge: ab8a22f77 56e7ea667
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 7 23:13:15 2024 +0100

    Merge pull request #15631 from snipe/test/importer-tests

    Add importer tests

commit ab8a22f77e
Merge: 26d7572bc 8c9132aff
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 7 22:56:23 2024 +0100

    Merge pull request #15630 from marcusmoore/bug/sc-27028

    Only show EULA when available on print users page

commit 56e7ea6677
Merge: 32551d55d 803532667
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 7 22:29:35 2024 +0100

    Merge pull request #15616 from marcusmoore/test/importer-test-updates

    Improve importer tests

commit 26d7572bcc
Merge: 382ebef8c ee046a868
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 7 22:28:53 2024 +0100

    Merge pull request #15603 from marcusmoore/fixes/add-reguard

    Added `Model::reguard()` to importer

commit 8c9132aff9
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Oct 7 14:22:49 2024 -0700

    Hide EULA text and button when nothing will be displayed

commit 382ebef8ca
Merge: 2be88cb95 f76da4844
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 7 21:26:21 2024 +0100

    Merge pull request #15621 from sniff122/develop

    Docker Env: Change trusted proxies to RFC1918

commit 2be88cb955
Merge: 7fc498a59 3f36d5f9b
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 7 11:14:24 2024 +0100

    Merge pull request #15624 from snipe/fixed_line_break_on_print_all_for_users

    Removed duplicate JS and removed line break before user section

commit 3f36d5f9b3
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 7 11:08:02 2024 +0100

    Removed duplicate CSS and removed line break before user section

    Signed-off-by: snipe <snipe@snipe.net>

commit f76da48448
Author: Lewis Foster <lewis@sniff122.tech>
Date:   Sat Oct 5 18:27:42 2024 +0100

    Docker Env: Change trusted proxies to RFC1918

commit 8035326675
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 3 16:53:19 2024 -0700

    Add test

commit dfdd85abb1
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 3 15:14:07 2024 -0700

    Remove unused imports

commit 063ea1892b
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 3 15:02:03 2024 -0700

    Add trait to clean up files after test runs

commit e213053775
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 3 13:59:58 2024 -0700

    Swap factory syntax

commit 88d549e7c5
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 3 13:40:37 2024 -0700

    Remove unused data provider method

commit 983a25aa5f
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 3 13:39:54 2024 -0700

    Simplify permission tests

commit bde05d6ed9
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 3 13:15:49 2024 -0700

    Use new() instead of times()

commit b5ffe54bd0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 3 13:15:02 2024 -0700

    Swap assertEquals parameter order

commit 863c0a8b60
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 3 11:43:02 2024 -0700

    Fix import_type for accessory state

commit 32551d55d7
Merge: 7fc498a59 e807cfab8
Author: Marcus Moore <mmoore@grokability.com>
Date:   Thu Oct 3 11:39:21 2024 -0700

    Merge pull request #15579 from bryanlopezinc/ImportTests

    Add Import data tests

commit 7fc498a597
Merge: 78ca1026f cb281c640
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 3 17:39:18 2024 +0100

    Merge pull request #15613 from snipe/css_fixes_for_long_values

    Smarter word-wrapping on long text

commit cb281c6408
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 3 17:33:46 2024 +0100

    Tweaked line height

    Signed-off-by: snipe <snipe@snipe.net>

commit f483cd448f
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 3 17:27:37 2024 +0100

    Smarter work-wrapping on long text

    Signed-off-by: snipe <snipe@snipe.net>

commit 78ca1026fd
Merge: 3699d7936 722d5a58e
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 3 16:24:32 2024 +0100

    Merge pull request #15612 from snipe/fixes_print_assigned_in_profile

    Fixes print assigned in profile

commit 722d5a58e7
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 3 16:19:38 2024 +0100

    Added isset on users

    Signed-off-by: snipe <snipe@snipe.net>

commit 7461c3e0ca
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 3 16:19:27 2024 +0100

    Change controller to assume a collection. (This is dumb, but whatever)

    Signed-off-by: snipe <snipe@snipe.net>

commit 3c0f4181ae
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 3 16:19:06 2024 +0100

    Use the newer button style

    Signed-off-by: snipe <snipe@snipe.net>

commit 3699d79363
Merge: 54fbd0540 350b627ce
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 3 14:34:00 2024 +0100

    Merge pull request #15610 from uberbrady/fix_numeric_sort_bug

    Fix numeric sort 'ambiguous order clause' error

commit 350b627ce1
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Thu Oct 3 14:23:40 2024 +0100

    Fix numeric sort 'ambiguous order clause' error

commit ee046a8688
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Oct 2 10:50:40 2024 -0700

    Add matching Model::reguard()

commit b34a7c8aad
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 2 15:48:35 2024 +0100

    Removed die()

    Signed-off-by: snipe <snipe@snipe.net>

commit f92bf5dc20
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 2 15:39:27 2024 +0100

    Updated language for failure

    Signed-off-by: snipe <snipe@snipe.net>

commit 4d9e85026a
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 2 15:36:01 2024 +0100

    Fixed #15439 - check database on healthcheck

    Signed-off-by: snipe <snipe@snipe.net>

commit 54fbd0540d
Merge: b483bb163 4db735808
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 2 12:40:49 2024 +0100

    Merge branch 'develop' of https://github.com/snipe/snipe-it into develop

commit b483bb1633
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 2 12:40:45 2024 +0100

    Bumped version

    Signed-off-by: snipe <snipe@snipe.net>

commit 4db7358086
Merge: 0dd6f41f6 b9cfdf2e5
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 2 12:38:46 2024 +0100

    Merge pull request #15593 from Godmartinz/Fixed-divide-by-zero-bug

    Fixed divide by zero bug in depreciation transformer

commit 0dd6f41f66
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 2 11:04:55 2024 +0100

    Simplified 2fa if/else

    Signed-off-by: snipe <snipe@snipe.net>

commit 684c20ae39
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 2 11:00:49 2024 +0100

    Fixed parenthasis

    Signed-off-by: snipe <snipe@snipe.net>

commit 3153bbb13f
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Tue Oct 1 17:04:18 2024 -0500

    dumb fix

commit 3dc64cc5e0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Oct 1 13:35:39 2024 -0700

    Reference accessory checkout and not the accessory

commit c32f4e34b4
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 1 20:35:49 2024 +0100

    Minor formatting fix

    Signed-off-by: snipe <snipe@snipe.net>

commit ca1886cebc
Merge: 45ab49eea a79dfea40
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 1 20:31:38 2024 +0100

    Merge pull request #15594 from snipe/localizations/update-2024-10-01

    Updated strings

commit a79dfea40a
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 1 20:30:58 2024 +0100

    Updated strings

    Signed-off-by: snipe <snipe@snipe.net>

commit 45ab49eeab
Merge: 97d00e5aa 8232618a9
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 1 20:26:42 2024 +0100

    Merge pull request #15592 from spencerrlongg/bug/catch_request_notify_errors

    Catch Errors Around Request Notifications

commit 8232618a9f
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Tue Oct 1 14:26:32 2024 -0500

    change the other one too

commit 9a651b567d
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Tue Oct 1 14:24:03 2024 -0500

    change error to warning

commit 97d00e5aa8
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 1 20:08:54 2024 +0100

    Fixed erroneous form tag on anchor

    Signed-off-by: snipe <snipe@snipe.net>

commit 5b90d79494
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Oct 1 11:50:48 2024 -0700

    Use created_by

commit b9cfdf2e54
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Oct 1 11:41:59 2024 -0700

    reworked monthly depreciation variable value

commit 1139acd9f3
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Tue Oct 1 13:36:47 2024 -0500

    catch errors around request notifications

commit b7ad80bd31
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Oct 1 11:24:24 2024 -0700

    fix monthly depreciation value

commit 5ffd1b8daa
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Oct 1 11:02:39 2024 -0700

    fixes if statement in transformer

commit 9a2117466e
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 1 18:23:40 2024 +0100

    Removed placeholder

    Signed-off-by: snipe <snipe@snipe.net>

commit 7e3a062984
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 1 18:23:07 2024 +0100

    Use <th> for table header in bulk interstitial

    Signed-off-by: snipe <snipe@snipe.net>

commit d274fb6963
Merge: cfc04a1d1 27ba641aa
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 1 14:32:48 2024 +0100

    Merge pull request #15589 from snipe/adds_checkin_action_on_asset_delete

    Adds checkin action on asset delete via View UI

commit 27ba641aa5
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 1 14:30:34 2024 +0100

    Added checkin on delete to API

    Signed-off-by: snipe <snipe@snipe.net>

commit 5823197e6f
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 1 14:29:02 2024 +0100

    Added checkin action on delete for checked out assets

    Signed-off-by: snipe <snipe@snipe.net>

commit cfc04a1d12
Merge: 12da43303 cae8aa784
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 1 14:08:58 2024 +0100

    Merge pull request #15588 from snipe/added_more_maxlengths

    Added maxlengths to additional fields

commit cae8aa7840
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 1 14:02:54 2024 +0100

    Added maxlengths to additional fields

    Signed-off-by: snipe <snipe@snipe.net>

commit 12da43303f
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 1 01:44:05 2024 +0100

    Fixed #15584 - regression with required css change

    Signed-off-by: snipe <snipe@snipe.net>

commit fdfea390fb
Merge: d609ed50a 5689e940b
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 30 12:59:27 2024 -0700

    Merge branch 'develop' into testing/fmcs-accessories

commit b04afbbc85
Merge: b964ce102 3f311ba2f
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 30 19:26:08 2024 +0100

    Merge pull request #15564 from uberbrady/improve_autoclose

    Get us better debugging output for new Github Stale Action

commit b964ce1025
Merge: 6217cba20 68e3f375f
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 30 19:25:05 2024 +0100

    Merge pull request #15583 from Godmartinz/remove-sortable-from-depreciations

    Removed sortablity for current value column in depreciations report

commit 6217cba201
Merge: 5689e940b b32ab6a06
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 30 19:24:19 2024 +0100

    Merge pull request #15524 from Godmartinz/double-notif-bug

    Fixed double webhook notifications // Separated email and webhook notifications.

commit 68e3f375fc
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Sep 30 11:15:49 2024 -0700

    removes sortablity from current value column

commit 5689e940b8
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 30 18:23:12 2024 +0100

    Fixed #15581 - missing bracker

    Signed-off-by: snipe <snipe@snipe.net>

commit e807cfab86
Merge: 0b3f45856 001348c63
Author: bryanlopezinc <bryanlopez2kul2@yahoo.com>
Date:   Mon Sep 30 12:47:52 2024 +0100

    Merge branch 'develop' into importTests

commit 0b3f458561
Author: bryanlopezinc <bryanlopez2kul2@yahoo.com>
Date:   Mon Sep 30 12:42:41 2024 +0100

    Added tests for Import feature

commit 001348c638
Author: snipe <snipe@snipe.net>
Date:   Sun Sep 29 14:33:42 2024 +0100

    Unset required on checkout select :(

    Related to the discussion at #15552

    Signed-off-by: snipe <snipe@snipe.net>

commit 1b041af862
Merge: 260b15368 d120585f9
Author: snipe <snipe@snipe.net>
Date:   Sun Sep 29 11:25:01 2024 +0100

    Merge remote-tracking branch 'origin/master' into develop

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	public/css/build/app.css
    #	public/css/build/overrides.css
    #	public/css/dist/all.css
    #	public/mix-manifest.json

commit 260b153689
Merge: 36b27fcda 05d74f7a9
Author: snipe <snipe@snipe.net>
Date:   Sat Sep 28 16:09:51 2024 +0100

    Merge pull request #15573 from snipe/fixed_requiredness_indicator

    Fixes for requiredness indicator in UI

commit 05d74f7a92
Author: snipe <snipe@snipe.net>
Date:   Sat Sep 28 15:42:03 2024 +0100

    Covered setup pages too

    Signed-off-by: snipe <snipe@snipe.net>

commit dc85588d7f
Author: snipe <snipe@snipe.net>
Date:   Sat Sep 28 15:31:44 2024 +0100

    Don’t show password as required if editing

    Signed-off-by: snipe <snipe@snipe.net>

commit 585f998cae
Author: snipe <snipe@snipe.net>
Date:   Sat Sep 28 15:28:06 2024 +0100

    Fixes for requiredness display

    Signed-off-by: snipe <snipe@snipe.net>

commit d120585f94
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 27 14:07:30 2024 +0100

    Check for valid eula for license, consumable

    Signed-off-by: snipe <snipe@snipe.net>

commit 166a700342
Merge: 6c85ba349 36b27fcda
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 27 13:37:28 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 36b27fcda3
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 27 13:37:14 2024 +0100

    Check for valid category before getting the eula

    Signed-off-by: snipe <snipe@snipe.net>

commit a44490e448
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 27 13:07:24 2024 +0100

    Nowrap on files column

    Signed-off-by: snipe <snipe@snipe.net>

commit 9aada2ec70
Merge: ac6411743 ef82f954e
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 26 09:09:35 2024 +0100

    Merge pull request #15498 from Godmartinz/Modal_fix

    Refactoring modals with partials and fixing misalignments

commit 3f74ff25d2
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Sep 25 16:19:09 2024 -0700

    fixed error message

commit ef82f954e5
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Sep 25 15:47:57 2024 -0700

    fixed required css, and user input lengths

commit 3f311ba2fb
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Sep 25 21:27:45 2024 +0100

    Get us better debugging output for new Github Stale Action

commit 96953aa2ed
Merge: e609b3976 b797c37ac
Author: Godfrey Martinez <47435081+Godmartinz@users.noreply.github.com>
Date:   Wed Sep 25 12:50:01 2024 -0700

    Merge pull request #23 from Godmartinz/Modal_fix_p3

    replace duplicate code with partials

commit b797c37acb
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Sep 25 12:48:05 2024 -0700

    replace duplicate code with partials

commit 6c85ba3495
Merge: 9f8473e25 ac6411743
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 20:45:02 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit ac6411743b
Merge: 9b03f4649 3f0245f88
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 20:35:58 2024 +0100

    Merge pull request #15563 from snipe/refined_gates_on_user_bulk

    Update for #15534 - Refined gates on user bulk

commit 3f0245f88f
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 20:33:00 2024 +0100

    Make controller gate match dropdown gate

    Signed-off-by: snipe <snipe@snipe.net>

commit c02647a0fa
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 20:32:03 2024 +0100

    Moved merge into delete gate, since they do technically delete

    Signed-off-by: snipe <snipe@snipe.net>

commit edca3f432c
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 20:30:58 2024 +0100

    Removed gate for delete

    Signed-off-by: snipe <snipe@snipe.net>

commit 2218c94aa3
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 20:29:23 2024 +0100

    Gates the dropdown based on user permissions

    Signed-off-by: snipe <snipe@snipe.net>

commit e609b39760
Merge: 0bc98e971 12522a379
Author: Godfrey Martinez <47435081+Godmartinz@users.noreply.github.com>
Date:   Wed Sep 25 12:09:26 2024 -0700

    Merge pull request #22 from Godmartinz/Modal_fix_p2

    Modal fix p2

commit 12522a3791
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Sep 25 12:07:15 2024 -0700

    fix spacing issues

commit f6d7ea19e4
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 19:44:39 2024 +0100

    Set view as base permission, drill down for more intrusive actions

    Signed-off-by: snipe <snipe@snipe.net>

commit 18ddffe8f9
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Sep 25 11:42:16 2024 -0700

    fix partial variable intialization, fix width of input fields

commit 9b03f46490
Merge: cb6e5042d fac4833b5
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 19:32:01 2024 +0100

    Merge pull request #15534 from marcusmoore/bulk-print-users

    Added the ability to bulk print users

commit 926a319552
Merge: 0bc98e971 cb6e5042d
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Sep 25 11:10:24 2024 -0700

    Merge branch 'develop' into Modal_fix_p2

commit 9f8473e254
Merge: 0e61d0b19 cb6e5042d
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 18:36:40 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit cb6e5042d9
Merge: c1a887b48 ba69259f2
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 18:32:59 2024 +0100

    Merge pull request #15547 from snipe/disallow_checkout_with_nondeployable_status

    Fixed #13396 - do not allow checkout to undeployable status types

commit c1a887b48b
Merge: ba1220484 658c94ad8
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 18:32:21 2024 +0100

    Merge pull request #15561 from snipe/fixes/adds_action_date_to_sorting

    Changed `action_date` to `created_at` in activity report

commit 658c94ad8b
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 17:25:15 2024 +0100

    Changed action_date to created_at

    Signed-off-by: snipe <snipe@snipe.net>

commit 0e61d0b195
Merge: abdddbec4 ba1220484
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 15:51:38 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit ba12204842
Merge: eeabc8dc9 1c3babaca
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 15:51:14 2024 +0100

    Merge pull request #15555 from snipe/fixes/user_file_upload

    Fixed case on `$logAction` for user file upload

commit 1c3babacaf
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 15:46:57 2024 +0100

    Fixed case on logAction for usewr file upload

    Signed-off-by: snipe <snipe@snipe.net>

commit abdddbec44
Merge: a425c2b76 eeabc8dc9
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 11:58:25 2024 +0100

    Merge remote-tracking branch 'origin/develop'

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	public/css/build/app.css
    #	public/css/build/overrides.css
    #	public/css/dist/all.css
    #	public/mix-manifest.json

commit eeabc8dc9d
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 11:33:45 2024 +0100

    Dev assets

    Signed-off-by: snipe <snipe@snipe.net>

commit 21f8ac8e52
Merge: c38222e95 2a2666be0
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 11:31:23 2024 +0100

    Merge pull request #15552 from Godmartinz/ragged-form-inputs

    Fixed input field misalignments

commit a425c2b765
Merge: 34eb10ff7 c38222e95
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 10:52:19 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 2a2666be0b
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Sep 24 13:24:50 2024 -0700

    makes required a pseudo field

commit c38222e956
Merge: 8cf1e4dce 0ce5832b6
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 24 18:10:53 2024 +0100

    Merge pull request #15549 from snipe/fixes/#15548_unify_audit_api_endpoints

    Fixes #15548 - unify audit api endpoints

commit 0ce5832b6c
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 24 17:29:40 2024 +0100

    Removed debugging

    Signed-off-by: snipe <snipe@snipe.net>

commit b6340532d7
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Tue Sep 24 17:15:39 2024 +0100

    Improve the error and success messages and linking

commit 5fb43dd159
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 24 16:55:56 2024 +0100

    Handle `audit` *and* `audits` for urls

    Signed-off-by: snipe <snipe@snipe.net>

commit de57d71bf1
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 24 16:30:24 2024 +0100

    Fixed #15548 - unify audit due/overdue APIs

    Signed-off-by: snipe <snipe@snipe.net>

commit ba69259f2d
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 24 15:35:00 2024 +0100

    Fixed #13396 - do not allow checkout to undeployable status types

    Signed-off-by: snipe <snipe@snipe.net>

commit c71411465a
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Tue Sep 24 15:17:35 2024 +0100

    First pass at better-handling those annoying Rollbars we keep getting

commit 8cf1e4dceb
Merge: ab0c009c0 66249a37e
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 24 11:10:20 2024 +0100

    Merge pull request #15544 from snipe/bug/sc-26855

    Fixed app settings view on mobile

commit 66249a37ed
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 24 11:08:31 2024 +0100

    Tweaked styles

    Signed-off-by: snipe <snipe@snipe.net>

commit 96712cb398
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 24 10:55:26 2024 +0100

    Fixed app settings view on mobile

    Signed-off-by: snipe <snipe@snipe.net>

commit fac4833b58
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 23 17:15:16 2024 -0700

    Remove unused import

commit a12c9d053f
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 23 16:44:25 2024 -0700

    Hide label when printing

commit 8b3b68b308
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 23 16:43:14 2024 -0700

    Show or hide all eulas at once when printing multiple users

commit 4b02db5031
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 23 16:26:22 2024 -0700

    Add authorization check in bulk users controller

commit ab90c0cf05
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 23 16:10:40 2024 -0700

    Add missing eager load in bulk users controller

commit cef7ddc719
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 23 16:10:21 2024 -0700

    Add eager loads to userscontroller

commit 3870095a28
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 23 15:50:24 2024 -0700

    Fix Cannot read properties of undefined error by removing snipe-table class from eula table

commit a02e250b22
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 23 15:26:15 2024 -0700

    Add page breaks for each user

commit 8ac5c0e471
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 23 14:05:47 2024 -0700

    Re-combine layout and view

commit a2d4dcf6e8
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 23 12:49:36 2024 -0700

    Use bulk actions menu

commit 54044bfa5e
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 23 10:57:57 2024 -0700

    Add eager loads

commit e493cc964d
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 23 10:48:07 2024 -0700

    Remove AssetCountForSidebar middleware from print view

commit 29af210f4f
Merge: 5128fd49e ab0c009c0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 23 10:26:20 2024 -0700

    Merge branch 'develop' into bulk-print-users

commit 34eb10ff73
Merge: 7d7d58769 ab0c009c0
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 19:45:20 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit ab0c009c0d
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 19:45:10 2024 +0100

    Fixed seeder

    Signed-off-by: snipe <snipe@snipe.net>

commit 7d7d58769c
Merge: 245d5dc46 b68805cf8
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 19:13:00 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit b68805cf83
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 19:11:52 2024 +0100

    Small fix for notifications checkout

    Signed-off-by: snipe <snipe@snipe.net>

commit 245d5dc469
Merge: 4ab478bb9 7d858129d
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 17:28:15 2024 +0100

    Merge remote-tracking branch 'origin/develop'

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	config/version.php

commit 7d858129d9
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 14:44:19 2024 +0100

    Bumped hash

    Signed-off-by: snipe <snipe@snipe.net>

commit 65ce63bc9b
Merge: 5eea9d195 54fba2f54
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 14:42:07 2024 +0100

    Merge pull request #15537 from snipe/snyk/updated_jspdf_autotable

    Updated jspdf autotable

commit 54fba2f547
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 14:40:41 2024 +0100

    Update jspdf autotable

    Signed-off-by: snipe <snipe@snipe.net>

commit 5eea9d1950
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 14:33:56 2024 +0100

    Corrected text warning translation

    Signed-off-by: snipe <snipe@snipe.net>

commit b84a634ec7
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 14:33:35 2024 +0100

    Corrected comment

    Signed-off-by: snipe <snipe@snipe.net>

commit 2fc88a0e08
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 14:33:26 2024 +0100

    Eager load adminuser

    Signed-off-by: snipe <snipe@snipe.net>

commit bc540b6564
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 14:02:28 2024 +0100

    Requestable status not saving with manual [sc-26848]

    Signed-off-by: snipe <snipe@snipe.net>

commit f53b852dff
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 13:53:52 2024 +0100

    Make created_by equal one in the seeder

    Signed-off-by: snipe <snipe@snipe.net>

commit b83d1a043f
Merge: cdb7ccb8f b21c303e5
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 13:47:31 2024 +0100

    Merge pull request #15519 from snipe/features/add_created_at_created_by

    Change `user_id` to `created_by`

commit 4ab478bb97
Merge: d96c5e1ba cdb7ccb8f
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 13:44:45 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit b21c303e56
Merge: b88f2054d cdb7ccb8f
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 13:43:50 2024 +0100

    Merge remote-tracking branch 'origin/develop' into features/add_created_at_created_by

commit 5128fd49e6
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 19 17:27:25 2024 -0700

    Allow printing all users

commit 2d2d5bdc7e
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 19 17:23:47 2024 -0700

    Pass user in array

commit 8364d26c9b
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 19 17:18:26 2024 -0700

    Extract parent layout

commit efd6d7625f
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 19 17:16:05 2024 -0700

    Remove bad closing tag

commit bdf5708bfc
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 19 17:10:43 2024 -0700

    Remove accidental line

commit e95703cb18
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 19 17:10:07 2024 -0700

    Use eager load

commit 7ad4a29970
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 19 16:54:39 2024 -0700

    Add eager loading

commit cdb7ccb8f3
Merge: 8270947ed d446773fd
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 21:54:03 2024 +0100

    Merge pull request #15532 from spencerrlongg/bug/15253

    Catch Exceptions on Checkout Notification

commit 8270947ed2
Merge: 4f7c8e0c3 8e1111c68
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 21:49:27 2024 +0100

    Merge pull request #13291 from akemidx/eol_date_range_for_reports

    Added date range for EOL in custom reports

commit 4f7c8e0c3d
Merge: d7bde3784 3ea5d4ee4
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 21:36:09 2024 +0100

    Merge pull request #14671 from Robert-Azelis/patch-6

    [FIX] Update EOL date when used bulk update of purchase date

commit d609ed50a4
Merge: d639d6fbc d7bde3784
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 19 13:20:55 2024 -0700

    Merge branch 'develop' into testing/fmcs-accessories

commit b88f2054dd
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 20:38:34 2024 +0100

    Refactor isDeletable on companies

    Signed-off-by: snipe <snipe@snipe.net>

commit d7914e238d
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 20:34:54 2024 +0100

    Added created by to company on save

    Signed-off-by: snipe <snipe@snipe.net>

commit d7bde37842
Merge: 454796e52 4facc4007
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 20:33:10 2024 +0100

    Merge pull request #15507 from setpill/setpill/feat/use_explicit_attributes_in_ldap_sync

    Added #15506: Explicitly request used LDAP attributes

commit 454796e52a
Merge: eef487d61 7c85ad54e
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 20:32:03 2024 +0100

    Merge pull request #15518 from snipe/sort_by_numeric_custom_fields

    Fixed #11634 - Sort by numeric columns for numeric custom fields

commit eef487d61b
Merge: dddbf27d7 71dbc7abb
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 20:31:02 2024 +0100

    Merge pull request #15531 from Godmartinz/status-doesnt-update-in-email

    Fixed mail notification field `status label` not updating

commit 71dbc7abb0
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Sep 19 12:23:07 2024 -0700

    refreshed the assetstatus relationship

commit d639d6fbc1
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 19 12:21:54 2024 -0700

    Add tests for accessory select list endpoint

commit 74088ea581
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 20:13:38 2024 +0100

    Optimize isDeletable counts

    Signed-off-by: snipe <snipe@snipe.net>

commit fff069824b
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 19 12:11:03 2024 -0700

    Add tests for update accessory endpoint

commit d446773fdd
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Thu Sep 19 14:05:48 2024 -0500

    catch exceptions on notification

commit f283b5fbe8
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 19:56:39 2024 +0100

    Eager load adminuser

    Signed-off-by: snipe <snipe@snipe.net>

commit a5be18bb14
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 19 11:55:15 2024 -0700

    Add test for limit and offset

commit eb6f05faf7
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 19:41:46 2024 +0100

    Eager load adminuser

    Signed-off-by: snipe <snipe@snipe.net>

commit 118183ff58
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 19:41:39 2024 +0100

    Removed footer

    Signed-off-by: snipe <snipe@snipe.net>

commit 2137890496
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 19 11:33:20 2024 -0700

    Remove dead code

commit ebf6ce6980
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 19:27:10 2024 +0100

    Refactor for fewer queries

    Signed-off-by: snipe <snipe@snipe.net>

commit 9b22d6d493
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 19 11:24:01 2024 -0700

    Add tests for accessory checkouts endpoint

commit 5ebf0ed2b2
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 19:19:14 2024 +0100

    Updated variable

    Signed-off-by: snipe <snipe@snipe.net>

commit 836893cba5
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 18:35:00 2024 +0100

    Added id to report

    Signed-off-by: snipe <snipe@snipe.net>

commit cd98b3817d
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 18:26:08 2024 +0100

    Removed duplicate line

    Signed-off-by: snipe <snipe@snipe.net>

commit 727806372c
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 18:22:11 2024 +0100

    Added created_by to status label

    Signed-off-by: snipe <snipe@snipe.net>

commit 5e1c736d49
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 18:04:50 2024 +0100

    Added created_by for manufacturers

    Signed-off-by: snipe <snipe@snipe.net>

commit 6579fa72da
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 17:56:05 2024 +0100

    Added scoping for categories and companies

    Signed-off-by: snipe <snipe@snipe.net>

commit 82d6e1510f
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 17:41:05 2024 +0100

    Order by created_by for depreciations

    Signed-off-by: snipe <snipe@snipe.net>

commit 822ea96dfd
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 17:31:46 2024 +0100

    Use auth()->id() instead of Auth::id()

    Signed-off-by: snipe <snipe@snipe.net>

commit b247fc33b9
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 17:28:01 2024 +0100

    Added legacy comment

    Signed-off-by: snipe <snipe@snipe.net>

commit 2dcae780c0
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 17:26:21 2024 +0100

    Reapply deleted code

    Signed-off-by: snipe <snipe@snipe.net>

commit 5c3180ffa0
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 17:25:09 2024 +0100

    Removed duplicate code

    Signed-off-by: snipe <snipe@snipe.net>

commit 65eba30038
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 17:23:34 2024 +0100

    Fixed markdown in acceptance reminder

    Signed-off-by: snipe <snipe@snipe.net>

commit bbce7b40ca
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 17:20:56 2024 +0100

    Additional consistencies

    Signed-off-by: snipe <snipe@snipe.net>

commit 02a29c71ef
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 17:01:48 2024 +0100

    Added created_by

    Signed-off-by: snipe <snipe@snipe.net>

commit 6699995972
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 17:01:36 2024 +0100

    Added created_by to components

    Signed-off-by: snipe <snipe@snipe.net>

commit 951f03094a
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 17:01:17 2024 +0100

    Added created_by to kits

    Signed-off-by: snipe <snipe@snipe.net>

commit 354b00ef15
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 16:45:51 2024 +0100

    Made method name consistent

    Signed-off-by: snipe <snipe@snipe.net>

commit c93229179b
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 16:45:39 2024 +0100

    Added order by created_by to accessories

    Signed-off-by: snipe <snipe@snipe.net>

commit a77a7065d7
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 16:34:10 2024 +0100

    Added order by admin to assets

    Signed-off-by: snipe <snipe@snipe.net>

commit 4363e8b34c
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 16:20:42 2024 +0100

    Updated importer

    Signed-off-by: snipe <snipe@snipe.net>

commit 9adb2c24f3
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 16:06:36 2024 +0100

    Squashed commit of the following:

    commit dddbf27d78
    Author: snipe <snipe@snipe.net>
    Date:   Wed Sep 18 14:18:52 2024 +0100

        Updated language strings

        Signed-off-by: snipe <snipe@snipe.net>

    commit fcefcc8184
    Merge: 04bb3eec8 3519a82dd
    Author: snipe <snipe@snipe.net>
    Date:   Wed Sep 18 13:44:44 2024 +0100

        Merge pull request #15512 from marcusmoore/testing/fmcs

        Added tests for delete methods in api

    commit 04bb3eec83
    Merge: 154d5d8d9 f963b9a19
    Author: snipe <snipe@snipe.net>
    Date:   Wed Sep 18 13:41:37 2024 +0100

        Merge pull request #15521 from uberbrady/improve_country_selector

        Fix selected-index of Countries drop-down [fd-44144]

    commit f963b9a19f
    Author: Brady Wetherington <bwetherington@grokability.com>
    Date:   Wed Sep 18 13:24:26 2024 +0100

        Fix selected-index of Countries drop-down

    commit 154d5d8d91
    Merge: 6c996b775 9e5f6d656
    Author: snipe <snipe@snipe.net>
    Date:   Tue Sep 17 23:40:25 2024 +0100

        Merge pull request #15491 from uberbrady/numeric_prefixes_add_multiple_assets

        [Fixes fd-43940] Improve multi-asset create when using numeric prefixes to asset_tags

    commit 3519a82ddd
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 16:55:20 2024 -0700

        Fix name: TestsFullMultipleCompaniesSupport

    commit a629df07bf
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 14:49:08 2024 -0700

        Implement interfaces on existing test classes

    commit 9a13fcab23
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 14:38:38 2024 -0700

        Pluralize

    commit f5705a1dde
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 14:34:55 2024 -0700

        More unification

    commit f325c4afdb
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 14:32:38 2024 -0700

        Unify assertion method

    commit 1fddacd7d0
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 14:25:11 2024 -0700

        Re-order test methods

    commit 4af893df61
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 14:20:24 2024 -0700

        Improve assertions

    commit b8b3f91ce4
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 13:55:18 2024 -0700

        Formatting

    commit 7f40f55343
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 13:52:02 2024 -0700

        Add tests for delete supplier endpoint

    commit b06e8d442d
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 13:37:08 2024 -0700

        Add tests for delete status label endpoint

    commit c269184c60
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 13:29:41 2024 -0700

        Add tests for delete predefined kit endpoint

    commit 53c673dee2
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 13:13:12 2024 -0700

        Add tests for delete manufacturer endpoint

    commit 50730fc4fb
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 12:37:18 2024 -0700

        Add tests for delete location endpoint

    commit 60a54cee79
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 12:33:30 2024 -0700

        Add tests for delete license endpoint

    commit 446e962a50
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 10:38:51 2024 -0700

        Add tests for delete group endpoint

    commit 79a4bb7316
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 10:35:44 2024 -0700

        Add tests for delete depreciation endpoint

    commit 2f76c1bc5b
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 10:33:21 2024 -0700

        Add assertion

    commit 38b9f4a438
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 10:29:20 2024 -0700

        Add tests for delete departments endpoint

    commit 3105f53aff
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 16:54:29 2024 -0700

        Add tests for delete custom fieldsets endpoint

    commit 2047cfed09
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 16:20:32 2024 -0700

        Add tests for delete custom fields endpoint

    commit e3268d32df
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 16:00:02 2024 -0700

        Add tests for delete consumable endpoint

    commit 6df8b0ac0e
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 15:52:07 2024 -0700

        Add tests for delete component endpoint

    commit 910f13c1f7
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 15:38:30 2024 -0700

        Add tests for delete companies endpoint

    commit 8ce2512f55
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 13:54:44 2024 -0700

        Add tests for delete category endpoint

    commit 0ec415d4d0
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 13:46:22 2024 -0700

        Clean up

    commit 2044570e95
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 13:39:36 2024 -0700

        Add tests for delete asset model endpoint

    commit b336c6273d
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 13:32:42 2024 -0700

        Pluralize test classes

    commit 5299b3e9f0
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 13:29:44 2024 -0700

        Remove code handled by CompanyableChildTrait

    commit 872b76b45f
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 13:29:10 2024 -0700

        Add tests for delete asset maintenance endpoint

    commit 275cf4630e
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 13:16:37 2024 -0700

        Add tests for delete asset endpoint

    commit 5c2660bd34
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 13:02:32 2024 -0700

        Introduce interface

    commit c7ae9d9dfa
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 12:58:47 2024 -0700

        Add tests for delete accessory endpoint

    commit 9e5f6d656a
    Author: Brady Wetherington <bwetherington@grokability.com>
    Date:   Wed Sep 11 15:45:01 2024 +0100

        Improve multi-asset create when using numeric prefixes to asset_tags

    Signed-off-by: snipe <snipe@snipe.net>

commit 634a4afa75
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 16:04:54 2024 +0100

    Fixed 1001 query on license

    Signed-off-by: snipe <snipe@snipe.net>

commit 7650628d30
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 16:00:59 2024 +0100

    Removed free seat count from fillable

    Signed-off-by: snipe <snipe@snipe.net>

commit 7f690a6238
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 15:58:32 2024 +0100

    Fixed variable name

    Signed-off-by: snipe <snipe@snipe.net>

commit b32ab6a06c
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Sep 18 16:36:24 2024 -0700

    import User model

commit 4ff5fc1ff9
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Sep 18 16:19:35 2024 -0700

    clean up variables

commit 86f13a9735
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 18 16:13:34 2024 -0700

    Add index test

commit c40209f500
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Sep 18 15:23:44 2024 -0700

    seperates emails and webhook notifications

commit a071fff954
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 18 12:32:14 2024 -0700

    Implement tests

commit 8b50ef077d
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 18 11:58:33 2024 -0700

    Implement test

commit 607f29030f
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 18 11:53:27 2024 -0700

    Stub out test

commit a6bcd3c0c2
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 18 11:47:59 2024 -0700

    Add validation test

commit 9b293afaac
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 18 11:28:29 2024 -0700

    Remove more dead code

commit 636c776620
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 18 11:27:37 2024 -0700

    Remove dead code

commit d5f659024c
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 18 11:27:09 2024 -0700

    Add test for logging

commit 832e50a71e
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 18 11:19:41 2024 -0700

    Implement test

commit fa19686248
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 18 11:18:21 2024 -0700

    Implement test

commit c021609c13
Merge: 7b31df7c1 dddbf27d7
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 18 10:42:58 2024 -0700

    Merge branch 'develop' into testing/fmcs-accessories

commit 655abe8be5
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 18 14:32:59 2024 +0100

    Fixed requestable user_id

    Signed-off-by: snipe <snipe@snipe.net>

commit d96c5e1ba4
Merge: a807646d3 dddbf27d7
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 18 14:20:55 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit dddbf27d78
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 18 14:18:52 2024 +0100

    Updated language strings

    Signed-off-by: snipe <snipe@snipe.net>

commit bae9982833
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 18 14:18:14 2024 +0100

    Updated request methods

    Signed-off-by: snipe <snipe@snipe.net>

commit a807646d39
Merge: 83b4bf9cf fcefcc818
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 18 13:48:09 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit abe79df6dc
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 18 13:47:30 2024 +0100

    Added translation

    Signed-off-by: snipe <snipe@snipe.net>

commit fcefcc8184
Merge: 04bb3eec8 3519a82dd
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 18 13:44:44 2024 +0100

    Merge pull request #15512 from marcusmoore/testing/fmcs

    Added tests for delete methods in api

commit 04bb3eec83
Merge: 154d5d8d9 f963b9a19
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 18 13:41:37 2024 +0100

    Merge pull request #15521 from uberbrady/improve_country_selector

    Fix selected-index of Countries drop-down [fd-44144]

commit f963b9a19f
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Sep 18 13:24:26 2024 +0100

    Fix selected-index of Countries drop-down

commit 154d5d8d91
Merge: 6c996b775 9e5f6d656
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 17 23:40:25 2024 +0100

    Merge pull request #15491 from uberbrady/numeric_prefixes_add_multiple_assets

    [Fixes fd-43940] Improve multi-asset create when using numeric prefixes to asset_tags

commit 1582d81e5b
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 17 22:16:41 2024 +0100

    Change `user_id` to `created_by`

    Signed-off-by: snipe <snipe@snipe.net>

commit 7c85ad54eb
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 17 19:44:03 2024 +0100

    Sort by numeric columns for numeric custom fields

    Signed-off-by: snipe <snipe@snipe.net>

commit 7b31df7c14
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Sep 17 09:11:58 2024 -0700

    Begin additional test case

commit 83b4bf9cf8
Merge: 9ff211105 6c996b775
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 17 15:54:53 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 6c996b7759
Merge: fe5fc6e0c 9e957baeb
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 17 15:54:11 2024 +0100

    Merge pull request #15516 from snipe/fixes/fmcs_edit_user

    Fixed check for outside assets on user update validation

commit 9e957baeb5
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 17 15:46:45 2024 +0100

    Fixed check for outside assets on user update validation

    Signed-off-by: snipe <snipe@snipe.net>

commit 12fd9cd97a
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 17:00:08 2024 -0700

    Update interface name

commit 9e03c4ba6f
Merge: 8eb1c487b 3519a82dd
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 16:58:46 2024 -0700

    Merge branch 'testing/fmcs' into testing/fmcs-accessories

commit 3519a82ddd
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 16:55:20 2024 -0700

    Fix name: TestsFullMultipleCompaniesSupport

commit 8eb1c487bc
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 16:52:10 2024 -0700

    implement FMCS test for accessory index

commit e835637ef0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 16:40:10 2024 -0700

    Add accessory checkin test

commit eb35608bb5
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 16:35:33 2024 -0700

    Remove call handled by form request

commit 3f07f682de
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 16:35:21 2024 -0700

    Migrate existing tests to TestsPermissionsRequirement

commit a629df07bf
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 14:49:08 2024 -0700

    Implement interfaces on existing test classes

commit 9a13fcab23
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 14:38:38 2024 -0700

    Pluralize

commit f5705a1dde
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 14:34:55 2024 -0700

    More unification

commit f325c4afdb
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 14:32:38 2024 -0700

    Unify assertion method

commit 1fddacd7d0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 14:25:11 2024 -0700

    Re-order test methods

commit 4af893df61
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 14:20:24 2024 -0700

    Improve assertions

commit b8b3f91ce4
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 13:55:18 2024 -0700

    Formatting

commit 7f40f55343
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 13:52:02 2024 -0700

    Add tests for delete supplier endpoint

commit b06e8d442d
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 13:37:08 2024 -0700

    Add tests for delete status label endpoint

commit c269184c60
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 13:29:41 2024 -0700

    Add tests for delete predefined kit endpoint

commit 53c673dee2
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 13:13:12 2024 -0700

    Add tests for delete manufacturer endpoint

commit 50730fc4fb
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 12:37:18 2024 -0700

    Add tests for delete location endpoint

commit 60a54cee79
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 12:33:30 2024 -0700

    Add tests for delete license endpoint

commit 446e962a50
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 10:38:51 2024 -0700

    Add tests for delete group endpoint

commit 79a4bb7316
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 10:35:44 2024 -0700

    Add tests for delete depreciation endpoint

commit 2f76c1bc5b
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 10:33:21 2024 -0700

    Add assertion

commit 38b9f4a438
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 10:29:20 2024 -0700

    Add tests for delete departments endpoint

commit fe5fc6e0ce
Merge: 62747a009 15183c482
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 16 15:56:31 2024 +0100

    Merge pull request #15471 from Godmartinz/Edit_side-panel

    Fixes margin for the sidebar menus while using rtl languages

commit 62747a0090
Merge: b465cc98d c6c5cb73c
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 16 15:02:55 2024 +0100

    Merge pull request #15493 from Godmartinz/fix_consumables_media_sizing

    Fixed misalignment of consumables with smaller media

commit 9ff2111055
Merge: 1328366a4 b465cc98d
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 16 14:52:48 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit b465cc98d8
Merge: 8774da392 4debaaea3
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 16 14:45:06 2024 +0100

    Merge pull request #15510 from snipe/bulk_users_locale_fix

    Fixed #15504 - allow nulling/not changing locale in user bulk edit

commit 4debaaea39
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 16 14:31:10 2024 +0100

    Fixed #15504 - allow nulling/not changing locale in user bulk edit

    Signed-off-by: snipe <snipe@snipe.net>

commit 1328366a48
Merge: 7e14f8c6d 8774da392
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 16 12:38:56 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 4facc4007e
Author: setpill <37372069+setpill@users.noreply.github.com>
Date:   Fri Sep 13 17:05:48 2024 +0200

    feat: Explicitly request LDAP attributes during sync

commit 31da47e046
Author: setpill <37372069+setpill@users.noreply.github.com>
Date:   Fri Sep 13 17:05:28 2024 +0200

    refactor: Put LDAP attribute mapping in array

commit 3105f53aff
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 16:54:29 2024 -0700

    Add tests for delete custom fieldsets endpoint

commit 2047cfed09
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 16:20:32 2024 -0700

    Add tests for delete custom fields endpoint

commit e3268d32df
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 16:00:02 2024 -0700

    Add tests for delete consumable endpoint

commit 6df8b0ac0e
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 15:52:07 2024 -0700

    Add tests for delete component endpoint

commit 910f13c1f7
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 15:38:30 2024 -0700

    Add tests for delete companies endpoint

commit 8ce2512f55
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 13:54:44 2024 -0700

    Add tests for delete category endpoint

commit 0ec415d4d0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 13:46:22 2024 -0700

    Clean up

commit 2044570e95
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 13:39:36 2024 -0700

    Add tests for delete asset model endpoint

commit b336c6273d
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 13:32:42 2024 -0700

    Pluralize test classes

commit 5299b3e9f0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 13:29:44 2024 -0700

    Remove code handled by CompanyableChildTrait

commit 872b76b45f
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 13:29:10 2024 -0700

    Add tests for delete asset maintenance endpoint

commit 275cf4630e
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 13:16:37 2024 -0700

    Add tests for delete asset endpoint

commit 5c2660bd34
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 13:02:32 2024 -0700

    Introduce interface

commit c7ae9d9dfa
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 12:58:47 2024 -0700

    Add tests for delete accessory endpoint

commit 0bc98e971f
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Sep 12 12:26:19 2024 -0700

    refactoring modals with partials and fixing misalignments

commit 8774da3921
Merge: ab3b65531 a97530367
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 12 16:08:44 2024 +0100

    Merge pull request #15492 from snipe/fixes/edit_to_archived_warning

    Fix - warn user on changing status to undeployable when editing

commit c6c5cb73cf
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Sep 11 10:49:27 2024 -0700

    fixes consumables positioning with smaller media

commit a97530367d
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 11 17:29:22 2024 +0100

    Fixed tests again

    Signed-off-by: snipe <snipe@snipe.net>

commit 43250ae881
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 11 17:04:09 2024 +0100

    Updated tests

    Signed-off-by: snipe <snipe@snipe.net>

commit 04e96b8f20
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 11 16:43:41 2024 +0100

    Added tests

    Signed-off-by: snipe <snipe@snipe.net>

commit 98323185de
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 11 16:43:33 2024 +0100

    Null and warn if editing asset to a non-deployabe state

    Signed-off-by: snipe <snipe@snipe.net>

commit 9e5f6d656a
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Sep 11 15:45:01 2024 +0100

    Improve multi-asset create when using numeric prefixes to asset_tags

commit 7e14f8c6d6
Merge: fddbdafb9 ab3b65531
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 11 12:25:28 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit ab3b655312
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 11 12:25:09 2024 +0100

    Fixed #15483 - show EOL by default

    Signed-off-by: snipe <snipe@snipe.net>

commit 601d8d7e5f
Merge: 4f0f72b29 ca01261c1
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 11 09:46:58 2024 +0100

    Merge pull request #15486 from marcusmoore/fixes/custom-field-values

    Fixed a couple bugs in CustomFieldSetDefaultValuesForModel component

commit ca01261c1f
Merge: 6423df213 4f0f72b29
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Sep 10 16:05:39 2024 -0700

    Merge branch 'develop' into fixes/custom-field-values

commit 15183c4822
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Sep 10 11:05:03 2024 -0700

    rephrased the ternary <-correctly spelled

commit fddbdafb99
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 10 19:03:56 2024 +0100

    Fixed conflict

    Signed-off-by: snipe <snipe@snipe.net>

commit a5dbece1a9
Merge: 713bb104e 4f0f72b29
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 10 19:00:05 2024 +0100

    Merge remote-tracking branch 'origin/develop'

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	config/version.php
    #	public/css/build/app.css
    #	public/css/build/overrides.css
    #	public/css/dist/all.css
    #	public/mix-manifest.json

commit 4f0f72b29e
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 10 18:15:12 2024 +0100

    Fixed version

    Signed-off-by: snipe <snipe@snipe.net>

commit 4183d1834f
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 10 18:14:03 2024 +0100

    Pre-release assets

    Signed-off-by: snipe <snipe@snipe.net>

commit 713bb104ec
Merge: 7f2cae4f2 4998d60f3
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 10 14:46:15 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 4998d60f39
Merge: f6bf2d03c 7cf30003b
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 10 14:43:27 2024 +0100

    Merge pull request #15481 from snipe/localizations/2024-09-10

    Updated translations

commit 7cf30003b6
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 10 14:41:08 2024 +0100

    Updated strings

    Signed-off-by: snipe <snipe@snipe.net>

commit f6bf2d03c4
Merge: 6f44441a8 7c8955b12
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 10 11:04:58 2024 +0100

    Merge pull request #15445 from Godmartinz/eula_confusion

    Fixed priority for category eula vs default eula

commit 6f44441a8b
Merge: e7e5dfbdf 76c9015aa
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 10 11:04:23 2024 +0100

    Merge pull request #15469 from marcusmoore/accessory_tests

    Added UI tests for creating accessories

commit e7e5dfbdfa
Merge: d62315fbe 5d5f42129
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 10 11:04:08 2024 +0100

    Merge pull request #15470 from marcusmoore/company_tests

    Added UI tests for creating companies

commit d62315fbe4
Merge: 7f3f77dec 22a2cc025
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 10 11:03:55 2024 +0100

    Merge pull request #15472 from marcusmoore/testing/dashboard_counts

    Added test for dashboard counts

commit 7f3f77dec8
Merge: 82e56c683 0820dd9da
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 10 11:03:46 2024 +0100

    Merge pull request #15473 from marcusmoore/testing/accessory_api_tests

    Added some permission tests for accessory api endpoints

commit 82e56c6832
Merge: 549dec9f9 dc6a5bf99
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 10 09:37:02 2024 +0100

    Merge pull request #15474 from marcusmoore/bug/sc-26730

    Fixed login success message not being displayed

commit 76c9015aa9
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 9 16:51:40 2024 -0700

    Add test case

commit 5d5f421294
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 9 16:49:43 2024 -0700

    Add test case

commit 367f02af86
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Sep 9 16:34:04 2024 -0700

    more partials and includes

commit 7a1c721eca
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Sep 9 16:22:56 2024 -0700

    making modal partials for reuse

commit 6423df2133
Merge: 51d63d57c 549dec9f9
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 9 16:07:37 2024 -0700

    Merge branch 'develop' into fixes/custom-field-values

    # Conflicts:
    #	resources/views/livewire/custom-field-set-default-values-for-model.blade.php

commit dc6a5bf998
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 9 14:54:19 2024 -0700

    Reflash session so login message is displayed

commit 0820dd9da4
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 9 14:36:32 2024 -0700

    Update test names

commit aa6ab2df60
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 9 14:35:38 2024 -0700

    Add permission tests for some accessory api endpoints

commit 22a2cc0256
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 9 13:21:10 2024 -0700

    Add test for dashboard counts

commit 57fab0268b
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Sep 9 13:02:25 2024 -0700

    made it a terenary

commit ad5768d8b2
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Sep 9 12:45:11 2024 -0700

    fixes margin for the sidebar using rtl languages

commit 35533c39d5
Merge: d4426e468 549dec9f9
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 9 12:18:02 2024 -0700

    Merge branch 'develop' into company_tests

commit de403f6e07
Merge: 010f66f4c 549dec9f9
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 9 12:17:53 2024 -0700

    Merge branch 'develop' into accessory_tests

commit 549dec9f9e
Merge: b2a634924 0e9f7153c
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 9 20:13:01 2024 +0100

    Merge pull request #15468 from marcusmoore/coverage

    Added coverage commands for Herd users

commit d4426e4686
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 9 11:03:00 2024 -0700

    Add simple tests for company creation via UI

commit b2a6349243
Merge: ce97e2a30 c5dbc5f6b
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 9 10:06:42 2024 +0100

    Merge pull request #15465 from snipe/update_city_on_bulk_user_edit

    Correctly save user’s city on bulk edit

commit c5dbc5f6b8
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 9 10:01:07 2024 +0100

    Correctly save user’s city on bulk edit

    Signed-off-by: snipe <snipe@snipe.net>

commit 7f2cae4f26
Merge: e34f549e4 ce97e2a30
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 9 03:56:05 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit ce97e2a30f
Merge: e1fcfc8dc 7d9a0eba0
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 9 03:54:28 2024 +0100

    Merge pull request #15463 from snipe/consumables_order_by_remaining

    Added ability to sort on qty and remaining for consumables

commit 7d9a0eba04
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 9 03:49:58 2024 +0100

    Added ability to sort on qty and remaining for consumables

    Signed-off-by: snipe <snipe@snipe.net>

commit 010f66f4c9
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 4 15:48:11 2024 -0700

    Add validation test

commit 9c6718b459
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 4 15:46:35 2024 -0700

    Organize

commit 9f832a93c9
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 4 15:44:52 2024 -0700

    Ensure user is stored

commit 487d88c012
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 4 15:43:01 2024 -0700

    Add some ui tests for accessories

commit 0e9f7153c0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 4 15:13:45 2024 -0700

    Add composer commands for generating coverage reports via Herd

commit 7c8955b126
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Sep 4 12:38:35 2024 -0700

    revert changes to label view

commit 20fa4c39f9
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Sep 4 12:26:44 2024 -0700

    adds setEula to support\settings

commit f04a4a3cf5
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Sep 4 12:21:49 2024 -0700

    adds test

commit cf07186ae8
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Sep 3 12:23:23 2024 -0700

    gives priority to default eula being checked vs catregory eula

commit 51d63d57c6
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Sep 3 12:22:43 2024 -0700

    Hide the "Add default values" checkbox if no fieldset selected

commit e34f549e4c
Merge: a8813cca9 e1fcfc8dc
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 2 19:16:23 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit e1fcfc8dc1
Merge: 13dbf9ee7 9fe8a866e
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 2 19:14:49 2024 +0100

    Merge pull request #15440 from snipe/fixes/user_api_put_patch

    Fixes  #15435 - user api put patch API route regression

commit 9fe8a866e0
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 2 19:07:21 2024 +0100

    Updated test

    Signed-off-by: snipe <snipe@snipe.net>

commit e8e3060a75
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 2 18:51:22 2024 +0100

    Added tests

    Signed-off-by: snipe <snipe@snipe.net>

commit 6aaf2f623f
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 2 18:49:55 2024 +0100

    Removed extra route

    Signed-off-by: snipe <snipe@snipe.net>

commit dfbccf50e8
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 2 18:48:09 2024 +0100

    Added patch/put back into resource routes

    Signed-off-by: snipe <snipe@snipe.net>

commit a8813cca94
Merge: 9fef27a44 13dbf9ee7
Author: snipe <snipe@snipe.net>
Date:   Sat Aug 31 13:48:59 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 13dbf9ee74
Author: snipe <snipe@snipe.net>
Date:   Sat Aug 31 13:48:42 2024 +0100

    Added icon for dept

    Signed-off-by: snipe <snipe@snipe.net>

commit f8bbb7ad9b
Merge: 12fa50597 3c7d455ee
Author: snipe <snipe@snipe.net>
Date:   Sat Aug 31 13:47:25 2024 +0100

    Merge pull request #15431 from snipe/add_employee_num_to_asset_overview

    Added employee number to asset view

commit 3c7d455ee3
Author: snipe <snipe@snipe.net>
Date:   Sat Aug 31 13:38:38 2024 +0100

    Added employee number to asset view

    Signed-off-by: snipe <snipe@snipe.net>

commit 9fef27a448
Merge: d2b88a510 12fa50597
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 21:07:56 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 12fa505972
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 21:07:30 2024 +0100

    Disabmiguate licenses company_id

    Signed-off-by: snipe <snipe@snipe.net>

commit d2b88a5107
Merge: 4e35f389d 4e4930ba6
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 21:02:21 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 4e4930ba62
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 21:01:48 2024 +0100

    Check for array

    Signed-off-by: snipe <snipe@snipe.net>

commit 4e35f389df
Merge: e5b9d9a28 76301bc30
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 20:07:03 2024 +0100

    Merge remote-tracking branch 'origin/develop'

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	public/css/build/app.css
    #	public/css/build/overrides.css
    #	public/css/dist/all.css
    #	public/mix-manifest.json

commit 76301bc30d
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 20:05:03 2024 +0100

    Fixed typo

    Signed-off-by: snipe <snipe@snipe.net>

commit 964e105cf9
Merge: 6fd24c7e1 abb422153
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 19:20:03 2024 +0100

    Merge pull request #15415 from snipe/rules/prevent_company_switch

    Validation rules to prevent switching user companies if items are assigned to them

commit 6fd24c7e14
Merge: e4ebabdab 231bc1e2d
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 18:55:11 2024 +0100

    Merge pull request #15418 from snipe/added_multiple_for_custom_report

    Fixed #15416 - Added multiple selects for custom report

commit 231bc1e2de
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 18:31:34 2024 +0100

    Updated blade selectors

    Signed-off-by: snipe <snipe@snipe.net>

commit 37d04b7176
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 17:52:01 2024 +0100

    Some CSS tweaks for select2

    Signed-off-by: snipe <snipe@snipe.net>

commit e62a802926
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 17:51:44 2024 +0100

    Use whereIn instead of where =

    Signed-off-by: snipe <snipe@snipe.net>

commit 69e981364a
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 17:51:20 2024 +0100

    Made multiple select

    Signed-off-by: snipe <snipe@snipe.net>

commit e5b9d9a28b
Merge: 4111ef0d7 e4ebabdab
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 15:04:32 2024 +0100

    Merge remote-tracking branch 'origin/develop'

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	public/js/build/app.js
    #	public/js/build/vendor.js
    #	public/js/dist/all.js
    #	public/mix-manifest.json

commit abb4221539
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 14:55:18 2024 +0100

    Validation rules to prevent switchng user companies if assets are assigned

    Signed-off-by: snipe <snipe@snipe.net>

commit e4ebabdaba
Merge: b64ed254e da1e38329
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 14:19:51 2024 +0100

    Merge pull request #15414 from uberbrady/fix_create_user

    Use the null-safe property accessor for new-user creation

commit da1e383295
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Thu Aug 29 14:09:23 2024 +0100

    Use the null-safe property accessor for new-user creation

commit b64ed254e0
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 13:49:09 2024 +0100

    Fixed tests

    Signed-off-by: snipe <snipe@snipe.net>

commit ba291edc42
Merge: c197644ba ec2ea955d
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 13:18:52 2024 +0100

    Merge pull request #15412 from uberbrady/ImprovePatchPurchasePrice

    Fix [FD-43836] PATCH of purchase_cost for assets for comma as decimal separator

commit ec2ea955d8
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Thu Aug 29 12:35:14 2024 +0100

    Fix PATCH of purchase_cost for assets for comma as decimal separator

commit c197644ba7
Merge: 29b30cc5d a8cd1027f
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 11:38:15 2024 +0100

    Merge pull request #15284 from spencerrlongg/bug/sc-26584

    [Multi-Company] Fixes Users Being Moved With Items Still Assigned

commit 29b30cc5d3
Merge: a89f17a14 6af27516d
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 11:29:44 2024 +0100

    Merge pull request #15411 from snipe/snyk/upgrade-webpack

    Upgraded webpack

commit 6af27516dc
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 11:29:00 2024 +0100

    Upgraded webpack

    Signed-off-by: snipe <snipe@snipe.net>

commit a89f17a145
Merge: 68c708bde de0565f5b
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 11:25:56 2024 +0100

    Merge pull request #15410 from snipe/snyk/upgrade-jquery-ui

    Updated jquery UI

commit de0565f5b3
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 11:24:06 2024 +0100

    Updated jquery UI

    Signed-off-by: snipe <snipe@snipe.net>

commit 4111ef0d78
Merge: cfa56e221 68c708bde
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 11:20:21 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 68c708bdef
Merge: 58e366a06 5581950fe
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 11:18:34 2024 +0100

    Merge pull request #15409 from snipe/fixes-string

    Corrected language string

commit 5581950fee
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 11:17:17 2024 +0100

    Corrected language string

    Signed-off-by: snipe <snipe@snipe.net>

commit cfa56e2219
Merge: 7f1dfcc93 58e366a06
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 11:08:53 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 58e366a063
Merge: 26f28a862 b06c52776
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 11:08:02 2024 +0100

    Merge pull request #15408 from snipe/redirect-on-print-if-user-invalid

    Check that the user exists before trying to print

commit b06c527767
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 11:06:30 2024 +0100

    Check that the user exists before trying to print

    Signed-off-by: snipe <snipe@snipe.net>

commit 7f1dfcc935
Merge: 6f3fb21fe 26f28a862
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 14:29:06 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 26f28a862a
Merge: e8da7e2df 94c981e22
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 14:26:03 2024 +0100

    Merge pull request #15404 from snipe/bug/sc-26717-model-delete

    Set image to null if model is deleted

commit 94c981e22c
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 14:23:49 2024 +0100

    Set image to null if model is deleted

    Signed-off-by: snipe <snipe@snipe.net>

commit 6f3fb21fef
Merge: a48e79a1f e8da7e2df
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 12:50:19 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit e8da7e2df2
Merge: 7b5b559ba d635c86e0
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 12:46:48 2024 +0100

    Merge pull request #15403 from snipe/clean_up_depreciations

    Fixed #15392 - filter by depreciation when showing models

commit d635c86e00
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 12:46:30 2024 +0100

    Added tests

    Signed-off-by: snipe <snipe@snipe.net>

commit 406ff6984b
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 12:42:23 2024 +0100

    Added click to select on models table

    Signed-off-by: snipe <snipe@snipe.net>

commit c6ddc501c5
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 12:40:12 2024 +0100

    Filter by depreciation_id

    Signed-off-by: snipe <snipe@snipe.net>

commit 4839181beb
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 12:40:01 2024 +0100

    Added counts to API

    Signed-off-by: snipe <snipe@snipe.net>

commit 63a05c89a7
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 12:39:52 2024 +0100

    Added counts to show method

    Signed-off-by: snipe <snipe@snipe.net>

commit 385c4f69f7
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 12:39:43 2024 +0100

    Added counts to depreciation transformer

    Signed-off-by: snipe <snipe@snipe.net>

commit 486cd8c8c9
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 12:39:09 2024 +0100

    Nicer formatting for searchableAttributes

    Signed-off-by: snipe <snipe@snipe.net>

commit eb5d93b3c2
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 12:38:55 2024 +0100

    Added assets relationship

    Signed-off-by: snipe <snipe@snipe.net>

commit a5ff623484
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 12:38:43 2024 +0100

    Added asset, license, model count to API

    Signed-off-by: snipe <snipe@snipe.net>

commit b5a4389815
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 12:38:31 2024 +0100

    Added badge count, fixed model bulk edit menu

    Signed-off-by: snipe <snipe@snipe.net>

commit 7b5b559baa
Merge: 64c4433b9 67a992974
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 11:57:29 2024 +0100

    Merge pull request #15401 from snipe/fixes-15397-new-window-for-label

    Opens label new window

commit 67a9929745
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 11:56:54 2024 +0100

    Opens label new window

    Signed-off-by: snipe <snipe@snipe.net>

commit a48e79a1fc
Merge: c207d4843 64c4433b9
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 27 07:37:53 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 64c4433b98
Merge: d3e8e0663 22bc088f6
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 27 07:36:37 2024 +0100

    Merge pull request #15396 from snipe/add_start_end_date_to_users_edit

    Added `start_date` and `end_date` to user bulk edit

commit 22bc088f6f
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 27 07:21:19 2024 +0100

    Added start_date and end_date to user bulk edit

    Signed-off-by: snipe <snipe@snipe.net>

commit d3e8e06638
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 26 14:07:06 2024 +0100

    Add @swift2512 as a contributor

commit c207d48430
Merge: 991e48696 1b933f7ad
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 26 14:01:38 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 1b933f7add
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 26 13:47:17 2024 +0100

    Added s to fa icons

    Signed-off-by: snipe <snipe@snipe.net>

commit 991e48696a
Merge: 797488504 3fe891a05
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 26 10:26:06 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 3fe891a05b
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 26 10:25:27 2024 +0100

    Removed a few more commas

    Signed-off-by: snipe <snipe@snipe.net>

commit 7974885041
Merge: 4ef85bd52 f4c5b712f
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 26 10:24:19 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit f4c5b712f4
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 26 10:24:07 2024 +0100

    Removed colons

    Signed-off-by: snipe <snipe@snipe.net>

commit 4ef85bd529
Merge: 6eab83a85 4c8dc7818
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 17:58:08 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 4c8dc7818d
Merge: aa86e07cd 5c43a1f87
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 17:57:00 2024 +0100

    Merge pull request #15389 from snipe/added_generate_label_to_button_stack

    Fixed #15388 - Moved generate label  button

commit 5c43a1f87c
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 17:54:49 2024 +0100

    Use proper style for buttons

    Signed-off-by: snipe <snipe@snipe.net>

commit d3b265de8e
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 17:48:36 2024 +0100

    Moved button on hardware

    Signed-off-by: snipe <snipe@snipe.net>

commit 263151658f
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 17:44:09 2024 +0100

    Moved general label  button

    Signed-off-by: snipe <snipe@snipe.net>

commit 6eab83a85a
Merge: cce1f87da aa86e07cd
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 15:22:53 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit aa86e07cd2
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 15:22:39 2024 +0100

    Fixed #15385 - small icon tweaks

    Signed-off-by: snipe <snipe@snipe.net>

commit cce1f87da6
Merge: b460e8dc8 d92fa5de6
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 15:18:30 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit d92fa5de65
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 15:17:25 2024 +0100

    fa-fw on settings icon

    Signed-off-by: snipe <snipe@snipe.net>

commit b460e8dc83
Merge: 50cb7e65c c589140ea
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 08:42:32 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit c589140ea0
Merge: cc2c8f76d 52894615c
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 08:42:04 2024 +0100

    Merge pull request #15383 from snipe/re-adds-checkout-button

    Fixed #15378 - Corrected gate on checkin button on asset view

commit 52894615ce
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 08:40:41 2024 +0100

    More specific gate for checkin

    Signed-off-by: snipe <snipe@snipe.net>

commit 8546bbdd65
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 08:38:47 2024 +0100

    Fixed gate for checkout button

    Signed-off-by: snipe <snipe@snipe.net>

commit 50cb7e65c9
Merge: 821dd158d cc2c8f76d
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 07:32:39 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit cc2c8f76d0
Merge: 1ffa69c43 3957d670d
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 07:31:29 2024 +0100

    Merge pull request #15375 from Godmartinz/fix-acceptance-reminder-command

    Fixes the `acceptance-reminder` command

commit 1ffa69c43c
Merge: 78d355f13 f85ebd7ff
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 07:28:20 2024 +0100

    Merge pull request #15380 from snipe/fixed/fixed_nav_bracket

    Added pull-right to angle bracket

commit f85ebd7ffd
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 07:27:39 2024 +0100

    Added pull-right to angle bracket

    Signed-off-by: snipe <snipe@snipe.net>

commit 78d355f136
Merge: ec0346e4a af0a95be1
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 07:20:23 2024 +0100

    Merge pull request #15377 from marcusmoore/fixes/custom-field-values-on-validation-error

    Fixed custom field defaults being prematurely updated

commit ec0346e4a8
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 07:19:08 2024 +0100

    Add @setpill as a contributor

commit fc5eb37776
Merge: 833dace2b 1d7853cbf
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 07:18:41 2024 +0100

    Merge pull request #15379 from setpill/fix/load-trustproxies-middleware

    fixed #15374: load TrustProxies middleware in Kernel.php

commit 9a73311a99
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Aug 22 17:04:04 2024 -0700

    Fix nested checkboxes being updated as a group

commit aec781e7df
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Aug 22 16:03:30 2024 -0700

    Be a little more explicit

commit 1d7853cbfe
Author: setpill <37372069+setpill@users.noreply.github.com>
Date:   Thu Aug 22 19:45:53 2024 +0200

    fixed #15374: load TrustProxies middleware in Kernel.php

commit 7f3c86165b
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Aug 22 13:58:31 2024 -0700

    Conditionally disable Add default values checkbox

commit 10b45812c4
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Aug 22 13:38:01 2024 -0700

    Improve id for checkboxes and radio buttons

commit c3165717ed
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Aug 22 13:20:04 2024 -0700

    Handle old input

commit d0a351a132
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Aug 22 12:59:03 2024 -0700

    Add comment

commit 68749e7e87
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Aug 22 12:58:35 2024 -0700

    Simplify logic

commit 0abb5637e0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Aug 22 12:54:54 2024 -0700

    WIP: handle old input

commit af0a95be12
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Aug 21 17:00:32 2024 -0700

    Simplify assertions

commit d67975cb62
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Aug 21 16:59:44 2024 -0700

    Implement fix

commit 663b2fd844
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Aug 21 16:59:38 2024 -0700

    Add test case

commit bcace9d019
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Aug 21 16:54:16 2024 -0700

    Point test to correct endpoint

commit b59bf3e7dc
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Aug 21 16:49:29 2024 -0700

    Add failing test

commit 3957d670d0
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Aug 22 10:04:46 2024 -0700

    fixes send acceptance reminder query

commit 821dd158d1
Merge: 6c9a40268 833dace2b
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 15:50:20 2024 +0100

    Merge remote-tracking branch 'origin/develop'

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	public/css/build/app.css
    #	public/css/build/overrides.css
    #	public/css/dist/all.css
    #	public/js/build/app.js
    #	public/js/dist/all.js
    #	public/mix-manifest.json

commit 833dace2b4
Merge: ec365b080 56e31d230
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 15:00:16 2024 +0100

    Merge pull request #15373 from snipe/fixes/#15366_custom_fields

    Fixed #15366 use the non-admin edit encrypted custom fields permissions

commit 56e31d2303
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 14:58:09 2024 +0100

    Fixed #15366 - use permission for encrypted custom fields

    Signed-off-by: snipe <snipe@snipe.net>

commit ec365b0804
Merge: ca8864c06 aef0ac68c
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 14:49:13 2024 +0100

    Merge pull request #15372 from StarlessNights/update-docker-compose-files

    Fixed #15371: docker-compose files updated.

commit aef0ac68c3
Author: Iisakki Jaakkola <iihaja@utu.fi>
Date:   Thu Aug 22 16:10:00 2024 +0300

    Need to use the long format for redis too in docker-compose file.

commit f12f9a816f
Author: Iisakki Jaakkola <iihaja@utu.fi>
Date:   Thu Aug 22 15:47:12 2024 +0300

    Update the official docker-compose file too while at it.

commit a000d6454f
Author: Iisakki Jaakkola <iihaja@utu.fi>
Date:   Thu Aug 22 15:46:40 2024 +0300

    Fix non-functional development docker-compose file.

commit ca8864c061
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 13:28:52 2024 +0100

    Fixed small layout quirks in asset view

    Signed-off-by: snipe <snipe@snipe.net>

commit 423f4f9126
Merge: 456c7d8d9 5fa0c87ab
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 13:25:41 2024 +0100

    Merge pull request #14667 from Godmartinz/add_location_to_create_user_via_asset

    Adds location select to the create new user via asset checkout

commit 456c7d8d91
Merge: 54cfe3f6e d4d19569e
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 13:20:56 2024 +0100

    Merge pull request #15065 from Godmartinz/explicit_eol_removal_command

    Adds `snipeit:remove-explicit-eols` command

commit 54cfe3f6e6
Merge: 5e0b18104 bb465dbfa
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 13:20:10 2024 +0100

    Merge pull request #15156 from uberbrady/re-add-stalebot

    Re-add stalebot-esque github Action

commit 5e0b18104d
Merge: ec0b9b198 8b5d3f7fb
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 12:59:20 2024 +0100

    Merge pull request #15369 from snipe/fixes/checkbox_on_restore

    Fixed checkbox layout on modal from #15296

commit 8b5d3f7fbd
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 12:56:32 2024 +0100

    Fixed extra closing p tag

    Signed-off-by: snipe <snipe@snipe.net>

commit 744f43676d
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 12:53:16 2024 +0100

    Fixed checkbox layout on modal from #15296

    Signed-off-by: snipe <snipe@snipe.net>

commit ec0b9b198f
Merge: 94300d81d 738ef442f
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 12:43:07 2024 +0100

    Merge pull request #15296 from uberbrady/expose_restore_sanitize

    Expose the 'sanitize' system for backup restores to the web GUI

commit 6c9a402685
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 11:20:52 2024 +0100

    Updated prod assets

    Signed-off-by: snipe <snipe@snipe.net>

commit 1b310f3a24
Merge: c54bff0f8 94300d81d
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 11:20:42 2024 +0100

    Merge remote-tracking branch 'origin/develop'

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	public/css/build/app.css
    #	public/css/build/overrides.css
    #	public/css/dist/all.css
    #	public/mix-manifest.json

commit 94300d81d6
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 11:19:32 2024 +0100

    Updated dev assets

    Signed-off-by: snipe <snipe@snipe.net>

commit bc9ea5a2ec
Merge: 4635a6efc 963911f2e
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 11:18:06 2024 +0100

    Merge pull request #15352 from Godmartinz/mobile_breakpoint

    Fixed Mobile misalignment of info on Assets and Users view pages

commit 4635a6efc3
Merge: 9608414ea d29b3bfb9
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 11:17:49 2024 +0100

    Merge pull request #15360 from snipe/more_print_fixes

    More print fixes for asset view

commit 9608414eae
Merge: 47d8e2f8b 5efddf6f5
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 11:06:13 2024 +0100

    Merge pull request #15367 from snipe/fixes/15344_added_freeform_to_country_select2

    Fixed #15344 - make select2 for countries freeform-ish

commit 5efddf6f5b
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 11:01:39 2024 +0100

    Allow clear on country dropdown

    Signed-off-by: snipe <snipe@snipe.net>

commit 305dc049a4
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 11:01:28 2024 +0100

    Added asterisk help text

    Signed-off-by: snipe <snipe@snipe.net>

commit 3ac0702094
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 10:13:22 2024 +0100

    Fixed #15344 - make select2 for countries freeform-ish

    Signed-off-by: snipe <snipe@snipe.net>

commit 47d8e2f8b9
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 09:42:05 2024 +0100

    Add @Scarzy as a contributor

commit a2246b9645
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Aug 21 17:00:32 2024 -0700

    Simplify assertions

commit 1d89759706
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Aug 21 16:59:44 2024 -0700

    Implement fix

commit 206f8fe605
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Aug 21 16:59:38 2024 -0700

    Add test case

commit 21d2217619
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Aug 21 16:54:16 2024 -0700

    Point test to correct endpoint

commit 833bcb282f
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Aug 21 16:49:29 2024 -0700

    Add failing test

commit 83dd9ce20e
Merge: 6fdce3c53 a8eb76fd8
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 21 23:15:24 2024 +0100

    Merge pull request #15362 from r-xyz/model-files-api

    Added #9413: AssetModel files endpoints to API

commit a8eb76fd8d
Author: r-xyz <100710244+r-xyz@users.noreply.github.com>
Date:   Wed Aug 21 22:25:41 2024 +0200

    Fixed model files API routes.

commit cd7db5c4a8
Author: r-xyz <100710244+r-xyz@users.noreply.github.com>
Date:   Wed Aug 21 22:24:08 2024 +0200

    Fix some typos in models file handler.

commit da7313bc9d
Author: r-xyz <100710244+r-xyz@users.noreply.github.com>
Date:   Wed Aug 21 20:24:22 2024 +0200

    Fix models files API routes.

commit 4ec361c718
Author: r-xyz <100710244+r-xyz@users.noreply.github.com>
Date:   Wed Aug 21 19:49:51 2024 +0200

    Add AssetModel files endpoints to API

commit 738ef442fd
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Aug 21 13:16:51 2024 +0100

    Rename .env var to have DB_ prefix for sanitize-by-default setting

commit d29b3bfb9a
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 21 13:06:16 2024 +0100

    Few more hidden-print classes

    Signed-off-by: snipe <snipe@snipe.net>

commit 6fdce3c536
Merge: 01c4fe611 1ab29ec3a
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 21 13:02:50 2024 +0100

    Merge pull request #15358 from r-xyz/rename-docker-startup

    Renamed  docker startup scripts coherently.

commit 912bbf0e32
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 21 13:02:21 2024 +0100

    More print fixes

    Signed-off-by: snipe <snipe@snipe.net>

commit c54bff0f83
Merge: d3f30ced9 01c4fe611
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 21 12:24:13 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 01c4fe6113
Merge: 7e475a078 0fa9f5797
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 21 12:12:23 2024 +0100

    Merge pull request #15359 from uberbrady/improve_windows_upgrade

    Fixed #15190 - Improvements to upgrade.php script to improve Windows experience

commit 0fa9f57971
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Aug 21 11:53:38 2024 +0100

    Improvements to upgrade.php script to improve Windows experience

commit 1ab29ec3a4
Author: r-xyz <100710244+r-xyz@users.noreply.github.com>
Date:   Wed Aug 21 11:52:09 2024 +0200

    Rename  docker startup scripts coherently.

commit 7e475a0786
Merge: d0acf5b8a 26b3c62ab
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 21 10:41:17 2024 +0100

    Merge pull request #15357 from snipe/tighten_category_view_translations

    Fixed #15330 - Cleaned up category title

commit 26b3c62ab8
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 21 10:29:51 2024 +0100

    Cleaned up category title

    Signed-off-by: snipe <snipe@snipe.net>

commit d3f30ced94
Merge: 973e2e575 d0acf5b8a
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 21 10:13:57 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit d0acf5b8a6
Merge: 09033b19a 74fbc2382
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 21 10:12:58 2024 +0100

    Merge pull request #15356 from snipe/validate_location_parent

    Fixed #15341 - validate parent ID

commit 74fbc23823
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 21 10:09:35 2024 +0100

    Updated tests

    Signed-off-by: snipe <snipe@snipe.net>

commit a23dee52f2
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 21 09:58:47 2024 +0100

    Added tests

    Signed-off-by: snipe <snipe@snipe.net>

commit 4d03f1e110
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 21 09:46:18 2024 +0100

    Fixed #15341 - validate parent ID

    Signed-off-by: snipe <snipe@snipe.net>

commit 963911f2e1
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Aug 21 00:23:10 2024 -0700

    changed order of info stgack

commit 59832126cb
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Aug 20 16:52:51 2024 -0700

    Improve comment

commit 680cce3ee2
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Aug 20 16:42:29 2024 -0700

    Align indents

commit 6c5ec6a16c
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Aug 20 16:41:24 2024 -0700

    Get datepicker working

commit 5d1f98bf93
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Aug 20 15:38:43 2024 -0700

    Simplify by directly wire:modeling

commit 9d484077ae
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Aug 20 14:24:37 2024 -0700

    missed a file

commit 9858b0f37f
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Aug 20 14:23:55 2024 -0700

    fixes info tab for users and assets

commit 973e2e5756
Merge: 46ed07642 09033b19a
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 19:45:53 2024 +0100

    Merge remote-tracking branch 'origin/develop'

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	config/version.php

commit 09033b19a7
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 19:44:13 2024 +0100

    Bumped hash

    Signed-off-by: snipe <snipe@snipe.net>

commit 46ed076428
Merge: d3a555ce9 5fdeb9c41
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 19:42:56 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 5fdeb9c413
Merge: 22d373407 6c450d133
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 19:42:08 2024 +0100

    Merge pull request #15351 from snipe/localizations/new_translations_2024-08-20

    Updated languages

commit 22d3734075
Merge: d99b306ae eca6b03f4
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 19:34:38 2024 +0100

    Merge pull request #15350 from marcusmoore/icon-component-updates

    Fixed icon not rotated and simplified component

commit eca6b03f44
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Aug 20 11:08:53 2024 -0700

    Allow id to be rendered

commit bbdbec7197
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Aug 20 11:00:39 2024 -0700

    Rely on $attributes behavior rendering passed attributes

commit 6c450d1338
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 18:18:17 2024 +0100

    Updated languages

    Signed-off-by: snipe <snipe@snipe.net>

commit a8cd1027f3
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Tue Aug 20 11:40:15 2024 -0500

    rm commented code

commit d3a555ce91
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 11:49:39 2024 +0100

    Updated assets

    Signed-off-by: snipe <snipe@snipe.net>

commit 0f8e041809
Merge: e8a22f3c5 d99b306ae
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 11:49:32 2024 +0100

    Merge remote-tracking branch 'origin/develop'

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	public/css/build/app.css
    #	public/css/build/overrides.css
    #	public/css/dist/all.css
    #	public/css/dist/bootstrap-table.css
    #	public/js/dist/bootstrap-table.js
    #	public/mix-manifest.json

commit d99b306ae9
Merge: f597d6433 74136761d
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 11:46:55 2024 +0100

    Merge pull request #15345 from snipe/add_trim_strings_middleware

    Added TrimStrings middleware

commit 74136761df
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 11:45:13 2024 +0100

    Added TrimStrings middleware

    Signed-off-by: snipe <snipe@snipe.net>

commit f597d64339
Merge: 64bed01a9 0072f1500
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 10:17:26 2024 +0100

    Merge pull request #15342 from snipe/snyk/bs-tables

    [Snyk] Upgrade bootstrap-table from 1.23.0 to 1.23.2

commit 0072f1500e
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 10:16:27 2024 +0100

    [Snyk] Upgrade bootstrap-table from 1.23.0 to 1.23.2

    Signed-off-by: snipe <snipe@snipe.net>

commit 64bed01a91
Merge: f8c72fb0a f6319e11e
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 10:13:43 2024 +0100

    Merge pull request #15327 from snipe/update_button_style

    Update icons to use blade components, standardize button colors and format

commit f6319e11e7
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 10:11:27 2024 +0100

    Added fa-fw to sidebar elements

    Signed-off-by: snipe <snipe@snipe.net>

commit 5d9f988df3
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 10:01:49 2024 +0100

    Added fw class to topnav icons

    Signed-off-by: snipe <snipe@snipe.net>

commit f8c72fb0ac
Merge: 886514a25 fa765667f
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 09:57:03 2024 +0100

    Merge pull request #15112 from marcusmoore/livewire-importer-improvements

    Improved handling attempted access of deleted files in importer

commit 8e1111c681
Merge: 697595d96 886514a25
Author: akemidx <kojotek.dx@gmail.com>
Date:   Mon Aug 19 19:33:44 2024 -0400

    Merge remote-tracking branch 'upstream/develop' into eol_date_range_for_reports

commit 886514a25f
Merge: cb40a82e7 434bdcd6d
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 22:46:08 2024 +0100

    Merge pull request #15336 from marcusmoore/fixes/remove-displayed-parentheses

    Fixed `)` being added to expected asset checkin report email header

commit fa765667f2
Merge: 94d8a547b cb40a82e7
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Aug 19 14:41:58 2024 -0700

    Merge branch 'develop' into livewire-importer-improvements

commit 434bdcd6d4
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Aug 19 14:31:47 2024 -0700

    Add missing parentheses to conditional

commit be5f3f38f8
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 14:48:12 2024 +0100

    Settings pages

    Signed-off-by: snipe <snipe@snipe.net>

commit 08c3a25b39
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 14:16:57 2024 +0100

    Little more padding

    Signed-off-by: snipe <snipe@snipe.net>

commit 34cd4b6244
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 14:15:36 2024 +0100

    Added links to apple/google maps

    Signed-off-by: snipe <snipe@snipe.net>

commit d89c8682be
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 13:46:31 2024 +0100

    Reversed location button ordering

    Signed-off-by: snipe <snipe@snipe.net>

commit 6f024849e9
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 13:39:24 2024 +0100

    Few more

    Signed-off-by: snipe <snipe@snipe.net>

commit e048f0955f
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 13:27:21 2024 +0100

    More icons

    Signed-off-by: snipe <snipe@snipe.net>

commit 479b2b4fd3
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 13:23:08 2024 +0100

    More icons

    Signed-off-by: snipe <snipe@snipe.net>

commit 84f14a05bd
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 13:20:19 2024 +0100

    Fixed logging for asset model restore

    Signed-off-by: snipe <snipe@snipe.net>

commit 8d52fa51b1
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 13:20:06 2024 +0100

    Fixed suppliers buttons

    Signed-off-by: snipe <snipe@snipe.net>

commit 229d8b9bf5
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 13:19:59 2024 +0100

    Added location restore

    Signed-off-by: snipe <snipe@snipe.net>

commit eb8d43a804
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 12:32:44 2024 +0100

    Updated buttons on models

    Signed-off-by: snipe <snipe@snipe.net>

commit f82266fade
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 11:58:31 2024 +0100

    Cleaned up presenters

    Signed-off-by: snipe <snipe@snipe.net>

commit b4b6f7a35f
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 11:58:21 2024 +0100

    Added css-consumable to overrides for table headers

    Signed-off-by: snipe <snipe@snipe.net>

commit 0bc995b87f
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 11:58:05 2024 +0100

    Updated more icons

    Signed-off-by: snipe <snipe@snipe.net>

commit 59725f2031
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 11:57:40 2024 +0100

    Removed extra debugging in test

    Signed-off-by: snipe <snipe@snipe.net>

commit 00bc9ac806
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 22:39:14 2024 +0100

    Fixed spacing

    Signed-off-by: snipe <snipe@snipe.net>

commit f200960a57
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 22:26:57 2024 +0100

    Aaaand more

    Signed-off-by: snipe <snipe@snipe.net>

commit c700127f1a
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 22:09:00 2024 +0100

    Updated user view

    Signed-off-by: snipe <snipe@snipe.net>

commit ae2f9571b4
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 21:57:37 2024 +0100

    And still more

    Signed-off-by: snipe <snipe@snipe.net>

commit a77dcad336
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 20:30:53 2024 +0100

    More links

    Signed-off-by: snipe <snipe@snipe.net>

commit 7ace9324b4
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 20:30:22 2024 +0100

    Added padlock sound

    Signed-off-by: snipe <snipe@snipe.net>

commit d2e889e927
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 19:21:59 2024 +0100

    Still more

    Signed-off-by: snipe <snipe@snipe.net>

commit 803bdb457c
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 18:48:19 2024 +0100

    Added calendar

    Signed-off-by: snipe <snipe@snipe.net>

commit 7c9b1f6e38
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 18:39:22 2024 +0100

    Added the plus icon

    Signed-off-by: snipe <snipe@snipe.net>

commit d545537a43
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 18:34:13 2024 +0100

    More icons

    Signed-off-by: snipe <snipe@snipe.net>

commit 4d8904938d
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 18:24:26 2024 +0100

    Added calendar icon for datepickers

    Signed-off-by: snipe <snipe@snipe.net>

commit 0c09f2b2c0
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 18:13:49 2024 +0100

    Moar icon replacement

    Signed-off-by: snipe <snipe@snipe.net>

commit bffba02511
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 17:26:44 2024 +0100

    Updated icons

    Signed-off-by: snipe <snipe@snipe.net>

commit 901f4df7ee
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 17:03:36 2024 +0100

    Added more icons

    Signed-off-by: snipe <snipe@snipe.net>

commit 9337cba340
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 15:53:58 2024 +0100

    Added download

    Signed-off-by: snipe <snipe@snipe.net>

commit 2b0c67c263
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 15:51:00 2024 +0100

    Load the icon helper

    Signed-off-by: snipe <snipe@snipe.net>

commit da71f031f5
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 15:48:24 2024 +0100

    Use icon in hardware view

    Signed-off-by: snipe <snipe@snipe.net>

commit d2e585baa7
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 15:47:45 2024 +0100

    Added icon blade

    Signed-off-by: snipe <snipe@snipe.net>

commit a102c085df
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 15:47:37 2024 +0100

    Added icon helper

    Signed-off-by: snipe <snipe@snipe.net>

commit e8a22f3c5b
Merge: d843cf8dc cb40a82e7
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 04:55:04 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit cb40a82e79
Merge: 7e6ff3cbe 4253acad4
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 04:54:23 2024 +0100

    Merge pull request #15324 from snipe/jerk_prevention

    Prevent passing an array as login

commit 4253acad4c
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 04:51:36 2024 +0100

    Prevent passing an array as login

    Signed-off-by: snipe <snipe@snipe.net>

commit d843cf8dcc
Merge: 1013dcae6 7e6ff3cbe
Author: snipe <snipe@snipe.net>
Date:   Sat Aug 17 00:52:10 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 1013dcae61
Merge: c30c649aa e7ef3bf51
Author: snipe <snipe@snipe.net>
Date:   Sat Aug 17 00:38:44 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 70e5e0f9df
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Fri Aug 16 12:52:06 2024 -0500

    get rid of dd

commit dec4691c73
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Fri Aug 16 12:50:09 2024 -0500

    should be good to go now

commit c30c649aaa
Merge: bb1385369 ad6d09b6a
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 16 16:44:02 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit bb1385369c
Merge: c1caf6088 43b338d61
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 16 16:18:00 2024 +0100

    Merge remote-tracking branch 'origin/develop'

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	public/css/build/app.css
    #	public/css/build/overrides.css
    #	public/css/dist/all.css
    #	public/mix-manifest.json

commit c1caf6088e
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 16 13:12:13 2024 +0100

    Prod assets

    Signed-off-by: snipe <snipe@snipe.net>

commit 12dfe71ea8
Merge: ca8926871 ea2b1b074
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 16 12:48:42 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit ca89268716
Merge: ec5731353 3167ee91d
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 16 11:02:56 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 94d8a547b8
Merge: 6521c0252 b39a7c6f0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Aug 15 13:47:49 2024 -0700

    Merge branch 'develop' into livewire-importer-improvements

commit 43b109fac0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Aug 15 13:20:22 2024 -0700

    Use cached values for textarea and radio input

commit 75c1e7658f
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Aug 15 10:43:41 2024 -0700

    Improve method name

commit e7c9c799bb
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Aug 15 10:40:23 2024 -0700

    Add wire:keys

commit 6ab976f353
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Aug 15 10:32:33 2024 -0700

    Use cached values for text input

commit ec5731353a
Merge: 3283704fe b39a7c6f0
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 15 15:53:52 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 3283704fe8
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 15 12:25:08 2024 +0100

    Updated assets

    Signed-off-by: snipe <snipe@snipe.net>

commit 540df32046
Merge: 85486fa58 594f50664
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 15 12:24:59 2024 +0100

    Merge remote-tracking branch 'origin/develop'

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	public/js/build/app.js
    #	public/js/dist/all.js
    #	public/mix-manifest.json

commit 85486fa58c
Merge: 3618df2ec 10dc1f136
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 15 10:53:54 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 3618df2ec5
Merge: a201f22fd 8f7bce7aa
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 15 10:44:39 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit a201f22fdb
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 15 10:36:12 2024 +0100

    Bumped version

    Signed-off-by: snipe <snipe@snipe.net>

commit 6070d530cf
Merge: 6c0cf9447 4d66f7c93
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 15 10:35:33 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 6c0cf94473
Merge: bf4b91516 381003eea
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 15 10:28:08 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 9622e05cf5
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Wed Aug 14 18:41:06 2024 -0500

    correct api test

commit afaf53cdfc
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Wed Aug 14 18:14:21 2024 -0500

    failing ui test

commit f031309f8f
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Wed Aug 14 16:09:15 2024 -0500

    set up api controller for route/model binding

commit 20ec420ba3
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Wed Aug 14 13:53:29 2024 -0500

    not quite done, api side needs some work

commit ab63a19aff
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Aug 14 11:01:51 2024 -0700

    Initialize concept of cached values

commit a70b94e707
Merge: 120cfd13c 3e2945709
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Wed Aug 14 11:36:19 2024 -0500

    Merge branch 'refs/heads/develop' into bug/sc-26584

commit 008bf036b5
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Aug 14 16:09:34 2024 +0100

    Got rid of weird namespace declaration and commented-out data-toggle line

commit cc5ad456e6
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Aug 14 15:59:21 2024 +0100

    Expose the 'sanitize' system for backup restores to the web GUI

commit bf4b915168
Merge: 0a9c2e354 0f1e5181a
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 14 10:45:13 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 0a9c2e354f
Merge: 47f1b3b14 e54400718
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 14 10:02:43 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 038e86954b
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Aug 13 17:30:53 2024 -0700

    Improve property name

commit f6c1642bf2
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Aug 13 17:01:35 2024 -0700

    Use computed fields in CustomFieldSetDefaultValuesForModel component

commit 120cfd13c5
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Tue Aug 13 14:07:40 2024 -0500

    translation

commit 09f2739298
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Tue Aug 13 13:45:41 2024 -0500

    works, un-reassignable licenses are an issue

commit 47f1b3b14e
Merge: 198b76ebc 3044af941
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 13 16:48:06 2024 +0100

    Merge remote-tracking branch 'origin/develop'

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	public/css/build/app.css
    #	public/css/build/overrides.css
    #	public/css/dist/all.css
    #	public/mix-manifest.json

commit 198b76ebc2
Merge: 5546f9676 6e84c29ce
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 13 15:47:00 2024 +0100

    Merge remote-tracking branch 'origin/develop'

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	public/css/build/app.css
    #	public/css/build/overrides.css
    #	public/css/dist/all.css
    #	public/mix-manifest.json

commit 5546f9676a
Merge: 46caa478d 9e73eaf95
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 13 13:51:33 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit ec863df007
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Mon Aug 12 16:58:53 2024 -0500

    rm conditional that might be unnecessary

commit cc3b8e0681
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Mon Aug 12 16:58:21 2024 -0500

    this should more or less work, but i need to determine if this is the best way

commit ff145abbe7
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Mon Aug 12 16:13:03 2024 -0500

    use array for eager loading, makes ide prettier

commit 46caa478d2
Merge: 4d8569e75 e6106aa7c
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 12 20:47:45 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 4d8569e754
Merge: 4dc57f95e c9f8a84d4
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 12 18:01:21 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 4dc57f95e2
Merge: 316ee6f81 9d354ca65
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 12 16:38:23 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 316ee6f810
Merge: 509cc812e 3f2139349
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 12 16:30:53 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 509cc812ea
Merge: d5f66bc0d e7fb29fce
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 12 15:58:40 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit d5f66bc0dd
Merge: 1e213c31e ce5be8ac2
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 12 10:10:59 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 1e213c31ef
Merge: 91874dfe0 1777bb4b9
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 11 10:26:16 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 91874dfe0b
Merge: 0e6eda5e8 5c6c655cd
Author: snipe <snipe@snipe.net>
Date:   Sat Aug 10 19:37:37 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 0e6eda5e8a
Merge: 24560b936 60eb60215
Author: snipe <snipe@snipe.net>
Date:   Sat Aug 10 18:29:41 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 24560b9362
Author: snipe <snipe@snipe.net>
Date:   Sat Aug 10 18:24:49 2024 +0100

    Updated prod assets

    Signed-off-by: snipe <snipe@snipe.net>

commit 6521c02526
Merge: 8d1cc22c5 9350a2018
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Aug 7 15:20:39 2024 -0700

    Merge branch 'develop' into livewire-importer-improvements

    # Conflicts:
    #	resources/views/livewire/importer.blade.php

commit bb465dbfaa
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Jul 24 15:09:23 2024 +0100

    Cut down run number to 100 from 1000

commit 8cbcc237c0
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Jul 24 13:27:31 2024 +0100

    Cleanup of Stale workflow for GH - set to debug-mode to start

commit 97e3af8fc9
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Sat Jun 29 00:59:47 2024 +0100

    WIP on new GitHub-backed stalebot settings

commit 914e29210a
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Jun 26 18:53:01 2024 +0100

    Initial rough stab at re-implementing stalebot

commit 8d1cc22c58
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Jul 18 12:00:01 2024 -0700

    Turn on legacy binding since other components still use it

commit 7685de45f2
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Jul 17 17:12:14 2024 -0700

    Turn off legacy binding

commit 199e68ff29
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Jul 17 17:10:12 2024 -0700

    Simplify computed propery

commit 81bffccf01
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Jul 17 16:28:26 2024 -0700

    Use better error message

commit cfca1514c0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Jul 17 16:22:44 2024 -0700

    Swap file_id for activeFileId

commit b4ed01243b
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Jul 17 13:40:41 2024 -0700

    Add more details

commit 3772a21a51
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Jul 17 13:37:24 2024 -0700

    Move comment up

commit 04b6cb763f
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Jul 17 10:58:48 2024 -0700

    Add todo

commit dd32341502
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Jul 16 17:21:18 2024 -0700

    Display message if attempting to delete non-existent file

commit f58e3114a2
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Jul 16 17:17:45 2024 -0700

    Simplify destroy method and update list

commit eba494ad8c
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Jul 16 17:03:42 2024 -0700

    Make $activeFile a computed property

commit 7e89b58746
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Jul 16 16:08:42 2024 -0700

    Move files to computed property

commit b7744105a0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Jul 16 14:20:41 2024 -0700

    Migrate import type to component

commit 69263f0e5b
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Jul 16 13:30:29 2024 -0700

    Migrate header row to component

commit 017530ba4b
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Jul 16 12:02:50 2024 -0700

    Make updating hook more specific

commit c8dad528a8
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Jul 15 16:15:58 2024 -0700

    Migrate a couple items out of mount

commit 256e989ba1
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Jul 15 15:49:18 2024 -0700

    Add test for importer

commit 9793016603
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Jul 11 13:32:16 2024 -0700

    Remove unneeded AuthorizesRequests

commit 9e06f2d17f
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Jul 11 13:22:10 2024 -0700

    Remove commented code

commit d4d19569ee
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Jul 11 10:52:47 2024 -0700

    adds execution timer

commit 43c7504f89
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Jul 11 10:03:51 2024 -0700

    adds an all option, adds help context for all, seperates logic

commit 1fa6a763bc
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Jul 10 11:09:57 2024 -0700

    updated description

commit 726308bfd5
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Jul 10 10:58:45 2024 -0700

    removed typo

commit 22ddb695f2
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Jul 10 10:57:47 2024 -0700

    better description

commit 09b2feac54
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Jul 10 10:56:44 2024 -0700

    updates assets with selected model to inherit asset model eol

commit 57e1df86c8
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Jul 10 10:21:24 2024 -0700

    finds model and collects assets with such model

commit 3ea5d4ee40
Author: Robert-Azelis <82208283+Robert-Azelis@users.noreply.github.com>
Date:   Thu May 2 12:55:17 2024 +0200

    Update BulkAssetsController.php

    Fix for bulk updarte of purchase date to calculate new EOL

commit 5fa0c87ab0
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Apr 30 12:02:11 2024 -0700

    null debugbar

commit 75aa01791a
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Apr 30 11:54:33 2024 -0700

    adds location select to the create new user vice asset checkout

commit c62a022252
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Mar 21 14:34:47 2024 -0700

    replaced for loop with eloquent query update

commit 866f0a9f56
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Mar 19 11:58:49 2024 -0700

    syncs assets location to users location

commit 05a8d3030b
Author: Godfrey M <godmartinz@gmail.com>
Date:   Sat Mar 16 19:54:48 2024 -0700

    correct column name

commit 595dad0f18
Author: Godfrey M <godmartinz@gmail.com>
Date:   Sat Mar 16 19:51:40 2024 -0700

    updates all assets assigned to user with new location

commit 697595d963
Merge: 0bdd8a591 9502525a4
Author: akemidx <116301219+akemidx@users.noreply.github.com>
Date:   Tue Nov 21 16:07:26 2023 -0500

    Merge branch 'develop' into eol_date_range_for_reports

commit 0bdd8a5917
Author: akemidx <kojotek.dx@gmail.com>
Date:   Wed Aug 2 16:40:38 2023 -0400

    fixing key names

commit e35dd2daa1
Author: akemidx <kojotek.dx@gmail.com>
Date:   Wed Jul 26 17:45:18 2023 -0400

    asset_eol_date stuff

commit f71b69a739
Author: akemidx <kojotek.dx@gmail.com>
Date:   Wed Jul 26 17:31:06 2023 -0400

    adding eol fields

commit 499a3debcd
Author: akemidx <kojotek.dx@gmail.com>
Date:   Tue Jul 11 14:08:55 2023 -0400

    this WILL break. i'm back to site not found which is something missing. otherwise the columns are either blank or another value like expected checkin i was using to test a bit

Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 15:45:01 +00:00
snipe
503d044fb8 Don’t show new user welcome if location or asset model import
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 15:36:02 +00:00
snipe
752221ee84 Removed error log
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 15:35:34 +00:00
snipe
f87ebb4710 Fixed tests
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 15:16:18 +00:00
snipe
abab062756 Added fieldset and depreciation import
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 15:16:08 +00:00
snipe
6f25ed3c59 More nuance to human boolean check
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 15:15:34 +00:00
snipe
6c2cfe0405 Removed log line
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 14:48:24 +00:00
snipe
d1ba16d0eb Added requestable to fillable
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 14:48:05 +00:00
snipe
b3f84f7293 Added aliases, removed depreciation from import
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 14:47:55 +00:00
snipe
e38c2139f8 Merge remote-tracking branch 'origin/develop' 2024-11-13 01:43:17 +00:00
snipe
615edbbd43 Updated seeder
Signed-off-by: snipe <snipe@snipe.net>
2024-11-13 01:42:39 +00:00
snipe
c012bf0ece Merge pull request #15799 from Godmartinz/update_deprecated_trigger_for_ms_teams
Updated deprecated trigger for ms teams
2024-11-13 00:55:53 +00:00
Godfrey M
947351af67 removed unused variabl 2024-11-12 16:49:02 -08:00
Godfrey M
4e0d70e0b8 checkin notif was missing 2024-11-12 15:44:14 -08:00
Godfrey M
832ccc6aa3 updated deprecated trigger for ms teams 2024-11-12 15:35:09 -08:00
snipe
48713cbddf Added additional helper files to assetmodel importer
Signed-off-by: snipe <snipe@snipe.net>
2024-11-12 22:40:00 +00:00
snipe
787340b987 Merge pull request #14441 from Godmartinz/ldap_location-resync
Fixes Assets location not being resynced when Users location is updated via LDAP
2024-11-12 22:35:11 +00:00
Marcus Moore
53de97db4e Merge branch 'develop' into saving_custom_report_template 2024-11-12 10:36:07 -08:00
Marcus Moore
5574c5fa49 Improve comments 2024-11-12 10:35:22 -08:00
Marcus Moore
7373e2019c Improve comment 2024-11-12 10:01:32 -08:00
snipe
22c79d8e1b Squashed commit of the following:
commit 6bec573956
Merge: b6ad69fac 1fc5bb54e
Author: snipe <snipe@snipe.net>
Date:   Mon Nov 11 13:54:09 2024 +0000

    Merge pull request #15794 from snipe/check_for_file_on_asset_acceptance

    Check that the file exists before trying to download stored EULA

commit 1fc5bb54e1
Author: snipe <snipe@snipe.net>
Date:   Mon Nov 11 13:50:53 2024 +0000

    Check that the file exists before trying to download

    Signed-off-by: snipe <snipe@snipe.net>

commit b6ad69fac2
Merge: 357ef7e37 47b2cdb84
Author: snipe <snipe@snipe.net>
Date:   Sun Nov 10 18:05:20 2024 +0000

    Merge pull request #15793 from snipe/allow_eol_explicit

    Allow user to specify null for calculation or explicit on bulk edit

commit 47b2cdb846
Author: snipe <snipe@snipe.net>
Date:   Sun Nov 10 18:04:13 2024 +0000

    Allow user to specify null for calculation or explicit on bulk edit

    Signed-off-by: snipe <snipe@snipe.net>

commit 357ef7e375
Merge: 000f3171e 6928b1b27
Author: snipe <snipe@snipe.net>
Date:   Sun Nov 10 17:48:25 2024 +0000

    Merge pull request #15792 from snipe/edit_eol_from_bulk

    Added EOL date to bulk asset edit

commit 6928b1b273
Author: snipe <snipe@snipe.net>
Date:   Sun Nov 10 17:47:10 2024 +0000

    Added eol date to bulk asset edit

    Signed-off-by: snipe <snipe@snipe.net>

commit 000f3171e3
Author: snipe <snipe@snipe.net>
Date:   Fri Nov 8 10:28:01 2024 +0000

    Upgrade jspdf-autotable from 3.8.3 to 3.8.4 #15786

    Signed-off-by: snipe <snipe@snipe.net>

commit 5ef3183a52
Merge: a41529dbc 050831868
Author: snipe <snipe@snipe.net>
Date:   Thu Nov 7 11:44:06 2024 +0000

    Merge pull request #15783 from uberbrady/improve_user_and_location_manager_indexes

    Improved indexes on manager_id for locations and users, including del…

commit 050831868e
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Thu Nov 7 11:39:27 2024 +0000

    Improved indexes on manager_id for locations and users, including deleted_at

commit a41529dbc4
Merge: aa168fcb5 4fcf5ac7d
Author: snipe <snipe@snipe.net>
Date:   Wed Nov 6 21:22:45 2024 +0000

    Merge pull request #15780 from uberbrady/add_manager_indexes

    Add new indexes to locations and users for faster manager lookups

commit 4fcf5ac7da
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Nov 6 21:19:41 2024 +0000

    Add new indexes to locations and users for faster manager lookups

commit aa168fcb5b
Author: snipe <snipe@snipe.net>
Date:   Wed Nov 6 18:41:52 2024 +0000

    Updated BS table to 1.23.5

    Signed-off-by: snipe <snipe@snipe.net>

commit 9c1c93ad52
Merge: b96a31253 ad99b8b45
Author: snipe <snipe@snipe.net>
Date:   Wed Nov 6 18:40:35 2024 +0000

    Merge pull request #15774 from marcusmoore/feature/sc-27350

    Added Checkout ID column to user accessory table

commit ad99b8b456
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Nov 6 10:37:31 2024 -0800

    Use generic ID translation

commit b96a312539
Merge: 654f67b6a bab1e58ea
Author: snipe <snipe@snipe.net>
Date:   Wed Nov 6 18:29:22 2024 +0000

    Merge pull request #15779 from ubc-cpsc/bugfix/CVE-2024-50345

    Fixes CVE-2024-50342, CVE-2024-50345, CVE-2024-51736

commit bab1e58ea4
Author: Joël Pittet <pittet@cs.ubc.ca>
Date:   Wed Nov 6 09:46:11 2024 -0800

    symfony/http-client CVE-2024-50342, symfony/http-foundation CVE-2024-50345, symfony/process CVE-2024-51736

commit 654f67b6ac
Author: snipe <snipe@snipe.net>
Date:   Wed Nov 6 14:05:42 2024 +0000

    Updated webpack

    Signed-off-by: snipe <snipe@snipe.net>

commit 3965bcd7c1
Merge: 287f4addf 2362cb5e5
Author: snipe <snipe@snipe.net>
Date:   Wed Nov 6 14:02:44 2024 +0000

    Merge pull request #15773 from Godmartinz/Fix_failing_failing_tests

    Fixed notifications for licenses and asset to asset checkoutables

commit 2362cb5e52
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Nov 4 16:32:46 2024 -0800

    refactor to getNotifiables

commit e7cb4a75eb
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Nov 4 15:56:53 2024 -0800

    Show accessory checkout id in user accessory table

commit 93494ac554
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Nov 4 15:17:58 2024 -0800

    put dataprovider back in for tests

commit 0d707a1851
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Nov 4 15:13:10 2024 -0800

    fixes notifications for licenses and asset to asset checkouables

commit 287f4addf0
Merge: f32ebdc7a 2e96d478f
Author: snipe <snipe@snipe.net>
Date:   Mon Nov 4 20:06:24 2024 +0000

    Merge pull request #15771 from snipe/revert-15744-chore/action-tests-debugging

    Revert "Added the display of logs when tests fail in GitHub Actions"

commit 2e96d478f1
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Nov 4 11:04:17 2024 -0800

    Revert "Added the display of logs when tests fail in GitHub Actions"

commit f32ebdc7ac
Merge: 5897d37fc d6c7dc8e1
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 31 22:39:58 2024 +0000

    Merge pull request #15765 from marcusmoore/chore/add-missing-livewire-file

    Added missing Livewire file

commit d6c7dc8e1c
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 31 15:37:01 2024 -0700

    Add missing livewire file

commit 5897d37fcf
Merge: 49de07045 21a27dcac
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 31 20:54:01 2024 +0000

    Merge pull request #15763 from Godmartinz/no_to_email_check

    Fixed emails not being send if target has no email or if not instance of User. Cc_emails will still be sent.

commit 21a27dcac1
Merge: 379138076 49de07045
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 31 12:55:46 2024 -0700

    fixed conflicts

commit 3791380764
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 31 12:52:47 2024 -0700

    remove unused uses

commit 7a0f79ecd2
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 31 12:51:22 2024 -0700

    remove test route

commit 97a449e80e
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 31 12:50:13 2024 -0700

    removes instanceof User check

commit e65942064e
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 31 12:45:29 2024 -0700

    send emails even if target has no email

commit 49de07045a
Merge: 7e996c40f 73772a013
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 31 17:53:17 2024 +0000

    Merge pull request #15731 from Godmartinz/refacto_ms_teams_notifs

    Fixed MS Team Notifications to utilize workflows after deprecation

commit 7e996c40f5
Merge: 73e8f160c 69e74bbdd
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 31 02:51:42 2024 +0000

    Merge pull request #15758 from snipe/jerm/fix-deprecation-warning

    Fix ${var} deprecation warning in License model

commit 69e74bbdd3
Author: Jeremy Price <jeremy@grokability.com>
Date:   Wed Oct 30 19:43:54 2024 -0700

    Fix ${var} deprecation warning in License model

    When upgrading to php8.3 i started getting deprecation warning about
    using ${var} instead of {$var} in 2 places in License.php

    PHP Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /var/www/snipe-it/app/Models/License.php on line 187
    PHP Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /var/www/snipe-it/app/Models/License.php on line 219

    This simple fix switches the offending statements to {$var} syntax.

commit 73e8f160cf
Merge: f68df1fa0 bd23772fe
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 30 19:29:09 2024 +0000

    Merge pull request #15756 from Godmartinz/cc-email-array

    changes `admin_cc_email` validation to allow an array

commit bd23772fe9
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 30 11:42:15 2024 -0700

    changes cc_email validation to allow array

commit 73772a0138
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 30 11:12:31 2024 -0700

    change button text

commit b26cae372c
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 30 10:40:23 2024 -0700

    merged in develop

commit d6ba303f39
Merge: 9a0eee8f0 f68df1fa0
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 30 10:27:45 2024 -0700

    Merge branch 'develop' into refacto_ms_teams_notifs

    # Conflicts:
    #	app/Listeners/CheckoutableListener.php

commit f68df1fa06
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 30 13:21:13 2024 +0000

    Made type searchable in action logs

    Signed-off-by: snipe <snipe@snipe.net>

commit f0813e03bf
Merge: 05875ebd1 58ff641f8
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 30 12:18:41 2024 +0000

    Merge pull request #15681 from Godmartinz/seperating_notification_n_mail

    Separated Notifications and Emails: Check ins and Check outs

commit 05875ebd1f
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 28 22:04:35 2024 +0000

    Updated translations

    Signed-off-by: snipe <snipe@snipe.net>

commit 9a0eee8f03
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Oct 28 15:03:43 2024 -0700

    revert testing variables

commit 6128765d1f
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Oct 28 15:03:03 2024 -0700

    change wording on notification button

commit c24f79c025
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Oct 28 14:58:43 2024 -0700

    update method comment

commit e7c4343c90
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Oct 28 14:56:48 2024 -0700

    readd checkin accessory format

commit c0620c27ff
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Oct 28 14:30:34 2024 -0700

    adds back laravels channel formats

commit ed81973fe6
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Oct 28 13:57:42 2024 -0700

    adds notifications for deprecation

commit 2d318b394c
Merge: 86d784bd5 5c4971612
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 28 18:41:49 2024 +0000

    Merge pull request #15744 from marcusmoore/chore/action-tests-debugging

    Added the display of logs when tests fail in GitHub Actions

commit b987b3dc00
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Oct 28 10:57:48 2024 -0700

    adds back the laravel channels package and applies a deprecated check

commit 5c49716129
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Oct 28 10:24:35 2024 -0700

    Dump logs on test failure

commit 86d784bd59
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 28 13:37:59 2024 +0000

    Fixed #15740 - use non-translated strings for icons

    Signed-off-by: snipe <snipe@snipe.net>

commit 589f9cccdf
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 28 12:04:10 2024 +0000

    Fixed  #15732

    Signed-off-by: snipe <snipe@snipe.net>

commit 4d848e45e6
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 28 11:55:24 2024 +0000

    Fixed #15736

    Signed-off-by: snipe <snipe@snipe.net>

commit 58ff641f82
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 24 22:53:53 2024 -0700

    removed unused variables

commit ce68f550d8
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 24 16:01:17 2024 -0700

    remove alert emails from cc

commit 6f0c1b12b1
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 24 15:04:54 2024 -0700

    this adds check out message for consumables

commit 278bc5e52a
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 24 14:59:10 2024 -0700

    ads check in and checkout message for license seats

commit cce75a8185
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 24 14:48:23 2024 -0700

    adds check in and checkout messag for accessories

commit e27ff13377
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 24 14:39:40 2024 -0700

    adds check in and checkout message for assets

commit 56365495a1
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 24 14:26:42 2024 -0700

    remove unnecessary fields in accessory checkout mail

commit 18da80e6de
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 24 14:24:00 2024 -0700

    fix checkoutable listener for microsoft teams

commit 18760e3fa1
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 24 12:21:51 2024 -0700

    replaces teams notification package, passes integration test

commit 57107c487c
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 24 09:40:10 2024 -0700

    fixed last test, definetly the last test

commit dfc63641dc
Merge: 07a51ec8b b6340532d
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 24 11:40:50 2024 +0100

    Merge pull request #15550 from uberbrady/fix_multi_create_partial_failure

    Fix multi create partial failure (fixes: [RB-18591])

commit 07a51ec8b1
Merge: e0ec6795b 727c0e458
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 24 10:03:10 2024 +0100

    Merge pull request #15712 from Godmartinz/fix_import-progress-bar

    Upgraded `livewire v3.5.9 => v3.5.12`

commit 6329f5b87e
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 23 17:33:23 2024 -0700

    removed unused variable from test

commit e0ec6795b5
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 24 01:27:50 2024 +0100

    Use crucial for seeded data

    Signed-off-by: snipe <snipe@snipe.net>

commit 15073a0d38
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 23 17:27:37 2024 -0700

    last test to fix

commit a80c09c16d
Merge: ab3b9c451 5509d756b
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 23 17:23:55 2024 -0700

    Merge branch 'develop' into seperating_notification_n_mail

commit 5509d756b7
Merge: 55ba6279a b16a978f1
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 24 01:12:11 2024 +0100

    Merge pull request #15722 from Godmartinz/fix_component_factory

    Fixed Component Factory: use manufacturer factory for `manufactuer_id`

commit b16a978f1b
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 23 16:25:51 2024 -0700

    uses manufacturer factory for manufactuer_id

commit ab3b9c4510
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 23 16:24:01 2024 -0700

    remove unnecessary code from checkinasset notification

commit 2cc2b2b1df
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 23 16:06:27 2024 -0700

    apply array_filter to cc emails to prevent errors

commit 62d06b44d6
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 23 15:43:42 2024 -0700

    set fallback from email address to service.snipe-it.io

commit f29a383179
Merge: fd74c3510 55ba6279a
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 23 15:15:14 2024 -0700

    Merge branch 'develop' into seperating_notification_n_mail

    # Conflicts:
    #	app/Notifications/CheckoutConsumableNotification.php

commit fd74c35102
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 23 15:08:29 2024 -0700

    remove old notify by mail from consumable notification

commit c681946b1d
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 23 15:05:39 2024 -0700

    added component markdown changes

commit 257d25bd9e
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 23 14:56:54 2024 -0700

    removed import notification from test, feature is not present in project

commit 6c34a5c52c
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 23 14:54:21 2024 -0700

    conditionally check cc emails, initiate variables

commit 1b5f4415ae
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 23 14:44:45 2024 -0700

    corrected cc email behavior

commit 55ba6279a4
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 23 19:14:17 2024 +0100

    Use trans_choice on alert menu

    Signed-off-by: snipe <snipe@snipe.net>

commit a9eea830e3
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 23 19:05:34 2024 +0100

    Added manufacturer and model number to component seeders

    Signed-off-by: snipe <snipe@snipe.net>

commit af564935d5
Merge: d58f87862 3ee76be7e
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 23 17:56:04 2024 +0100

    Merge pull request #15720 from snipe/15695_adds_manufacturer_and_model_number_to_components

    Fixed #15695 - Added manufacturer and model_number to components

commit 3ee76be7e3
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 23 17:50:22 2024 +0100

    Added manufacturer and model_number to components

    Signed-off-by: snipe <snipe@snipe.net>

commit d58f87862c
Merge: 5da3ce356 0b6859c49
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 23 15:09:50 2024 +0100

    Merge pull request #15719 from snipe/#15717_adds_qty_to_consumable

    Fixed #15717 - Added ability to checkout consumables in variable qty via API

commit 0b6859c491
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 23 15:05:35 2024 +0100

    Added ability to checkout consumables in variable qty

    Signed-off-by: snipe <snipe@snipe.net>

commit 1e9922a0b0
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Oct 22 16:14:36 2024 -0700

    fix moar tests

commit ead27accac
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Oct 22 15:45:52 2024 -0700

    fixed accessory tests and notifiable target

commit 727c0e458c
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Oct 22 14:34:39 2024 -0700

    remove translation

commit 870dc747db
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Oct 22 14:27:32 2024 -0700

    oops

commit 0fb3d83fac
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Oct 22 14:26:54 2024 -0700

    revert controller change

commit 0d59ccd6a6
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Oct 22 14:23:26 2024 -0700

    upgraded livewire v3.5.9 => v3.5.12

commit 5da3ce3564
Merge: c3bbca30a 5ecd2b629
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 22:10:20 2024 +0100

    Merge pull request #15711 from marcusmoore/fixes/custom-fieldset-checkboxes

    Fixed custom field checkboxes on asset edit page

commit c3bbca30ad
Merge: dccb788a8 37f14fff3
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 22:07:50 2024 +0100

    Merge pull request #15710 from snipe/fixes_lightbox_for_avif

    Fixes #15701 - load avif files properly in lightbox

commit 37f14fff3b
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 22:07:28 2024 +0100

    Fixed typo

    Signed-off-by: snipe <snipe@snipe.net>

commit eb6c51fabd
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 22:04:57 2024 +0100

    Fixes #15701 - load avif files properly in lightbox

    Signed-off-by: snipe <snipe@snipe.net>

commit 5ecd2b6293
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Oct 22 14:04:05 2024 -0700

    Default checkbox elements to an empty array

commit 1e31592c55
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Oct 22 11:49:06 2024 -0700

    messing with the tests

commit dccb788a88
Merge: 5e1d792bb d10fe77ee
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 17:44:30 2024 +0100

    Merge pull request #15691 from marcusmoore/fixes/get-id-for-current-user

    Updated `Company::getIdForCurrentUser()` to return null in certain scenarios

commit d10fe77ee7
Merge: e1882ee6d 5e1d792bb
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Oct 22 09:38:31 2024 -0700

    Merge branch 'develop' into fixes/get-id-for-current-user

commit 5e1d792bba
Merge: 9cf71976f 780ed91a1
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 16:52:28 2024 +0100

    Merge pull request #15687 from NebelKreis/fix/dashboard-title-casing

    Fixed #15686: Corrected capitalization for dashboard section titles by removing strtolower()

commit 9cf71976f6
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 16:51:42 2024 +0100

    Fixed #15706 - Removed purchase order number from asset import

    Signed-off-by: snipe <snipe@snipe.net>

commit 15745d9737
Merge: bd97955b9 3f74ff25d
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 16:39:44 2024 +0100

    Merge pull request #15566 from Godmartinz/status-label-error-message

    Fixed Status Labels Error Message

commit bd97955b9e
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 16:38:46 2024 +0100

    Bumped hash

    Signed-off-by: snipe <snipe@snipe.net>

commit 252d99421c
Merge: 5767a98ad db8170162
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 16:26:48 2024 +0100

    Merge pull request #15689 from snipe/better_handle_inline_files

    Better handle inline files in file listing

commit 5767a98ad8
Merge: 0c820cbc0 524a44272
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 16:26:23 2024 +0100

    Merge pull request #15649 from bryanlopezinc/ImproveImporting

    Improve import performance

commit 0c820cbc0d
Merge: 147fcfb8e 3153bbb13
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 15:56:12 2024 +0100

    Merge pull request #15598 from spencerrlongg/bug/custom_field_validation_issue

    Custom Field Existence Validation Issue

commit db81701621
Merge: a05c33feb 147fcfb8e
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 15:44:24 2024 +0100

    Merge branch 'develop' into better_handle_inline_files

commit a05c33febf
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 15:43:19 2024 +0100

    Squashed commit of the following:

    commit 147fcfb8eb
    Merge: 58a3d09b5 fdcc17ca2
    Author: snipe <snipe@snipe.net>
    Date:   Tue Oct 22 15:12:55 2024 +0100

        Merge pull request #15676 from Toreg87/fixes/api_create_user_fmcs

        Fix user creation with FullMultipleCompanySupport enabled over API

    commit 58a3d09b5f
    Merge: 30a06a594 867fa2f36
    Author: snipe <snipe@snipe.net>
    Date:   Tue Oct 22 14:55:42 2024 +0100

        Merge pull request #15703 from marcusmoore/bug/sc-27188

        Linked accessory files in activity report

    commit 30a06a5942
    Merge: 6c6af78e0 ce3086317
    Author: snipe <snipe@snipe.net>
    Date:   Tue Oct 22 11:47:06 2024 +0100

        Merge pull request #15693 from marcusmoore/chore/remove-parallel-testing

        Removed brianium/paratest

    commit 6c6af78e08
    Merge: 9b06bbb6c 3f79fd7ea
    Author: snipe <snipe@snipe.net>
    Date:   Tue Oct 22 11:46:04 2024 +0100

        Merge pull request #15705 from marcusmoore/tests/icon-component-test

        Added test to ensure icon component does not end in newline

    commit 3f79fd7ea7
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Oct 21 17:07:40 2024 -0700

        Add test to ensure icon component does not end in newline

    commit 9b06bbb6c3
    Merge: 46ad1d072 d7f70146f
    Author: snipe <snipe@snipe.net>
    Date:   Mon Oct 21 22:38:26 2024 +0100

        Merge pull request #15704 from marcusmoore/bug/remove-extra-icon

        Removed second icon in accessory file list

    commit ce30863177
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Oct 21 13:57:04 2024 -0700

        Remove brianium/paratest dependency

    commit d7f70146f4
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Oct 21 13:48:25 2024 -0700

        Remove extra icon in accessory file upload list

    commit 867fa2f36e
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Oct 21 12:40:24 2024 -0700

        Display file in activity report for accessories

    commit 0933a2d4ea
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Oct 17 18:01:48 2024 -0700

        Remove --parallel flag

    commit 46ad1d072f
    Merge: bcb4bd9eb 3cf746d7d
    Author: snipe <snipe@snipe.net>
    Date:   Thu Oct 17 15:29:47 2024 +0100

        Merge pull request #15680 from uberbrady/bulk_checkout_to_bulk_actions

        Bulk checkout to bulk actions

    commit bcb4bd9eb4
    Merge: 250037540 f50ccbcc4
    Author: snipe <snipe@snipe.net>
    Date:   Thu Oct 17 10:20:13 2024 +0100

        Merge pull request #15683 from Toreg87/fixes/outdated_comment

        Fix outdated comment in CompanyableTrait

    commit f50ccbcc49
    Author: Tobias Regnery <tobias.regnery@gmail.com>
    Date:   Thu Oct 17 11:07:28 2024 +0200

        Fix outdated comment in CompanyableTrait

        As of commit 5800e8d the user model uses CompanyableTrait so remove this clearly outdated comment

    commit 3cf746d7df
    Author: Brady Wetherington <bwetherington@grokability.com>
    Date:   Wed Oct 16 23:13:32 2024 +0100

        Rework the bulk checkout to not change how all checkouts work

    commit 6b7af802af
    Author: Brady Wetherington <bwetherington@grokability.com>
    Date:   Thu Oct 10 13:28:23 2024 +0100

        Add 'bulk checkout' as one of the bulk actions in the bulk actions toolbar

    commit fdcc17ca2c
    Author: Tobias Regnery <tobias.regnery@gmail.com>
    Date:   Wed Oct 16 11:18:24 2024 +0200

        Fix user creation with FullMultipleCompanySupport enabled over API

        It is currently possible as a non-superuser to create a new user or patch an existing user with arbitrary company over the API if FullMultipleCompanySupport is enabled.
        Altough a highly unlikely scenario as the user needs permission to create API keys and new users, it is a bug that should get fixed.

        Add a call to getIdForCurrentUser() to normalize the company_id if FullMultipleCompanySupport is enabled.

    Signed-off-by: snipe <snipe@snipe.net>

commit 147fcfb8eb
Merge: 58a3d09b5 fdcc17ca2
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 15:12:55 2024 +0100

    Merge pull request #15676 from Toreg87/fixes/api_create_user_fmcs

    Fix user creation with FullMultipleCompanySupport enabled over API

commit 58a3d09b5f
Merge: 30a06a594 867fa2f36
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 14:55:42 2024 +0100

    Merge pull request #15703 from marcusmoore/bug/sc-27188

    Linked accessory files in activity report

commit 30a06a5942
Merge: 6c6af78e0 ce3086317
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 11:47:06 2024 +0100

    Merge pull request #15693 from marcusmoore/chore/remove-parallel-testing

    Removed brianium/paratest

commit 6c6af78e08
Merge: 9b06bbb6c 3f79fd7ea
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 11:46:04 2024 +0100

    Merge pull request #15705 from marcusmoore/tests/icon-component-test

    Added test to ensure icon component does not end in newline

commit 3f79fd7ea7
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Oct 21 17:07:40 2024 -0700

    Add test to ensure icon component does not end in newline

commit 9b06bbb6c3
Merge: 46ad1d072 d7f70146f
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 21 22:38:26 2024 +0100

    Merge pull request #15704 from marcusmoore/bug/remove-extra-icon

    Removed second icon in accessory file list

commit ce30863177
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Oct 21 13:57:04 2024 -0700

    Remove brianium/paratest dependency

commit d7f70146f4
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Oct 21 13:48:25 2024 -0700

    Remove extra icon in accessory file upload list

commit 867fa2f36e
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Oct 21 12:40:24 2024 -0700

    Display file in activity report for accessories

commit e1882ee6d2
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Oct 21 12:21:45 2024 -0700

    Add comment

commit 7eee239378
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Oct 21 12:20:28 2024 -0700

    use is_numeric instead of is_int

commit 4188849ae1
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Oct 21 12:19:48 2024 -0700

    Add failing test case

commit 787e651778
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 21 16:52:21 2024 +0100

    Fixed todos with log message

    Signed-off-by: snipe <snipe@snipe.net>

commit ef9b6e3b07
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 21 16:34:54 2024 +0100

    Code cleanup

    Signed-off-by: snipe <snipe@snipe.net>

commit 06c599cc17
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 21 16:34:03 2024 +0100

    Added method to show or download file

    Signed-off-by: snipe <snipe@snipe.net>

commit 6105323877
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 21 14:11:20 2024 +0100

    Use plural class name for src

    Signed-off-by: snipe <snipe@snipe.net>

commit 0933a2d4ea
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 17 18:01:48 2024 -0700

    Remove --parallel flag

commit a8d853c44a
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 17 15:26:27 2024 -0700

    Remove focus group tags

commit 7e1b47708e
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 17 15:18:41 2024 -0700

    Fix failing test ensuring company id is an integer

commit 979e4502ff
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 17 15:14:39 2024 -0700

    Have getIdForCurrentUser method return null if FMCS enabled, user is not super admin, and does not have company

commit ff113ef523
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 17 14:56:58 2024 -0700

    typo fix

commit 99dd51a965
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 17 14:53:18 2024 -0700

    Improve name

commit 15c2169477
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 17 14:31:05 2024 -0700

    Scaffold additional tests

commit 50fa6ce335
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 17 14:12:22 2024 -0700

    Scaffold tests

commit 7ae76e7db9
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 17 13:55:03 2024 -0700

    remove viewdata array from 3 tests

commit b98058ca98
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 17 13:48:26 2024 -0700

    fix tests pt 3

commit 83e8186d9e
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 17 13:39:56 2024 -0700

    fix assertSent to AssertNotSent on some test

commit cdd4fef7df
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 17 13:34:55 2024 -0700

    attempt to fix tests p2

commit dceb8e305f
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 17 13:11:39 2024 -0700

    attempt to fix tests

commit 123cdeb858
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 17 12:39:48 2024 -0700

    add email check to listener

commit 496b44e887
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 17 12:28:57 2024 -0700

    merged composer lock from dev

commit a690cc3582
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 17 12:26:55 2024 -0700

    removing my composer stuff again..for the last time

commit ceb3f5cea6
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 17 12:19:50 2024 -0700

    added mail-gun and http-client to 8.1

commit 65735a31f1
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 17 12:18:34 2024 -0700

    removed symfony/mailgun-mailer symfony/http-client

commit 285d6897cf
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Oct 17 12:05:36 2024 -0700

    added a coulple test adjustments and moved mail send logic to listener

commit 159a1d3f43
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 17 11:48:55 2024 -0700

    Be more explicit

commit d1149730be
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 16:31:17 2024 +0100

    Apply blade component to files views

    Signed-off-by: snipe <snipe@snipe.net>

commit 46ad1d072f
Merge: bcb4bd9eb 3cf746d7d
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 15:29:47 2024 +0100

    Merge pull request #15680 from uberbrady/bulk_checkout_to_bulk_actions

    Bulk checkout to bulk actions

commit 780ed91a10
Author: NebelKreis <leipold.johannes@web.de>
Date:   Thu Oct 17 16:09:25 2024 +0200

    Fix: Removed strtolower() from dashboard titles

    This fix ensures the correct capitalization in different languages.

commit bcb4bd9eb4
Merge: 250037540 f50ccbcc4
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 10:20:13 2024 +0100

    Merge pull request #15683 from Toreg87/fixes/outdated_comment

    Fix outdated comment in CompanyableTrait

commit f50ccbcc49
Author: Tobias Regnery <tobias.regnery@gmail.com>
Date:   Thu Oct 17 11:07:28 2024 +0200

    Fix outdated comment in CompanyableTrait

    As of commit 5800e8d the user model uses CompanyableTrait so remove this clearly outdated comment

commit 9a79483375
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 16:59:18 2024 -0700

    removed namespaces from routing

commit ed6034065b
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 16:47:36 2024 -0700

    removed test route

commit a7754c1a7f
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 16:46:52 2024 -0700

    fixed asset checkout markdown, and notifiable variable

commit 0e9b3c9119
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 00:27:39 2024 +0100

    Check for existence before trying to get the icon

    Signed-off-by: snipe <snipe@snipe.net>

commit 4933aa5784
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 00:27:04 2024 +0100

    Add StorageHelper to app config

    Signed-off-by: snipe <snipe@snipe.net>

commit d67addc69e
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 00:21:43 2024 +0100

    Removed filetype column - it’s dumb

    Signed-off-by: snipe <snipe@snipe.net>

commit 02c80ff18a
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 00:18:40 2024 +0100

    Added comment

    Signed-off-by: snipe <snipe@snipe.net>

commit c01190fac2
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 00:18:34 2024 +0100

    Conditionally add content-type

    Signed-off-by: snipe <snipe@snipe.net>

commit 017884f843
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 00:09:09 2024 +0100

    Added checks and filetype display

    Signed-off-by: snipe <snipe@snipe.net>

commit c49921f50f
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 00:08:54 2024 +0100

    Removed unused (maybe?) API endpoint

    Signed-off-by: snipe <snipe@snipe.net>

commit c49abb6aea
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 00:08:38 2024 +0100

    Refactor the UserFilesController show method for simpler inlining

    Signed-off-by: snipe <snipe@snipe.net>

commit ccd2019448
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 00:08:04 2024 +0100

    Removed unusded use statements

    Signed-off-by: snipe <snipe@snipe.net>

commit 96191a5e93
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 00:07:54 2024 +0100

    Added method to decide if the file should be inlinable

    Signed-off-by: snipe <snipe@snipe.net>

commit c56affd663
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 00:07:37 2024 +0100

    Added SVG icon

    Signed-off-by: snipe <snipe@snipe.net>

commit 02bda3cd95
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 15:53:05 2024 -0700

    adds Checkout Consumable mailable and slackwebhook channel to notifs

commit 02ff646da4
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 15:44:45 2024 -0700

    adds checkin license mailable

commit 4becdca8aa
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 15:39:20 2024 -0700

    removes toMail from license notificaqtion

commit 2584d60344
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 15:38:49 2024 -0700

    adds Licenses seat checkout Mailable

commit f1d83a3f28
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 15:30:53 2024 -0700

    forgot to add asset checkout markdown to projet

commit c39df34bdf
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 15:29:50 2024 -0700

    forgot to add accessory mail to project

commit dcdf600b78
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 15:27:34 2024 -0700

    adds Checkin and Checkout mailables and listner logic

commit 3cf746d7df
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Oct 16 23:13:32 2024 +0100

    Rework the bulk checkout to not change how all checkouts work

commit 6b7af802af
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Thu Oct 10 13:28:23 2024 +0100

    Add 'bulk checkout' as one of the bulk actions in the bulk actions toolbar

commit 9710436d54
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 13:12:07 2024 -0700

    adds Mailables for asset checkin and out

commit 16cffe9a9d
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 12:53:35 2024 -0700

    simplified checkout webhook call

commit 9e1b86f586
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 12:51:19 2024 -0700

    sends checkout notification via webhook

commit 3ab2521cb0
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Oct 16 12:21:33 2024 -0700

    email comes through, no picture and html markup appear though.

commit 604a964462
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Oct 16 11:52:24 2024 -0700

    Improve scenario descriptions

commit 2f72c66614
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Oct 16 11:30:06 2024 -0700

    Add additional case

commit fdcc17ca2c
Author: Tobias Regnery <tobias.regnery@gmail.com>
Date:   Wed Oct 16 11:18:24 2024 +0200

    Fix user creation with FullMultipleCompanySupport enabled over API

    It is currently possible as a non-superuser to create a new user or patch an existing user with arbitrary company over the API if FullMultipleCompanySupport is enabled.
    Altough a highly unlikely scenario as the user needs permission to create API keys and new users, it is a bug that should get fixed.

    Add a call to getIdForCurrentUser() to normalize the company_id if FullMultipleCompanySupport is enabled.

commit cba1a56040
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Oct 15 17:38:11 2024 -0700

    Improve readability?

commit d9afde4610
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Oct 15 17:00:22 2024 -0700

    Write failing test

commit 9f06a0e441
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Oct 15 14:01:28 2024 -0700

    handle some edge cases, null values clean up variable names

commit 42095c0167
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Oct 15 13:02:22 2024 -0700

    Add reference link

commit f8476f7133
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Oct 15 12:49:52 2024 -0700

    finished the construct and mail call in the listner

commit b29d032bf0
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Oct 15 11:28:27 2024 -0700

    adds checkoutAssetMail class, and content method

commit 2500375400
Merge: 16c8264e7 e4e1d0d50
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 15 17:34:35 2024 +0100

    Merge pull request #15672 from uberbrady/ldap_location_fixes

    Clean up how we use the '$location' in LDAP sync command

commit e4e1d0d50a
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Tue Oct 15 17:26:31 2024 +0100

    Clean up how we use the '$location' in LDAP sync command

commit 16c8264e76
Merge: 914a64720 0ae9ce0aa
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 15 16:42:34 2024 +0100

    Merge pull request #15671 from snipe/bug/sc-27147

    Bug/sc 27147

commit 0ae9ce0aa9
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 15 16:41:45 2024 +0100

    Cannot sort by updated at on Users [sc-27147]

    Signed-off-by: snipe <snipe@snipe.net>

commit 50b8f180b3
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 15 16:41:39 2024 +0100

    More logical grouping in allow_columns

    Signed-off-by: snipe <snipe@snipe.net>

commit 914a647204
Merge: 69b6080bd e9225ff3e
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 15 12:47:15 2024 +0100

    Merge pull request #15669 from snipe/remlove_ou_requirenedess

    Fixed #15663 - remove requiredness for OU

commit e9225ff3ea
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 15 12:43:10 2024 +0100

    Switch to regular HTML for input form field

    Signed-off-by: snipe <snipe@snipe.net>

commit d0d4159088
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 15 12:42:09 2024 +0100

    Fixed typo

    Signed-off-by: snipe <snipe@snipe.net>

commit 69b6080bd8
Merge: ddead359d b997d728f
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 15 10:31:29 2024 +0100

    Merge pull request #15666 from snipe/updated_readme_llm

    Added LLM note

commit b997d728fb
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 15 10:30:34 2024 +0100

    Added LLM note

    Signed-off-by: snipe <snipe@snipe.net>

commit ddead359d0
Merge: 0d35335da f3c4e5566
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 14 14:29:34 2024 +0100

    Merge pull request #15660 from Toreg87/fixes/api_asset_create_fmcs2

    Refactor asset creation with API

commit f3c4e55667
Author: Tobias Regnery <tobias.regnery@gmail.com>
Date:   Mon Oct 14 15:14:41 2024 +0200

    Refactor asset creation with API

    Commit fb4fe3004 restored the previous behaviour to check the company_id in case of FullMultipleCompanySupport.
    But after rereading the code and the laravel documentation, the check is already there where it belongs in AssetStoreRequest::prepareForValidation()
    The bug is the is_int-check of the request input in prepareForValidation(). Is is of type string even if it is a numeric value, so the call to getIdForCurrentUser() never happend.
    Fix this by removing the check and the now redundant call to getIdForCurrentUser().
    Wrong values will get caught by the model-level validation rules.

commit 0d35335da7
Author: snipe <snipe@snipe.net>
Date:   Fri Oct 11 16:06:17 2024 +0100

    Removed debugging

    Signed-off-by: snipe <snipe@snipe.net>

commit feaa714304
Author: snipe <snipe@snipe.net>
Date:   Fri Oct 11 14:23:57 2024 +0100

    Nicer disabled button

    Signed-off-by: snipe <snipe@snipe.net>

commit e1a70023b1
Merge: de62359c6 fb4fe3004
Author: snipe <snipe@snipe.net>
Date:   Fri Oct 11 11:45:48 2024 +0100

    Merge pull request #15655 from Toreg87/fixes/api_asset_create_fmcs

    Fixes #15654 Fix asset creation with API and FullMultipleCompanySupport

commit de62359c67
Merge: 12bda8fc7 3dc64cc5e
Author: snipe <snipe@snipe.net>
Date:   Fri Oct 11 11:29:34 2024 +0100

    Merge pull request #15533 from marcusmoore/testing/fmcs-accessories

    Added tests for accessory api controller

commit 12bda8fc7b
Merge: 8aa298f6b b054017c9
Author: snipe <snipe@snipe.net>
Date:   Fri Oct 11 11:27:18 2024 +0100

    Merge pull request #15653 from snipe/15651_admin_user_on_maintenances

    Fixed #15651 - admin user now displaying on maintenances page

commit fb4fe30049
Author: Tobias Regnery <tobias.regnery@gmail.com>
Date:   Fri Oct 11 12:09:09 2024 +0200

    Fix asset creation with API and FullMultipleCompanySupport

    It is currently possible to create an asset with arbitrary company without being superuser and FullMultipleCompanySupport enabled.
    This bug goes back to 75ac7f80b9 which is part of version 6.3.0.
    Fix this by restoring the previous behaviour to check the company_id with getIdForCurrentUser().

commit b054017c9f
Author: snipe <snipe@snipe.net>
Date:   Fri Oct 11 11:16:24 2024 +0100

    Fixed #15651 - admin user now displaying on maintenances page

    Signed-off-by: snipe <snipe@snipe.net>

commit 524a442724
Author: bryanlopezinc <bryanlopez2kul2@yahoo.com>
Date:   Thu Oct 10 23:32:07 2024 +0100

    Improved import performance

commit 8aa298f6b0
Merge: 1f3465773 b5b93fdd3
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 10 12:30:53 2024 +0100

    Merge pull request #15644 from snipe/form_requests_for_settings

    Form requests for settings

commit 1f34657734
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 10 12:30:35 2024 +0100

    Fixed test

    Signed-off-by: snipe <snipe@snipe.net>

commit 0856ee648e
Merge: 94a074a19 1dafc970d
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 10 12:23:14 2024 +0100

    Merge pull request #15648 from snipe/update_packages

    Updated livewire to 3.5.2

commit 1dafc970df
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 10 12:19:57 2024 +0100

    Updated livewire to 3.5.2

    Signed-off-by: snipe <snipe@snipe.net>

commit 94a074a193
Merge: 2d49e1eff b34a7c8aa
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 10 01:11:10 2024 +0100

    Merge pull request #15601 from snipe/check_db_on_healthcheck

    Fixed #15439 - check database on healthcheck

commit 2d49e1eff2
Merge: 705bc6f0c c2663ea1e
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 10 01:09:11 2024 +0100

    Merge pull request #15637 from akemidx/bug/sc-26614

    FIXED: Badge counter showing deleted assets on User page

commit 705bc6f0c0
Merge: 3ee571374 67a605c9a
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 10 01:08:25 2024 +0100

    Merge pull request #15642 from uberbrady/fix_bulk_checkout

    Fix bulk checkout to users, assets, and locations

commit b5b93fdd3a
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 10 00:27:00 2024 +0100

    Make ldap username required

    Signed-off-by: snipe <snipe@snipe.net>

commit d9432baf7a
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 23:51:20 2024 +0100

    Mlore ldap style improvements

    Signed-off-by: snipe <snipe@snipe.net>

commit 90be2a4498
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 22:26:30 2024 +0100

    Use newer naming convention for errors

    Signed-off-by: snipe <snipe@snipe.net>

commit 3886da8941
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 22:15:49 2024 +0100

    Remove form request from get LDAP method

    Signed-off-by: snipe <snipe@snipe.net>

commit 130e0c6242
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 22:15:37 2024 +0100

    More validation

    Signed-off-by: snipe <snipe@snipe.net>

commit 4361a10818
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 22:15:30 2024 +0100

    Added string

    Signed-off-by: snipe <snipe@snipe.net>

commit aa8048ac15
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 22:15:25 2024 +0100

    Blade changes for ldap

    Signed-off-by: snipe <snipe@snipe.net>

commit 710e738e8e
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 22:15:16 2024 +0100

    Fixed tests

    Signed-off-by: snipe <snipe@snipe.net>

commit 3705b91439
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 20:51:34 2024 +0100

    Added more validation

    Signed-off-by: snipe <snipe@snipe.net>

commit 707bdad192
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 20:33:56 2024 +0100

    Updated test

    Signed-off-by: snipe <snipe@snipe.net>

commit 242fe33f97
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 20:33:42 2024 +0100

    Switch to regular HTML input

    Signed-off-by: snipe <snipe@snipe.net>

commit ded79469c1
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 20:33:29 2024 +0100

    Remove unused controller method

    Signed-off-by: snipe <snipe@snipe.net>

commit d9fbf330e5
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 20:33:15 2024 +0100

    Fixed translations

    Signed-off-by: snipe <snipe@snipe.net>

commit 2cb9ac26cd
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 19:57:04 2024 +0100

    Renamed test

    Signed-off-by: snipe <snipe@snipe.net>

commit 185bc966e6
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 19:46:47 2024 +0100

    Cleaned up use statements in tests

    Signed-off-by: snipe <snipe@snipe.net>

commit a7f7e4938f
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 19:31:56 2024 +0100

    Added form action

    Signed-off-by: snipe <snipe@snipe.net>

commit 2883e79193
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 19:30:55 2024 +0100

    Removed unecessary assets creation

    Signed-off-by: snipe <snipe@snipe.net>

commit 9c4191ae0a
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 19:30:42 2024 +0100

    Basic tests

    Signed-off-by: snipe <snipe@snipe.net>

commit 3a77b83e9c
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 19:30:34 2024 +0100

    Added space

    Signed-off-by: snipe <snipe@snipe.net>

commit d9be2b5a5e
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 19:30:25 2024 +0100

    Trying to use the email_array translation

    Signed-off-by: snipe <snipe@snipe.net>

commit 69c43c610c
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 19:30:00 2024 +0100

    Fixed typo

    Signed-off-by: snipe <snipe@snipe.net>

commit 4f957bcf71
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 18:34:53 2024 +0100

    Required flag

    Signed-off-by: snipe <snipe@snipe.net>

commit 5cda7cce48
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 18:21:40 2024 +0100

    Only accept a positive number for thresholds

    Signed-off-by: snipe <snipe@snipe.net>

commit 41b94e7128
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 18:19:26 2024 +0100

    Fixed form input group

    Signed-off-by: snipe <snipe@snipe.net>

commit aa55fa6ff4
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 9 18:16:34 2024 +0100

    Switch to form requests for settings

    Signed-off-by: snipe <snipe@snipe.net>

commit 67a605c9a5
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Oct 9 17:01:26 2024 +0100

    Fix bulk checkout to users, assets, and locations

commit c2663ea1e0
Author: akemidx <kojotek.dx@gmail.com>
Date:   Tue Oct 8 16:38:33 2024 -0400

    withouttrashed

commit 3ee5713740
Merge: ab8a22f77 56e7ea667
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 7 23:13:15 2024 +0100

    Merge pull request #15631 from snipe/test/importer-tests

    Add importer tests

commit ab8a22f77e
Merge: 26d7572bc 8c9132aff
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 7 22:56:23 2024 +0100

    Merge pull request #15630 from marcusmoore/bug/sc-27028

    Only show EULA when available on print users page

commit 56e7ea6677
Merge: 32551d55d 803532667
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 7 22:29:35 2024 +0100

    Merge pull request #15616 from marcusmoore/test/importer-test-updates

    Improve importer tests

commit 26d7572bcc
Merge: 382ebef8c ee046a868
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 7 22:28:53 2024 +0100

    Merge pull request #15603 from marcusmoore/fixes/add-reguard

    Added `Model::reguard()` to importer

commit 8c9132aff9
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Oct 7 14:22:49 2024 -0700

    Hide EULA text and button when nothing will be displayed

commit 382ebef8ca
Merge: 2be88cb95 f76da4844
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 7 21:26:21 2024 +0100

    Merge pull request #15621 from sniff122/develop

    Docker Env: Change trusted proxies to RFC1918

commit 2be88cb955
Merge: 7fc498a59 3f36d5f9b
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 7 11:14:24 2024 +0100

    Merge pull request #15624 from snipe/fixed_line_break_on_print_all_for_users

    Removed duplicate JS and removed line break before user section

commit 3f36d5f9b3
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 7 11:08:02 2024 +0100

    Removed duplicate CSS and removed line break before user section

    Signed-off-by: snipe <snipe@snipe.net>

commit f76da48448
Author: Lewis Foster <lewis@sniff122.tech>
Date:   Sat Oct 5 18:27:42 2024 +0100

    Docker Env: Change trusted proxies to RFC1918

commit 8035326675
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 3 16:53:19 2024 -0700

    Add test

commit dfdd85abb1
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 3 15:14:07 2024 -0700

    Remove unused imports

commit 063ea1892b
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 3 15:02:03 2024 -0700

    Add trait to clean up files after test runs

commit e213053775
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 3 13:59:58 2024 -0700

    Swap factory syntax

commit 88d549e7c5
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 3 13:40:37 2024 -0700

    Remove unused data provider method

commit 983a25aa5f
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 3 13:39:54 2024 -0700

    Simplify permission tests

commit bde05d6ed9
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 3 13:15:49 2024 -0700

    Use new() instead of times()

commit b5ffe54bd0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 3 13:15:02 2024 -0700

    Swap assertEquals parameter order

commit 863c0a8b60
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 3 11:43:02 2024 -0700

    Fix import_type for accessory state

commit 32551d55d7
Merge: 7fc498a59 e807cfab8
Author: Marcus Moore <mmoore@grokability.com>
Date:   Thu Oct 3 11:39:21 2024 -0700

    Merge pull request #15579 from bryanlopezinc/ImportTests

    Add Import data tests

commit 7fc498a597
Merge: 78ca1026f cb281c640
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 3 17:39:18 2024 +0100

    Merge pull request #15613 from snipe/css_fixes_for_long_values

    Smarter word-wrapping on long text

commit cb281c6408
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 3 17:33:46 2024 +0100

    Tweaked line height

    Signed-off-by: snipe <snipe@snipe.net>

commit f483cd448f
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 3 17:27:37 2024 +0100

    Smarter work-wrapping on long text

    Signed-off-by: snipe <snipe@snipe.net>

commit 78ca1026fd
Merge: 3699d7936 722d5a58e
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 3 16:24:32 2024 +0100

    Merge pull request #15612 from snipe/fixes_print_assigned_in_profile

    Fixes print assigned in profile

commit 722d5a58e7
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 3 16:19:38 2024 +0100

    Added isset on users

    Signed-off-by: snipe <snipe@snipe.net>

commit 7461c3e0ca
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 3 16:19:27 2024 +0100

    Change controller to assume a collection. (This is dumb, but whatever)

    Signed-off-by: snipe <snipe@snipe.net>

commit 3c0f4181ae
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 3 16:19:06 2024 +0100

    Use the newer button style

    Signed-off-by: snipe <snipe@snipe.net>

commit 3699d79363
Merge: 54fbd0540 350b627ce
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 3 14:34:00 2024 +0100

    Merge pull request #15610 from uberbrady/fix_numeric_sort_bug

    Fix numeric sort 'ambiguous order clause' error

commit 350b627ce1
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Thu Oct 3 14:23:40 2024 +0100

    Fix numeric sort 'ambiguous order clause' error

commit ee046a8688
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Oct 2 10:50:40 2024 -0700

    Add matching Model::reguard()

commit b34a7c8aad
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 2 15:48:35 2024 +0100

    Removed die()

    Signed-off-by: snipe <snipe@snipe.net>

commit f92bf5dc20
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 2 15:39:27 2024 +0100

    Updated language for failure

    Signed-off-by: snipe <snipe@snipe.net>

commit 4d9e85026a
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 2 15:36:01 2024 +0100

    Fixed #15439 - check database on healthcheck

    Signed-off-by: snipe <snipe@snipe.net>

commit 54fbd0540d
Merge: b483bb163 4db735808
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 2 12:40:49 2024 +0100

    Merge branch 'develop' of https://github.com/snipe/snipe-it into develop

commit b483bb1633
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 2 12:40:45 2024 +0100

    Bumped version

    Signed-off-by: snipe <snipe@snipe.net>

commit 4db7358086
Merge: 0dd6f41f6 b9cfdf2e5
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 2 12:38:46 2024 +0100

    Merge pull request #15593 from Godmartinz/Fixed-divide-by-zero-bug

    Fixed divide by zero bug in depreciation transformer

commit 0dd6f41f66
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 2 11:04:55 2024 +0100

    Simplified 2fa if/else

    Signed-off-by: snipe <snipe@snipe.net>

commit 684c20ae39
Author: snipe <snipe@snipe.net>
Date:   Wed Oct 2 11:00:49 2024 +0100

    Fixed parenthasis

    Signed-off-by: snipe <snipe@snipe.net>

commit 3153bbb13f
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Tue Oct 1 17:04:18 2024 -0500

    dumb fix

commit 3dc64cc5e0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Oct 1 13:35:39 2024 -0700

    Reference accessory checkout and not the accessory

commit c32f4e34b4
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 1 20:35:49 2024 +0100

    Minor formatting fix

    Signed-off-by: snipe <snipe@snipe.net>

commit ca1886cebc
Merge: 45ab49eea a79dfea40
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 1 20:31:38 2024 +0100

    Merge pull request #15594 from snipe/localizations/update-2024-10-01

    Updated strings

commit a79dfea40a
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 1 20:30:58 2024 +0100

    Updated strings

    Signed-off-by: snipe <snipe@snipe.net>

commit 45ab49eeab
Merge: 97d00e5aa 8232618a9
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 1 20:26:42 2024 +0100

    Merge pull request #15592 from spencerrlongg/bug/catch_request_notify_errors

    Catch Errors Around Request Notifications

commit 8232618a9f
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Tue Oct 1 14:26:32 2024 -0500

    change the other one too

commit 9a651b567d
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Tue Oct 1 14:24:03 2024 -0500

    change error to warning

commit 97d00e5aa8
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 1 20:08:54 2024 +0100

    Fixed erroneous form tag on anchor

    Signed-off-by: snipe <snipe@snipe.net>

commit 5b90d79494
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Oct 1 11:50:48 2024 -0700

    Use created_by

commit b9cfdf2e54
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Oct 1 11:41:59 2024 -0700

    reworked monthly depreciation variable value

commit 1139acd9f3
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Tue Oct 1 13:36:47 2024 -0500

    catch errors around request notifications

commit b7ad80bd31
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Oct 1 11:24:24 2024 -0700

    fix monthly depreciation value

commit 5ffd1b8daa
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Oct 1 11:02:39 2024 -0700

    fixes if statement in transformer

commit 9a2117466e
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 1 18:23:40 2024 +0100

    Removed placeholder

    Signed-off-by: snipe <snipe@snipe.net>

commit 7e3a062984
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 1 18:23:07 2024 +0100

    Use <th> for table header in bulk interstitial

    Signed-off-by: snipe <snipe@snipe.net>

commit d274fb6963
Merge: cfc04a1d1 27ba641aa
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 1 14:32:48 2024 +0100

    Merge pull request #15589 from snipe/adds_checkin_action_on_asset_delete

    Adds checkin action on asset delete via View UI

commit 27ba641aa5
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 1 14:30:34 2024 +0100

    Added checkin on delete to API

    Signed-off-by: snipe <snipe@snipe.net>

commit 5823197e6f
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 1 14:29:02 2024 +0100

    Added checkin action on delete for checked out assets

    Signed-off-by: snipe <snipe@snipe.net>

commit cfc04a1d12
Merge: 12da43303 cae8aa784
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 1 14:08:58 2024 +0100

    Merge pull request #15588 from snipe/added_more_maxlengths

    Added maxlengths to additional fields

commit cae8aa7840
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 1 14:02:54 2024 +0100

    Added maxlengths to additional fields

    Signed-off-by: snipe <snipe@snipe.net>

commit 12da43303f
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 1 01:44:05 2024 +0100

    Fixed #15584 - regression with required css change

    Signed-off-by: snipe <snipe@snipe.net>

commit fdfea390fb
Merge: d609ed50a 5689e940b
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 30 12:59:27 2024 -0700

    Merge branch 'develop' into testing/fmcs-accessories

commit b04afbbc85
Merge: b964ce102 3f311ba2f
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 30 19:26:08 2024 +0100

    Merge pull request #15564 from uberbrady/improve_autoclose

    Get us better debugging output for new Github Stale Action

commit b964ce1025
Merge: 6217cba20 68e3f375f
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 30 19:25:05 2024 +0100

    Merge pull request #15583 from Godmartinz/remove-sortable-from-depreciations

    Removed sortablity for current value column in depreciations report

commit 6217cba201
Merge: 5689e940b b32ab6a06
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 30 19:24:19 2024 +0100

    Merge pull request #15524 from Godmartinz/double-notif-bug

    Fixed double webhook notifications // Separated email and webhook notifications.

commit 68e3f375fc
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Sep 30 11:15:49 2024 -0700

    removes sortablity from current value column

commit 5689e940b8
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 30 18:23:12 2024 +0100

    Fixed #15581 - missing bracker

    Signed-off-by: snipe <snipe@snipe.net>

commit e807cfab86
Merge: 0b3f45856 001348c63
Author: bryanlopezinc <bryanlopez2kul2@yahoo.com>
Date:   Mon Sep 30 12:47:52 2024 +0100

    Merge branch 'develop' into importTests

commit 0b3f458561
Author: bryanlopezinc <bryanlopez2kul2@yahoo.com>
Date:   Mon Sep 30 12:42:41 2024 +0100

    Added tests for Import feature

commit 001348c638
Author: snipe <snipe@snipe.net>
Date:   Sun Sep 29 14:33:42 2024 +0100

    Unset required on checkout select :(

    Related to the discussion at #15552

    Signed-off-by: snipe <snipe@snipe.net>

commit 1b041af862
Merge: 260b15368 d120585f9
Author: snipe <snipe@snipe.net>
Date:   Sun Sep 29 11:25:01 2024 +0100

    Merge remote-tracking branch 'origin/master' into develop

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	public/css/build/app.css
    #	public/css/build/overrides.css
    #	public/css/dist/all.css
    #	public/mix-manifest.json

commit 260b153689
Merge: 36b27fcda 05d74f7a9
Author: snipe <snipe@snipe.net>
Date:   Sat Sep 28 16:09:51 2024 +0100

    Merge pull request #15573 from snipe/fixed_requiredness_indicator

    Fixes for requiredness indicator in UI

commit 05d74f7a92
Author: snipe <snipe@snipe.net>
Date:   Sat Sep 28 15:42:03 2024 +0100

    Covered setup pages too

    Signed-off-by: snipe <snipe@snipe.net>

commit dc85588d7f
Author: snipe <snipe@snipe.net>
Date:   Sat Sep 28 15:31:44 2024 +0100

    Don’t show password as required if editing

    Signed-off-by: snipe <snipe@snipe.net>

commit 585f998cae
Author: snipe <snipe@snipe.net>
Date:   Sat Sep 28 15:28:06 2024 +0100

    Fixes for requiredness display

    Signed-off-by: snipe <snipe@snipe.net>

commit d120585f94
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 27 14:07:30 2024 +0100

    Check for valid eula for license, consumable

    Signed-off-by: snipe <snipe@snipe.net>

commit 166a700342
Merge: 6c85ba349 36b27fcda
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 27 13:37:28 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 36b27fcda3
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 27 13:37:14 2024 +0100

    Check for valid category before getting the eula

    Signed-off-by: snipe <snipe@snipe.net>

commit a44490e448
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 27 13:07:24 2024 +0100

    Nowrap on files column

    Signed-off-by: snipe <snipe@snipe.net>

commit 9aada2ec70
Merge: ac6411743 ef82f954e
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 26 09:09:35 2024 +0100

    Merge pull request #15498 from Godmartinz/Modal_fix

    Refactoring modals with partials and fixing misalignments

commit 3f74ff25d2
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Sep 25 16:19:09 2024 -0700

    fixed error message

commit ef82f954e5
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Sep 25 15:47:57 2024 -0700

    fixed required css, and user input lengths

commit 3f311ba2fb
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Sep 25 21:27:45 2024 +0100

    Get us better debugging output for new Github Stale Action

commit 96953aa2ed
Merge: e609b3976 b797c37ac
Author: Godfrey Martinez <47435081+Godmartinz@users.noreply.github.com>
Date:   Wed Sep 25 12:50:01 2024 -0700

    Merge pull request #23 from Godmartinz/Modal_fix_p3

    replace duplicate code with partials

commit b797c37acb
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Sep 25 12:48:05 2024 -0700

    replace duplicate code with partials

commit 6c85ba3495
Merge: 9f8473e25 ac6411743
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 20:45:02 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit ac6411743b
Merge: 9b03f4649 3f0245f88
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 20:35:58 2024 +0100

    Merge pull request #15563 from snipe/refined_gates_on_user_bulk

    Update for #15534 - Refined gates on user bulk

commit 3f0245f88f
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 20:33:00 2024 +0100

    Make controller gate match dropdown gate

    Signed-off-by: snipe <snipe@snipe.net>

commit c02647a0fa
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 20:32:03 2024 +0100

    Moved merge into delete gate, since they do technically delete

    Signed-off-by: snipe <snipe@snipe.net>

commit edca3f432c
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 20:30:58 2024 +0100

    Removed gate for delete

    Signed-off-by: snipe <snipe@snipe.net>

commit 2218c94aa3
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 20:29:23 2024 +0100

    Gates the dropdown based on user permissions

    Signed-off-by: snipe <snipe@snipe.net>

commit e609b39760
Merge: 0bc98e971 12522a379
Author: Godfrey Martinez <47435081+Godmartinz@users.noreply.github.com>
Date:   Wed Sep 25 12:09:26 2024 -0700

    Merge pull request #22 from Godmartinz/Modal_fix_p2

    Modal fix p2

commit 12522a3791
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Sep 25 12:07:15 2024 -0700

    fix spacing issues

commit f6d7ea19e4
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 19:44:39 2024 +0100

    Set view as base permission, drill down for more intrusive actions

    Signed-off-by: snipe <snipe@snipe.net>

commit 18ddffe8f9
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Sep 25 11:42:16 2024 -0700

    fix partial variable intialization, fix width of input fields

commit 9b03f46490
Merge: cb6e5042d fac4833b5
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 19:32:01 2024 +0100

    Merge pull request #15534 from marcusmoore/bulk-print-users

    Added the ability to bulk print users

commit 926a319552
Merge: 0bc98e971 cb6e5042d
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Sep 25 11:10:24 2024 -0700

    Merge branch 'develop' into Modal_fix_p2

commit 9f8473e254
Merge: 0e61d0b19 cb6e5042d
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 18:36:40 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit cb6e5042d9
Merge: c1a887b48 ba69259f2
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 18:32:59 2024 +0100

    Merge pull request #15547 from snipe/disallow_checkout_with_nondeployable_status

    Fixed #13396 - do not allow checkout to undeployable status types

commit c1a887b48b
Merge: ba1220484 658c94ad8
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 18:32:21 2024 +0100

    Merge pull request #15561 from snipe/fixes/adds_action_date_to_sorting

    Changed `action_date` to `created_at` in activity report

commit 658c94ad8b
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 17:25:15 2024 +0100

    Changed action_date to created_at

    Signed-off-by: snipe <snipe@snipe.net>

commit 0e61d0b195
Merge: abdddbec4 ba1220484
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 15:51:38 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit ba12204842
Merge: eeabc8dc9 1c3babaca
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 15:51:14 2024 +0100

    Merge pull request #15555 from snipe/fixes/user_file_upload

    Fixed case on `$logAction` for user file upload

commit 1c3babacaf
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 15:46:57 2024 +0100

    Fixed case on logAction for usewr file upload

    Signed-off-by: snipe <snipe@snipe.net>

commit abdddbec44
Merge: a425c2b76 eeabc8dc9
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 11:58:25 2024 +0100

    Merge remote-tracking branch 'origin/develop'

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	public/css/build/app.css
    #	public/css/build/overrides.css
    #	public/css/dist/all.css
    #	public/mix-manifest.json

commit eeabc8dc9d
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 11:33:45 2024 +0100

    Dev assets

    Signed-off-by: snipe <snipe@snipe.net>

commit 21f8ac8e52
Merge: c38222e95 2a2666be0
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 11:31:23 2024 +0100

    Merge pull request #15552 from Godmartinz/ragged-form-inputs

    Fixed input field misalignments

commit a425c2b765
Merge: 34eb10ff7 c38222e95
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 25 10:52:19 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 2a2666be0b
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Sep 24 13:24:50 2024 -0700

    makes required a pseudo field

commit c38222e956
Merge: 8cf1e4dce 0ce5832b6
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 24 18:10:53 2024 +0100

    Merge pull request #15549 from snipe/fixes/#15548_unify_audit_api_endpoints

    Fixes #15548 - unify audit api endpoints

commit 0ce5832b6c
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 24 17:29:40 2024 +0100

    Removed debugging

    Signed-off-by: snipe <snipe@snipe.net>

commit b6340532d7
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Tue Sep 24 17:15:39 2024 +0100

    Improve the error and success messages and linking

commit 5fb43dd159
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 24 16:55:56 2024 +0100

    Handle `audit` *and* `audits` for urls

    Signed-off-by: snipe <snipe@snipe.net>

commit de57d71bf1
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 24 16:30:24 2024 +0100

    Fixed #15548 - unify audit due/overdue APIs

    Signed-off-by: snipe <snipe@snipe.net>

commit ba69259f2d
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 24 15:35:00 2024 +0100

    Fixed #13396 - do not allow checkout to undeployable status types

    Signed-off-by: snipe <snipe@snipe.net>

commit c71411465a
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Tue Sep 24 15:17:35 2024 +0100

    First pass at better-handling those annoying Rollbars we keep getting

commit 8cf1e4dceb
Merge: ab0c009c0 66249a37e
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 24 11:10:20 2024 +0100

    Merge pull request #15544 from snipe/bug/sc-26855

    Fixed app settings view on mobile

commit 66249a37ed
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 24 11:08:31 2024 +0100

    Tweaked styles

    Signed-off-by: snipe <snipe@snipe.net>

commit 96712cb398
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 24 10:55:26 2024 +0100

    Fixed app settings view on mobile

    Signed-off-by: snipe <snipe@snipe.net>

commit fac4833b58
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 23 17:15:16 2024 -0700

    Remove unused import

commit a12c9d053f
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 23 16:44:25 2024 -0700

    Hide label when printing

commit 8b3b68b308
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 23 16:43:14 2024 -0700

    Show or hide all eulas at once when printing multiple users

commit 4b02db5031
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 23 16:26:22 2024 -0700

    Add authorization check in bulk users controller

commit ab90c0cf05
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 23 16:10:40 2024 -0700

    Add missing eager load in bulk users controller

commit cef7ddc719
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 23 16:10:21 2024 -0700

    Add eager loads to userscontroller

commit 3870095a28
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 23 15:50:24 2024 -0700

    Fix Cannot read properties of undefined error by removing snipe-table class from eula table

commit a02e250b22
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 23 15:26:15 2024 -0700

    Add page breaks for each user

commit 8ac5c0e471
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 23 14:05:47 2024 -0700

    Re-combine layout and view

commit a2d4dcf6e8
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 23 12:49:36 2024 -0700

    Use bulk actions menu

commit 54044bfa5e
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 23 10:57:57 2024 -0700

    Add eager loads

commit e493cc964d
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 23 10:48:07 2024 -0700

    Remove AssetCountForSidebar middleware from print view

commit 29af210f4f
Merge: 5128fd49e ab0c009c0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 23 10:26:20 2024 -0700

    Merge branch 'develop' into bulk-print-users

commit 34eb10ff73
Merge: 7d7d58769 ab0c009c0
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 19:45:20 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit ab0c009c0d
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 19:45:10 2024 +0100

    Fixed seeder

    Signed-off-by: snipe <snipe@snipe.net>

commit 7d7d58769c
Merge: 245d5dc46 b68805cf8
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 19:13:00 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit b68805cf83
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 19:11:52 2024 +0100

    Small fix for notifications checkout

    Signed-off-by: snipe <snipe@snipe.net>

commit 245d5dc469
Merge: 4ab478bb9 7d858129d
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 17:28:15 2024 +0100

    Merge remote-tracking branch 'origin/develop'

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	config/version.php

commit 7d858129d9
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 14:44:19 2024 +0100

    Bumped hash

    Signed-off-by: snipe <snipe@snipe.net>

commit 65ce63bc9b
Merge: 5eea9d195 54fba2f54
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 14:42:07 2024 +0100

    Merge pull request #15537 from snipe/snyk/updated_jspdf_autotable

    Updated jspdf autotable

commit 54fba2f547
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 14:40:41 2024 +0100

    Update jspdf autotable

    Signed-off-by: snipe <snipe@snipe.net>

commit 5eea9d1950
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 14:33:56 2024 +0100

    Corrected text warning translation

    Signed-off-by: snipe <snipe@snipe.net>

commit b84a634ec7
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 14:33:35 2024 +0100

    Corrected comment

    Signed-off-by: snipe <snipe@snipe.net>

commit 2fc88a0e08
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 14:33:26 2024 +0100

    Eager load adminuser

    Signed-off-by: snipe <snipe@snipe.net>

commit bc540b6564
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 14:02:28 2024 +0100

    Requestable status not saving with manual [sc-26848]

    Signed-off-by: snipe <snipe@snipe.net>

commit f53b852dff
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 13:53:52 2024 +0100

    Make created_by equal one in the seeder

    Signed-off-by: snipe <snipe@snipe.net>

commit b83d1a043f
Merge: cdb7ccb8f b21c303e5
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 13:47:31 2024 +0100

    Merge pull request #15519 from snipe/features/add_created_at_created_by

    Change `user_id` to `created_by`

commit 4ab478bb97
Merge: d96c5e1ba cdb7ccb8f
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 13:44:45 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit b21c303e56
Merge: b88f2054d cdb7ccb8f
Author: snipe <snipe@snipe.net>
Date:   Fri Sep 20 13:43:50 2024 +0100

    Merge remote-tracking branch 'origin/develop' into features/add_created_at_created_by

commit 5128fd49e6
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 19 17:27:25 2024 -0700

    Allow printing all users

commit 2d2d5bdc7e
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 19 17:23:47 2024 -0700

    Pass user in array

commit 8364d26c9b
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 19 17:18:26 2024 -0700

    Extract parent layout

commit efd6d7625f
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 19 17:16:05 2024 -0700

    Remove bad closing tag

commit bdf5708bfc
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 19 17:10:43 2024 -0700

    Remove accidental line

commit e95703cb18
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 19 17:10:07 2024 -0700

    Use eager load

commit 7ad4a29970
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 19 16:54:39 2024 -0700

    Add eager loading

commit cdb7ccb8f3
Merge: 8270947ed d446773fd
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 21:54:03 2024 +0100

    Merge pull request #15532 from spencerrlongg/bug/15253

    Catch Exceptions on Checkout Notification

commit 8270947ed2
Merge: 4f7c8e0c3 8e1111c68
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 21:49:27 2024 +0100

    Merge pull request #13291 from akemidx/eol_date_range_for_reports

    Added date range for EOL in custom reports

commit 4f7c8e0c3d
Merge: d7bde3784 3ea5d4ee4
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 21:36:09 2024 +0100

    Merge pull request #14671 from Robert-Azelis/patch-6

    [FIX] Update EOL date when used bulk update of purchase date

commit d609ed50a4
Merge: d639d6fbc d7bde3784
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 19 13:20:55 2024 -0700

    Merge branch 'develop' into testing/fmcs-accessories

commit b88f2054dd
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 20:38:34 2024 +0100

    Refactor isDeletable on companies

    Signed-off-by: snipe <snipe@snipe.net>

commit d7914e238d
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 20:34:54 2024 +0100

    Added created by to company on save

    Signed-off-by: snipe <snipe@snipe.net>

commit d7bde37842
Merge: 454796e52 4facc4007
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 20:33:10 2024 +0100

    Merge pull request #15507 from setpill/setpill/feat/use_explicit_attributes_in_ldap_sync

    Added #15506: Explicitly request used LDAP attributes

commit 454796e52a
Merge: eef487d61 7c85ad54e
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 20:32:03 2024 +0100

    Merge pull request #15518 from snipe/sort_by_numeric_custom_fields

    Fixed #11634 - Sort by numeric columns for numeric custom fields

commit eef487d61b
Merge: dddbf27d7 71dbc7abb
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 20:31:02 2024 +0100

    Merge pull request #15531 from Godmartinz/status-doesnt-update-in-email

    Fixed mail notification field `status label` not updating

commit 71dbc7abb0
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Sep 19 12:23:07 2024 -0700

    refreshed the assetstatus relationship

commit d639d6fbc1
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 19 12:21:54 2024 -0700

    Add tests for accessory select list endpoint

commit 74088ea581
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 20:13:38 2024 +0100

    Optimize isDeletable counts

    Signed-off-by: snipe <snipe@snipe.net>

commit fff069824b
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 19 12:11:03 2024 -0700

    Add tests for update accessory endpoint

commit d446773fdd
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Thu Sep 19 14:05:48 2024 -0500

    catch exceptions on notification

commit f283b5fbe8
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 19:56:39 2024 +0100

    Eager load adminuser

    Signed-off-by: snipe <snipe@snipe.net>

commit a5be18bb14
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 19 11:55:15 2024 -0700

    Add test for limit and offset

commit eb6f05faf7
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 19:41:46 2024 +0100

    Eager load adminuser

    Signed-off-by: snipe <snipe@snipe.net>

commit 118183ff58
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 19:41:39 2024 +0100

    Removed footer

    Signed-off-by: snipe <snipe@snipe.net>

commit 2137890496
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 19 11:33:20 2024 -0700

    Remove dead code

commit ebf6ce6980
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 19:27:10 2024 +0100

    Refactor for fewer queries

    Signed-off-by: snipe <snipe@snipe.net>

commit 9b22d6d493
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 19 11:24:01 2024 -0700

    Add tests for accessory checkouts endpoint

commit 5ebf0ed2b2
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 19:19:14 2024 +0100

    Updated variable

    Signed-off-by: snipe <snipe@snipe.net>

commit 836893cba5
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 18:35:00 2024 +0100

    Added id to report

    Signed-off-by: snipe <snipe@snipe.net>

commit cd98b3817d
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 18:26:08 2024 +0100

    Removed duplicate line

    Signed-off-by: snipe <snipe@snipe.net>

commit 727806372c
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 18:22:11 2024 +0100

    Added created_by to status label

    Signed-off-by: snipe <snipe@snipe.net>

commit 5e1c736d49
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 18:04:50 2024 +0100

    Added created_by for manufacturers

    Signed-off-by: snipe <snipe@snipe.net>

commit 6579fa72da
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 17:56:05 2024 +0100

    Added scoping for categories and companies

    Signed-off-by: snipe <snipe@snipe.net>

commit 82d6e1510f
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 17:41:05 2024 +0100

    Order by created_by for depreciations

    Signed-off-by: snipe <snipe@snipe.net>

commit 822ea96dfd
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 17:31:46 2024 +0100

    Use auth()->id() instead of Auth::id()

    Signed-off-by: snipe <snipe@snipe.net>

commit b247fc33b9
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 17:28:01 2024 +0100

    Added legacy comment

    Signed-off-by: snipe <snipe@snipe.net>

commit 2dcae780c0
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 17:26:21 2024 +0100

    Reapply deleted code

    Signed-off-by: snipe <snipe@snipe.net>

commit 5c3180ffa0
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 17:25:09 2024 +0100

    Removed duplicate code

    Signed-off-by: snipe <snipe@snipe.net>

commit 65eba30038
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 17:23:34 2024 +0100

    Fixed markdown in acceptance reminder

    Signed-off-by: snipe <snipe@snipe.net>

commit bbce7b40ca
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 17:20:56 2024 +0100

    Additional consistencies

    Signed-off-by: snipe <snipe@snipe.net>

commit 02a29c71ef
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 17:01:48 2024 +0100

    Added created_by

    Signed-off-by: snipe <snipe@snipe.net>

commit 6699995972
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 17:01:36 2024 +0100

    Added created_by to components

    Signed-off-by: snipe <snipe@snipe.net>

commit 951f03094a
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 17:01:17 2024 +0100

    Added created_by to kits

    Signed-off-by: snipe <snipe@snipe.net>

commit 354b00ef15
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 16:45:51 2024 +0100

    Made method name consistent

    Signed-off-by: snipe <snipe@snipe.net>

commit c93229179b
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 16:45:39 2024 +0100

    Added order by created_by to accessories

    Signed-off-by: snipe <snipe@snipe.net>

commit a77a7065d7
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 16:34:10 2024 +0100

    Added order by admin to assets

    Signed-off-by: snipe <snipe@snipe.net>

commit 4363e8b34c
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 16:20:42 2024 +0100

    Updated importer

    Signed-off-by: snipe <snipe@snipe.net>

commit 9adb2c24f3
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 16:06:36 2024 +0100

    Squashed commit of the following:

    commit dddbf27d78
    Author: snipe <snipe@snipe.net>
    Date:   Wed Sep 18 14:18:52 2024 +0100

        Updated language strings

        Signed-off-by: snipe <snipe@snipe.net>

    commit fcefcc8184
    Merge: 04bb3eec8 3519a82dd
    Author: snipe <snipe@snipe.net>
    Date:   Wed Sep 18 13:44:44 2024 +0100

        Merge pull request #15512 from marcusmoore/testing/fmcs

        Added tests for delete methods in api

    commit 04bb3eec83
    Merge: 154d5d8d9 f963b9a19
    Author: snipe <snipe@snipe.net>
    Date:   Wed Sep 18 13:41:37 2024 +0100

        Merge pull request #15521 from uberbrady/improve_country_selector

        Fix selected-index of Countries drop-down [fd-44144]

    commit f963b9a19f
    Author: Brady Wetherington <bwetherington@grokability.com>
    Date:   Wed Sep 18 13:24:26 2024 +0100

        Fix selected-index of Countries drop-down

    commit 154d5d8d91
    Merge: 6c996b775 9e5f6d656
    Author: snipe <snipe@snipe.net>
    Date:   Tue Sep 17 23:40:25 2024 +0100

        Merge pull request #15491 from uberbrady/numeric_prefixes_add_multiple_assets

        [Fixes fd-43940] Improve multi-asset create when using numeric prefixes to asset_tags

    commit 3519a82ddd
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 16:55:20 2024 -0700

        Fix name: TestsFullMultipleCompaniesSupport

    commit a629df07bf
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 14:49:08 2024 -0700

        Implement interfaces on existing test classes

    commit 9a13fcab23
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 14:38:38 2024 -0700

        Pluralize

    commit f5705a1dde
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 14:34:55 2024 -0700

        More unification

    commit f325c4afdb
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 14:32:38 2024 -0700

        Unify assertion method

    commit 1fddacd7d0
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 14:25:11 2024 -0700

        Re-order test methods

    commit 4af893df61
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 14:20:24 2024 -0700

        Improve assertions

    commit b8b3f91ce4
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 13:55:18 2024 -0700

        Formatting

    commit 7f40f55343
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 13:52:02 2024 -0700

        Add tests for delete supplier endpoint

    commit b06e8d442d
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 13:37:08 2024 -0700

        Add tests for delete status label endpoint

    commit c269184c60
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 13:29:41 2024 -0700

        Add tests for delete predefined kit endpoint

    commit 53c673dee2
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 13:13:12 2024 -0700

        Add tests for delete manufacturer endpoint

    commit 50730fc4fb
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 12:37:18 2024 -0700

        Add tests for delete location endpoint

    commit 60a54cee79
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 12:33:30 2024 -0700

        Add tests for delete license endpoint

    commit 446e962a50
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 10:38:51 2024 -0700

        Add tests for delete group endpoint

    commit 79a4bb7316
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 10:35:44 2024 -0700

        Add tests for delete depreciation endpoint

    commit 2f76c1bc5b
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 10:33:21 2024 -0700

        Add assertion

    commit 38b9f4a438
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Mon Sep 16 10:29:20 2024 -0700

        Add tests for delete departments endpoint

    commit 3105f53aff
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 16:54:29 2024 -0700

        Add tests for delete custom fieldsets endpoint

    commit 2047cfed09
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 16:20:32 2024 -0700

        Add tests for delete custom fields endpoint

    commit e3268d32df
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 16:00:02 2024 -0700

        Add tests for delete consumable endpoint

    commit 6df8b0ac0e
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 15:52:07 2024 -0700

        Add tests for delete component endpoint

    commit 910f13c1f7
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 15:38:30 2024 -0700

        Add tests for delete companies endpoint

    commit 8ce2512f55
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 13:54:44 2024 -0700

        Add tests for delete category endpoint

    commit 0ec415d4d0
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 13:46:22 2024 -0700

        Clean up

    commit 2044570e95
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 13:39:36 2024 -0700

        Add tests for delete asset model endpoint

    commit b336c6273d
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 13:32:42 2024 -0700

        Pluralize test classes

    commit 5299b3e9f0
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 13:29:44 2024 -0700

        Remove code handled by CompanyableChildTrait

    commit 872b76b45f
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 13:29:10 2024 -0700

        Add tests for delete asset maintenance endpoint

    commit 275cf4630e
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 13:16:37 2024 -0700

        Add tests for delete asset endpoint

    commit 5c2660bd34
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 13:02:32 2024 -0700

        Introduce interface

    commit c7ae9d9dfa
    Author: Marcus Moore <contact@marcusmoore.io>
    Date:   Thu Sep 12 12:58:47 2024 -0700

        Add tests for delete accessory endpoint

    commit 9e5f6d656a
    Author: Brady Wetherington <bwetherington@grokability.com>
    Date:   Wed Sep 11 15:45:01 2024 +0100

        Improve multi-asset create when using numeric prefixes to asset_tags

    Signed-off-by: snipe <snipe@snipe.net>

commit 634a4afa75
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 16:04:54 2024 +0100

    Fixed 1001 query on license

    Signed-off-by: snipe <snipe@snipe.net>

commit 7650628d30
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 16:00:59 2024 +0100

    Removed free seat count from fillable

    Signed-off-by: snipe <snipe@snipe.net>

commit 7f690a6238
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 19 15:58:32 2024 +0100

    Fixed variable name

    Signed-off-by: snipe <snipe@snipe.net>

commit b32ab6a06c
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Sep 18 16:36:24 2024 -0700

    import User model

commit 4ff5fc1ff9
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Sep 18 16:19:35 2024 -0700

    clean up variables

commit 86f13a9735
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 18 16:13:34 2024 -0700

    Add index test

commit c40209f500
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Sep 18 15:23:44 2024 -0700

    seperates emails and webhook notifications

commit a071fff954
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 18 12:32:14 2024 -0700

    Implement tests

commit 8b50ef077d
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 18 11:58:33 2024 -0700

    Implement test

commit 607f29030f
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 18 11:53:27 2024 -0700

    Stub out test

commit a6bcd3c0c2
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 18 11:47:59 2024 -0700

    Add validation test

commit 9b293afaac
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 18 11:28:29 2024 -0700

    Remove more dead code

commit 636c776620
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 18 11:27:37 2024 -0700

    Remove dead code

commit d5f659024c
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 18 11:27:09 2024 -0700

    Add test for logging

commit 832e50a71e
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 18 11:19:41 2024 -0700

    Implement test

commit fa19686248
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 18 11:18:21 2024 -0700

    Implement test

commit c021609c13
Merge: 7b31df7c1 dddbf27d7
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 18 10:42:58 2024 -0700

    Merge branch 'develop' into testing/fmcs-accessories

commit 655abe8be5
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 18 14:32:59 2024 +0100

    Fixed requestable user_id

    Signed-off-by: snipe <snipe@snipe.net>

commit d96c5e1ba4
Merge: a807646d3 dddbf27d7
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 18 14:20:55 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit dddbf27d78
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 18 14:18:52 2024 +0100

    Updated language strings

    Signed-off-by: snipe <snipe@snipe.net>

commit bae9982833
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 18 14:18:14 2024 +0100

    Updated request methods

    Signed-off-by: snipe <snipe@snipe.net>

commit a807646d39
Merge: 83b4bf9cf fcefcc818
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 18 13:48:09 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit abe79df6dc
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 18 13:47:30 2024 +0100

    Added translation

    Signed-off-by: snipe <snipe@snipe.net>

commit fcefcc8184
Merge: 04bb3eec8 3519a82dd
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 18 13:44:44 2024 +0100

    Merge pull request #15512 from marcusmoore/testing/fmcs

    Added tests for delete methods in api

commit 04bb3eec83
Merge: 154d5d8d9 f963b9a19
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 18 13:41:37 2024 +0100

    Merge pull request #15521 from uberbrady/improve_country_selector

    Fix selected-index of Countries drop-down [fd-44144]

commit f963b9a19f
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Sep 18 13:24:26 2024 +0100

    Fix selected-index of Countries drop-down

commit 154d5d8d91
Merge: 6c996b775 9e5f6d656
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 17 23:40:25 2024 +0100

    Merge pull request #15491 from uberbrady/numeric_prefixes_add_multiple_assets

    [Fixes fd-43940] Improve multi-asset create when using numeric prefixes to asset_tags

commit 1582d81e5b
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 17 22:16:41 2024 +0100

    Change `user_id` to `created_by`

    Signed-off-by: snipe <snipe@snipe.net>

commit 7c85ad54eb
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 17 19:44:03 2024 +0100

    Sort by numeric columns for numeric custom fields

    Signed-off-by: snipe <snipe@snipe.net>

commit 7b31df7c14
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Sep 17 09:11:58 2024 -0700

    Begin additional test case

commit 83b4bf9cf8
Merge: 9ff211105 6c996b775
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 17 15:54:53 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 6c996b7759
Merge: fe5fc6e0c 9e957baeb
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 17 15:54:11 2024 +0100

    Merge pull request #15516 from snipe/fixes/fmcs_edit_user

    Fixed check for outside assets on user update validation

commit 9e957baeb5
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 17 15:46:45 2024 +0100

    Fixed check for outside assets on user update validation

    Signed-off-by: snipe <snipe@snipe.net>

commit 12fd9cd97a
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 17:00:08 2024 -0700

    Update interface name

commit 9e03c4ba6f
Merge: 8eb1c487b 3519a82dd
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 16:58:46 2024 -0700

    Merge branch 'testing/fmcs' into testing/fmcs-accessories

commit 3519a82ddd
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 16:55:20 2024 -0700

    Fix name: TestsFullMultipleCompaniesSupport

commit 8eb1c487bc
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 16:52:10 2024 -0700

    implement FMCS test for accessory index

commit e835637ef0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 16:40:10 2024 -0700

    Add accessory checkin test

commit eb35608bb5
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 16:35:33 2024 -0700

    Remove call handled by form request

commit 3f07f682de
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 16:35:21 2024 -0700

    Migrate existing tests to TestsPermissionsRequirement

commit a629df07bf
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 14:49:08 2024 -0700

    Implement interfaces on existing test classes

commit 9a13fcab23
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 14:38:38 2024 -0700

    Pluralize

commit f5705a1dde
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 14:34:55 2024 -0700

    More unification

commit f325c4afdb
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 14:32:38 2024 -0700

    Unify assertion method

commit 1fddacd7d0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 14:25:11 2024 -0700

    Re-order test methods

commit 4af893df61
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 14:20:24 2024 -0700

    Improve assertions

commit b8b3f91ce4
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 13:55:18 2024 -0700

    Formatting

commit 7f40f55343
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 13:52:02 2024 -0700

    Add tests for delete supplier endpoint

commit b06e8d442d
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 13:37:08 2024 -0700

    Add tests for delete status label endpoint

commit c269184c60
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 13:29:41 2024 -0700

    Add tests for delete predefined kit endpoint

commit 53c673dee2
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 13:13:12 2024 -0700

    Add tests for delete manufacturer endpoint

commit 50730fc4fb
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 12:37:18 2024 -0700

    Add tests for delete location endpoint

commit 60a54cee79
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 12:33:30 2024 -0700

    Add tests for delete license endpoint

commit 446e962a50
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 10:38:51 2024 -0700

    Add tests for delete group endpoint

commit 79a4bb7316
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 10:35:44 2024 -0700

    Add tests for delete depreciation endpoint

commit 2f76c1bc5b
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 10:33:21 2024 -0700

    Add assertion

commit 38b9f4a438
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 10:29:20 2024 -0700

    Add tests for delete departments endpoint

commit fe5fc6e0ce
Merge: 62747a009 15183c482
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 16 15:56:31 2024 +0100

    Merge pull request #15471 from Godmartinz/Edit_side-panel

    Fixes margin for the sidebar menus while using rtl languages

commit 62747a0090
Merge: b465cc98d c6c5cb73c
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 16 15:02:55 2024 +0100

    Merge pull request #15493 from Godmartinz/fix_consumables_media_sizing

    Fixed misalignment of consumables with smaller media

commit 9ff2111055
Merge: 1328366a4 b465cc98d
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 16 14:52:48 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit b465cc98d8
Merge: 8774da392 4debaaea3
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 16 14:45:06 2024 +0100

    Merge pull request #15510 from snipe/bulk_users_locale_fix

    Fixed #15504 - allow nulling/not changing locale in user bulk edit

commit 4debaaea39
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 16 14:31:10 2024 +0100

    Fixed #15504 - allow nulling/not changing locale in user bulk edit

    Signed-off-by: snipe <snipe@snipe.net>

commit 1328366a48
Merge: 7e14f8c6d 8774da392
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 16 12:38:56 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 4facc4007e
Author: setpill <37372069+setpill@users.noreply.github.com>
Date:   Fri Sep 13 17:05:48 2024 +0200

    feat: Explicitly request LDAP attributes during sync

commit 31da47e046
Author: setpill <37372069+setpill@users.noreply.github.com>
Date:   Fri Sep 13 17:05:28 2024 +0200

    refactor: Put LDAP attribute mapping in array

commit 3105f53aff
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 16:54:29 2024 -0700

    Add tests for delete custom fieldsets endpoint

commit 2047cfed09
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 16:20:32 2024 -0700

    Add tests for delete custom fields endpoint

commit e3268d32df
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 16:00:02 2024 -0700

    Add tests for delete consumable endpoint

commit 6df8b0ac0e
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 15:52:07 2024 -0700

    Add tests for delete component endpoint

commit 910f13c1f7
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 15:38:30 2024 -0700

    Add tests for delete companies endpoint

commit 8ce2512f55
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 13:54:44 2024 -0700

    Add tests for delete category endpoint

commit 0ec415d4d0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 13:46:22 2024 -0700

    Clean up

commit 2044570e95
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 13:39:36 2024 -0700

    Add tests for delete asset model endpoint

commit b336c6273d
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 13:32:42 2024 -0700

    Pluralize test classes

commit 5299b3e9f0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 13:29:44 2024 -0700

    Remove code handled by CompanyableChildTrait

commit 872b76b45f
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 13:29:10 2024 -0700

    Add tests for delete asset maintenance endpoint

commit 275cf4630e
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 13:16:37 2024 -0700

    Add tests for delete asset endpoint

commit 5c2660bd34
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 13:02:32 2024 -0700

    Introduce interface

commit c7ae9d9dfa
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 12:58:47 2024 -0700

    Add tests for delete accessory endpoint

commit 0bc98e971f
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Sep 12 12:26:19 2024 -0700

    refactoring modals with partials and fixing misalignments

commit 8774da3921
Merge: ab3b65531 a97530367
Author: snipe <snipe@snipe.net>
Date:   Thu Sep 12 16:08:44 2024 +0100

    Merge pull request #15492 from snipe/fixes/edit_to_archived_warning

    Fix - warn user on changing status to undeployable when editing

commit c6c5cb73cf
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Sep 11 10:49:27 2024 -0700

    fixes consumables positioning with smaller media

commit a97530367d
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 11 17:29:22 2024 +0100

    Fixed tests again

    Signed-off-by: snipe <snipe@snipe.net>

commit 43250ae881
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 11 17:04:09 2024 +0100

    Updated tests

    Signed-off-by: snipe <snipe@snipe.net>

commit 04e96b8f20
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 11 16:43:41 2024 +0100

    Added tests

    Signed-off-by: snipe <snipe@snipe.net>

commit 98323185de
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 11 16:43:33 2024 +0100

    Null and warn if editing asset to a non-deployabe state

    Signed-off-by: snipe <snipe@snipe.net>

commit 9e5f6d656a
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Sep 11 15:45:01 2024 +0100

    Improve multi-asset create when using numeric prefixes to asset_tags

commit 7e14f8c6d6
Merge: fddbdafb9 ab3b65531
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 11 12:25:28 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit ab3b655312
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 11 12:25:09 2024 +0100

    Fixed #15483 - show EOL by default

    Signed-off-by: snipe <snipe@snipe.net>

commit 601d8d7e5f
Merge: 4f0f72b29 ca01261c1
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 11 09:46:58 2024 +0100

    Merge pull request #15486 from marcusmoore/fixes/custom-field-values

    Fixed a couple bugs in CustomFieldSetDefaultValuesForModel component

commit ca01261c1f
Merge: 6423df213 4f0f72b29
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Sep 10 16:05:39 2024 -0700

    Merge branch 'develop' into fixes/custom-field-values

commit 15183c4822
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Sep 10 11:05:03 2024 -0700

    rephrased the ternary <-correctly spelled

commit fddbdafb99
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 10 19:03:56 2024 +0100

    Fixed conflict

    Signed-off-by: snipe <snipe@snipe.net>

commit a5dbece1a9
Merge: 713bb104e 4f0f72b29
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 10 19:00:05 2024 +0100

    Merge remote-tracking branch 'origin/develop'

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	config/version.php
    #	public/css/build/app.css
    #	public/css/build/overrides.css
    #	public/css/dist/all.css
    #	public/mix-manifest.json

commit 4f0f72b29e
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 10 18:15:12 2024 +0100

    Fixed version

    Signed-off-by: snipe <snipe@snipe.net>

commit 4183d1834f
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 10 18:14:03 2024 +0100

    Pre-release assets

    Signed-off-by: snipe <snipe@snipe.net>

commit 713bb104ec
Merge: 7f2cae4f2 4998d60f3
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 10 14:46:15 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 4998d60f39
Merge: f6bf2d03c 7cf30003b
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 10 14:43:27 2024 +0100

    Merge pull request #15481 from snipe/localizations/2024-09-10

    Updated translations

commit 7cf30003b6
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 10 14:41:08 2024 +0100

    Updated strings

    Signed-off-by: snipe <snipe@snipe.net>

commit f6bf2d03c4
Merge: 6f44441a8 7c8955b12
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 10 11:04:58 2024 +0100

    Merge pull request #15445 from Godmartinz/eula_confusion

    Fixed priority for category eula vs default eula

commit 6f44441a8b
Merge: e7e5dfbdf 76c9015aa
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 10 11:04:23 2024 +0100

    Merge pull request #15469 from marcusmoore/accessory_tests

    Added UI tests for creating accessories

commit e7e5dfbdfa
Merge: d62315fbe 5d5f42129
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 10 11:04:08 2024 +0100

    Merge pull request #15470 from marcusmoore/company_tests

    Added UI tests for creating companies

commit d62315fbe4
Merge: 7f3f77dec 22a2cc025
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 10 11:03:55 2024 +0100

    Merge pull request #15472 from marcusmoore/testing/dashboard_counts

    Added test for dashboard counts

commit 7f3f77dec8
Merge: 82e56c683 0820dd9da
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 10 11:03:46 2024 +0100

    Merge pull request #15473 from marcusmoore/testing/accessory_api_tests

    Added some permission tests for accessory api endpoints

commit 82e56c6832
Merge: 549dec9f9 dc6a5bf99
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 10 09:37:02 2024 +0100

    Merge pull request #15474 from marcusmoore/bug/sc-26730

    Fixed login success message not being displayed

commit 76c9015aa9
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 9 16:51:40 2024 -0700

    Add test case

commit 5d5f421294
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 9 16:49:43 2024 -0700

    Add test case

commit 367f02af86
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Sep 9 16:34:04 2024 -0700

    more partials and includes

commit 7a1c721eca
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Sep 9 16:22:56 2024 -0700

    making modal partials for reuse

commit 6423df2133
Merge: 51d63d57c 549dec9f9
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 9 16:07:37 2024 -0700

    Merge branch 'develop' into fixes/custom-field-values

    # Conflicts:
    #	resources/views/livewire/custom-field-set-default-values-for-model.blade.php

commit dc6a5bf998
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 9 14:54:19 2024 -0700

    Reflash session so login message is displayed

commit 0820dd9da4
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 9 14:36:32 2024 -0700

    Update test names

commit aa6ab2df60
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 9 14:35:38 2024 -0700

    Add permission tests for some accessory api endpoints

commit 22a2cc0256
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 9 13:21:10 2024 -0700

    Add test for dashboard counts

commit 57fab0268b
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Sep 9 13:02:25 2024 -0700

    made it a terenary

commit ad5768d8b2
Author: Godfrey M <godmartinz@gmail.com>
Date:   Mon Sep 9 12:45:11 2024 -0700

    fixes margin for the sidebar using rtl languages

commit 35533c39d5
Merge: d4426e468 549dec9f9
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 9 12:18:02 2024 -0700

    Merge branch 'develop' into company_tests

commit de403f6e07
Merge: 010f66f4c 549dec9f9
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 9 12:17:53 2024 -0700

    Merge branch 'develop' into accessory_tests

commit 549dec9f9e
Merge: b2a634924 0e9f7153c
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 9 20:13:01 2024 +0100

    Merge pull request #15468 from marcusmoore/coverage

    Added coverage commands for Herd users

commit d4426e4686
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 9 11:03:00 2024 -0700

    Add simple tests for company creation via UI

commit b2a6349243
Merge: ce97e2a30 c5dbc5f6b
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 9 10:06:42 2024 +0100

    Merge pull request #15465 from snipe/update_city_on_bulk_user_edit

    Correctly save user’s city on bulk edit

commit c5dbc5f6b8
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 9 10:01:07 2024 +0100

    Correctly save user’s city on bulk edit

    Signed-off-by: snipe <snipe@snipe.net>

commit 7f2cae4f26
Merge: e34f549e4 ce97e2a30
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 9 03:56:05 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit ce97e2a30f
Merge: e1fcfc8dc 7d9a0eba0
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 9 03:54:28 2024 +0100

    Merge pull request #15463 from snipe/consumables_order_by_remaining

    Added ability to sort on qty and remaining for consumables

commit 7d9a0eba04
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 9 03:49:58 2024 +0100

    Added ability to sort on qty and remaining for consumables

    Signed-off-by: snipe <snipe@snipe.net>

commit 010f66f4c9
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 4 15:48:11 2024 -0700

    Add validation test

commit 9c6718b459
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 4 15:46:35 2024 -0700

    Organize

commit 9f832a93c9
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 4 15:44:52 2024 -0700

    Ensure user is stored

commit 487d88c012
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 4 15:43:01 2024 -0700

    Add some ui tests for accessories

commit 0e9f7153c0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Sep 4 15:13:45 2024 -0700

    Add composer commands for generating coverage reports via Herd

commit 7c8955b126
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Sep 4 12:38:35 2024 -0700

    revert changes to label view

commit 20fa4c39f9
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Sep 4 12:26:44 2024 -0700

    adds setEula to support\settings

commit f04a4a3cf5
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Sep 4 12:21:49 2024 -0700

    adds test

commit cf07186ae8
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Sep 3 12:23:23 2024 -0700

    gives priority to default eula being checked vs catregory eula

commit 51d63d57c6
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Sep 3 12:22:43 2024 -0700

    Hide the "Add default values" checkbox if no fieldset selected

commit e34f549e4c
Merge: a8813cca9 e1fcfc8dc
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 2 19:16:23 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit e1fcfc8dc1
Merge: 13dbf9ee7 9fe8a866e
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 2 19:14:49 2024 +0100

    Merge pull request #15440 from snipe/fixes/user_api_put_patch

    Fixes  #15435 - user api put patch API route regression

commit 9fe8a866e0
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 2 19:07:21 2024 +0100

    Updated test

    Signed-off-by: snipe <snipe@snipe.net>

commit e8e3060a75
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 2 18:51:22 2024 +0100

    Added tests

    Signed-off-by: snipe <snipe@snipe.net>

commit 6aaf2f623f
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 2 18:49:55 2024 +0100

    Removed extra route

    Signed-off-by: snipe <snipe@snipe.net>

commit dfbccf50e8
Author: snipe <snipe@snipe.net>
Date:   Mon Sep 2 18:48:09 2024 +0100

    Added patch/put back into resource routes

    Signed-off-by: snipe <snipe@snipe.net>

commit a8813cca94
Merge: 9fef27a44 13dbf9ee7
Author: snipe <snipe@snipe.net>
Date:   Sat Aug 31 13:48:59 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 13dbf9ee74
Author: snipe <snipe@snipe.net>
Date:   Sat Aug 31 13:48:42 2024 +0100

    Added icon for dept

    Signed-off-by: snipe <snipe@snipe.net>

commit f8bbb7ad9b
Merge: 12fa50597 3c7d455ee
Author: snipe <snipe@snipe.net>
Date:   Sat Aug 31 13:47:25 2024 +0100

    Merge pull request #15431 from snipe/add_employee_num_to_asset_overview

    Added employee number to asset view

commit 3c7d455ee3
Author: snipe <snipe@snipe.net>
Date:   Sat Aug 31 13:38:38 2024 +0100

    Added employee number to asset view

    Signed-off-by: snipe <snipe@snipe.net>

commit 9fef27a448
Merge: d2b88a510 12fa50597
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 21:07:56 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 12fa505972
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 21:07:30 2024 +0100

    Disabmiguate licenses company_id

    Signed-off-by: snipe <snipe@snipe.net>

commit d2b88a5107
Merge: 4e35f389d 4e4930ba6
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 21:02:21 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 4e4930ba62
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 21:01:48 2024 +0100

    Check for array

    Signed-off-by: snipe <snipe@snipe.net>

commit 4e35f389df
Merge: e5b9d9a28 76301bc30
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 20:07:03 2024 +0100

    Merge remote-tracking branch 'origin/develop'

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	public/css/build/app.css
    #	public/css/build/overrides.css
    #	public/css/dist/all.css
    #	public/mix-manifest.json

commit 76301bc30d
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 20:05:03 2024 +0100

    Fixed typo

    Signed-off-by: snipe <snipe@snipe.net>

commit 964e105cf9
Merge: 6fd24c7e1 abb422153
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 19:20:03 2024 +0100

    Merge pull request #15415 from snipe/rules/prevent_company_switch

    Validation rules to prevent switching user companies if items are assigned to them

commit 6fd24c7e14
Merge: e4ebabdab 231bc1e2d
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 18:55:11 2024 +0100

    Merge pull request #15418 from snipe/added_multiple_for_custom_report

    Fixed #15416 - Added multiple selects for custom report

commit 231bc1e2de
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 18:31:34 2024 +0100

    Updated blade selectors

    Signed-off-by: snipe <snipe@snipe.net>

commit 37d04b7176
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 17:52:01 2024 +0100

    Some CSS tweaks for select2

    Signed-off-by: snipe <snipe@snipe.net>

commit e62a802926
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 17:51:44 2024 +0100

    Use whereIn instead of where =

    Signed-off-by: snipe <snipe@snipe.net>

commit 69e981364a
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 17:51:20 2024 +0100

    Made multiple select

    Signed-off-by: snipe <snipe@snipe.net>

commit e5b9d9a28b
Merge: 4111ef0d7 e4ebabdab
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 15:04:32 2024 +0100

    Merge remote-tracking branch 'origin/develop'

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	public/js/build/app.js
    #	public/js/build/vendor.js
    #	public/js/dist/all.js
    #	public/mix-manifest.json

commit abb4221539
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 14:55:18 2024 +0100

    Validation rules to prevent switchng user companies if assets are assigned

    Signed-off-by: snipe <snipe@snipe.net>

commit e4ebabdaba
Merge: b64ed254e da1e38329
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 14:19:51 2024 +0100

    Merge pull request #15414 from uberbrady/fix_create_user

    Use the null-safe property accessor for new-user creation

commit da1e383295
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Thu Aug 29 14:09:23 2024 +0100

    Use the null-safe property accessor for new-user creation

commit b64ed254e0
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 13:49:09 2024 +0100

    Fixed tests

    Signed-off-by: snipe <snipe@snipe.net>

commit ba291edc42
Merge: c197644ba ec2ea955d
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 13:18:52 2024 +0100

    Merge pull request #15412 from uberbrady/ImprovePatchPurchasePrice

    Fix [FD-43836] PATCH of purchase_cost for assets for comma as decimal separator

commit ec2ea955d8
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Thu Aug 29 12:35:14 2024 +0100

    Fix PATCH of purchase_cost for assets for comma as decimal separator

commit c197644ba7
Merge: 29b30cc5d a8cd1027f
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 11:38:15 2024 +0100

    Merge pull request #15284 from spencerrlongg/bug/sc-26584

    [Multi-Company] Fixes Users Being Moved With Items Still Assigned

commit 29b30cc5d3
Merge: a89f17a14 6af27516d
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 11:29:44 2024 +0100

    Merge pull request #15411 from snipe/snyk/upgrade-webpack

    Upgraded webpack

commit 6af27516dc
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 11:29:00 2024 +0100

    Upgraded webpack

    Signed-off-by: snipe <snipe@snipe.net>

commit a89f17a145
Merge: 68c708bde de0565f5b
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 11:25:56 2024 +0100

    Merge pull request #15410 from snipe/snyk/upgrade-jquery-ui

    Updated jquery UI

commit de0565f5b3
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 11:24:06 2024 +0100

    Updated jquery UI

    Signed-off-by: snipe <snipe@snipe.net>

commit 4111ef0d78
Merge: cfa56e221 68c708bde
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 11:20:21 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 68c708bdef
Merge: 58e366a06 5581950fe
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 11:18:34 2024 +0100

    Merge pull request #15409 from snipe/fixes-string

    Corrected language string

commit 5581950fee
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 11:17:17 2024 +0100

    Corrected language string

    Signed-off-by: snipe <snipe@snipe.net>

commit cfa56e2219
Merge: 7f1dfcc93 58e366a06
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 11:08:53 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 58e366a063
Merge: 26f28a862 b06c52776
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 11:08:02 2024 +0100

    Merge pull request #15408 from snipe/redirect-on-print-if-user-invalid

    Check that the user exists before trying to print

commit b06c527767
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 29 11:06:30 2024 +0100

    Check that the user exists before trying to print

    Signed-off-by: snipe <snipe@snipe.net>

commit 7f1dfcc935
Merge: 6f3fb21fe 26f28a862
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 14:29:06 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 26f28a862a
Merge: e8da7e2df 94c981e22
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 14:26:03 2024 +0100

    Merge pull request #15404 from snipe/bug/sc-26717-model-delete

    Set image to null if model is deleted

commit 94c981e22c
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 14:23:49 2024 +0100

    Set image to null if model is deleted

    Signed-off-by: snipe <snipe@snipe.net>

commit 6f3fb21fef
Merge: a48e79a1f e8da7e2df
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 12:50:19 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit e8da7e2df2
Merge: 7b5b559ba d635c86e0
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 12:46:48 2024 +0100

    Merge pull request #15403 from snipe/clean_up_depreciations

    Fixed #15392 - filter by depreciation when showing models

commit d635c86e00
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 12:46:30 2024 +0100

    Added tests

    Signed-off-by: snipe <snipe@snipe.net>

commit 406ff6984b
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 12:42:23 2024 +0100

    Added click to select on models table

    Signed-off-by: snipe <snipe@snipe.net>

commit c6ddc501c5
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 12:40:12 2024 +0100

    Filter by depreciation_id

    Signed-off-by: snipe <snipe@snipe.net>

commit 4839181beb
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 12:40:01 2024 +0100

    Added counts to API

    Signed-off-by: snipe <snipe@snipe.net>

commit 63a05c89a7
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 12:39:52 2024 +0100

    Added counts to show method

    Signed-off-by: snipe <snipe@snipe.net>

commit 385c4f69f7
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 12:39:43 2024 +0100

    Added counts to depreciation transformer

    Signed-off-by: snipe <snipe@snipe.net>

commit 486cd8c8c9
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 12:39:09 2024 +0100

    Nicer formatting for searchableAttributes

    Signed-off-by: snipe <snipe@snipe.net>

commit eb5d93b3c2
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 12:38:55 2024 +0100

    Added assets relationship

    Signed-off-by: snipe <snipe@snipe.net>

commit a5ff623484
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 12:38:43 2024 +0100

    Added asset, license, model count to API

    Signed-off-by: snipe <snipe@snipe.net>

commit b5a4389815
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 12:38:31 2024 +0100

    Added badge count, fixed model bulk edit menu

    Signed-off-by: snipe <snipe@snipe.net>

commit 7b5b559baa
Merge: 64c4433b9 67a992974
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 11:57:29 2024 +0100

    Merge pull request #15401 from snipe/fixes-15397-new-window-for-label

    Opens label new window

commit 67a9929745
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 28 11:56:54 2024 +0100

    Opens label new window

    Signed-off-by: snipe <snipe@snipe.net>

commit a48e79a1fc
Merge: c207d4843 64c4433b9
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 27 07:37:53 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 64c4433b98
Merge: d3e8e0663 22bc088f6
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 27 07:36:37 2024 +0100

    Merge pull request #15396 from snipe/add_start_end_date_to_users_edit

    Added `start_date` and `end_date` to user bulk edit

commit 22bc088f6f
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 27 07:21:19 2024 +0100

    Added start_date and end_date to user bulk edit

    Signed-off-by: snipe <snipe@snipe.net>

commit d3e8e06638
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 26 14:07:06 2024 +0100

    Add @swift2512 as a contributor

commit c207d48430
Merge: 991e48696 1b933f7ad
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 26 14:01:38 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 1b933f7add
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 26 13:47:17 2024 +0100

    Added s to fa icons

    Signed-off-by: snipe <snipe@snipe.net>

commit 991e48696a
Merge: 797488504 3fe891a05
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 26 10:26:06 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 3fe891a05b
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 26 10:25:27 2024 +0100

    Removed a few more commas

    Signed-off-by: snipe <snipe@snipe.net>

commit 7974885041
Merge: 4ef85bd52 f4c5b712f
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 26 10:24:19 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit f4c5b712f4
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 26 10:24:07 2024 +0100

    Removed colons

    Signed-off-by: snipe <snipe@snipe.net>

commit 4ef85bd529
Merge: 6eab83a85 4c8dc7818
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 17:58:08 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 4c8dc7818d
Merge: aa86e07cd 5c43a1f87
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 17:57:00 2024 +0100

    Merge pull request #15389 from snipe/added_generate_label_to_button_stack

    Fixed #15388 - Moved generate label  button

commit 5c43a1f87c
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 17:54:49 2024 +0100

    Use proper style for buttons

    Signed-off-by: snipe <snipe@snipe.net>

commit d3b265de8e
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 17:48:36 2024 +0100

    Moved button on hardware

    Signed-off-by: snipe <snipe@snipe.net>

commit 263151658f
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 17:44:09 2024 +0100

    Moved general label  button

    Signed-off-by: snipe <snipe@snipe.net>

commit 6eab83a85a
Merge: cce1f87da aa86e07cd
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 15:22:53 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit aa86e07cd2
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 15:22:39 2024 +0100

    Fixed #15385 - small icon tweaks

    Signed-off-by: snipe <snipe@snipe.net>

commit cce1f87da6
Merge: b460e8dc8 d92fa5de6
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 15:18:30 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit d92fa5de65
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 15:17:25 2024 +0100

    fa-fw on settings icon

    Signed-off-by: snipe <snipe@snipe.net>

commit b460e8dc83
Merge: 50cb7e65c c589140ea
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 08:42:32 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit c589140ea0
Merge: cc2c8f76d 52894615c
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 08:42:04 2024 +0100

    Merge pull request #15383 from snipe/re-adds-checkout-button

    Fixed #15378 - Corrected gate on checkin button on asset view

commit 52894615ce
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 08:40:41 2024 +0100

    More specific gate for checkin

    Signed-off-by: snipe <snipe@snipe.net>

commit 8546bbdd65
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 08:38:47 2024 +0100

    Fixed gate for checkout button

    Signed-off-by: snipe <snipe@snipe.net>

commit 50cb7e65c9
Merge: 821dd158d cc2c8f76d
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 07:32:39 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit cc2c8f76d0
Merge: 1ffa69c43 3957d670d
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 07:31:29 2024 +0100

    Merge pull request #15375 from Godmartinz/fix-acceptance-reminder-command

    Fixes the `acceptance-reminder` command

commit 1ffa69c43c
Merge: 78d355f13 f85ebd7ff
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 07:28:20 2024 +0100

    Merge pull request #15380 from snipe/fixed/fixed_nav_bracket

    Added pull-right to angle bracket

commit f85ebd7ffd
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 07:27:39 2024 +0100

    Added pull-right to angle bracket

    Signed-off-by: snipe <snipe@snipe.net>

commit 78d355f136
Merge: ec0346e4a af0a95be1
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 07:20:23 2024 +0100

    Merge pull request #15377 from marcusmoore/fixes/custom-field-values-on-validation-error

    Fixed custom field defaults being prematurely updated

commit ec0346e4a8
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 07:19:08 2024 +0100

    Add @setpill as a contributor

commit fc5eb37776
Merge: 833dace2b 1d7853cbf
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 23 07:18:41 2024 +0100

    Merge pull request #15379 from setpill/fix/load-trustproxies-middleware

    fixed #15374: load TrustProxies middleware in Kernel.php

commit 9a73311a99
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Aug 22 17:04:04 2024 -0700

    Fix nested checkboxes being updated as a group

commit aec781e7df
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Aug 22 16:03:30 2024 -0700

    Be a little more explicit

commit 1d7853cbfe
Author: setpill <37372069+setpill@users.noreply.github.com>
Date:   Thu Aug 22 19:45:53 2024 +0200

    fixed #15374: load TrustProxies middleware in Kernel.php

commit 7f3c86165b
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Aug 22 13:58:31 2024 -0700

    Conditionally disable Add default values checkbox

commit 10b45812c4
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Aug 22 13:38:01 2024 -0700

    Improve id for checkboxes and radio buttons

commit c3165717ed
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Aug 22 13:20:04 2024 -0700

    Handle old input

commit d0a351a132
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Aug 22 12:59:03 2024 -0700

    Add comment

commit 68749e7e87
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Aug 22 12:58:35 2024 -0700

    Simplify logic

commit 0abb5637e0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Aug 22 12:54:54 2024 -0700

    WIP: handle old input

commit af0a95be12
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Aug 21 17:00:32 2024 -0700

    Simplify assertions

commit d67975cb62
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Aug 21 16:59:44 2024 -0700

    Implement fix

commit 663b2fd844
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Aug 21 16:59:38 2024 -0700

    Add test case

commit bcace9d019
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Aug 21 16:54:16 2024 -0700

    Point test to correct endpoint

commit b59bf3e7dc
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Aug 21 16:49:29 2024 -0700

    Add failing test

commit 3957d670d0
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Aug 22 10:04:46 2024 -0700

    fixes send acceptance reminder query

commit 821dd158d1
Merge: 6c9a40268 833dace2b
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 15:50:20 2024 +0100

    Merge remote-tracking branch 'origin/develop'

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	public/css/build/app.css
    #	public/css/build/overrides.css
    #	public/css/dist/all.css
    #	public/js/build/app.js
    #	public/js/dist/all.js
    #	public/mix-manifest.json

commit 833dace2b4
Merge: ec365b080 56e31d230
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 15:00:16 2024 +0100

    Merge pull request #15373 from snipe/fixes/#15366_custom_fields

    Fixed #15366 use the non-admin edit encrypted custom fields permissions

commit 56e31d2303
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 14:58:09 2024 +0100

    Fixed #15366 - use permission for encrypted custom fields

    Signed-off-by: snipe <snipe@snipe.net>

commit ec365b0804
Merge: ca8864c06 aef0ac68c
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 14:49:13 2024 +0100

    Merge pull request #15372 from StarlessNights/update-docker-compose-files

    Fixed #15371: docker-compose files updated.

commit aef0ac68c3
Author: Iisakki Jaakkola <iihaja@utu.fi>
Date:   Thu Aug 22 16:10:00 2024 +0300

    Need to use the long format for redis too in docker-compose file.

commit f12f9a816f
Author: Iisakki Jaakkola <iihaja@utu.fi>
Date:   Thu Aug 22 15:47:12 2024 +0300

    Update the official docker-compose file too while at it.

commit a000d6454f
Author: Iisakki Jaakkola <iihaja@utu.fi>
Date:   Thu Aug 22 15:46:40 2024 +0300

    Fix non-functional development docker-compose file.

commit ca8864c061
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 13:28:52 2024 +0100

    Fixed small layout quirks in asset view

    Signed-off-by: snipe <snipe@snipe.net>

commit 423f4f9126
Merge: 456c7d8d9 5fa0c87ab
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 13:25:41 2024 +0100

    Merge pull request #14667 from Godmartinz/add_location_to_create_user_via_asset

    Adds location select to the create new user via asset checkout

commit 456c7d8d91
Merge: 54cfe3f6e d4d19569e
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 13:20:56 2024 +0100

    Merge pull request #15065 from Godmartinz/explicit_eol_removal_command

    Adds `snipeit:remove-explicit-eols` command

commit 54cfe3f6e6
Merge: 5e0b18104 bb465dbfa
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 13:20:10 2024 +0100

    Merge pull request #15156 from uberbrady/re-add-stalebot

    Re-add stalebot-esque github Action

commit 5e0b18104d
Merge: ec0b9b198 8b5d3f7fb
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 12:59:20 2024 +0100

    Merge pull request #15369 from snipe/fixes/checkbox_on_restore

    Fixed checkbox layout on modal from #15296

commit 8b5d3f7fbd
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 12:56:32 2024 +0100

    Fixed extra closing p tag

    Signed-off-by: snipe <snipe@snipe.net>

commit 744f43676d
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 12:53:16 2024 +0100

    Fixed checkbox layout on modal from #15296

    Signed-off-by: snipe <snipe@snipe.net>

commit ec0b9b198f
Merge: 94300d81d 738ef442f
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 12:43:07 2024 +0100

    Merge pull request #15296 from uberbrady/expose_restore_sanitize

    Expose the 'sanitize' system for backup restores to the web GUI

commit 6c9a402685
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 11:20:52 2024 +0100

    Updated prod assets

    Signed-off-by: snipe <snipe@snipe.net>

commit 1b310f3a24
Merge: c54bff0f8 94300d81d
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 11:20:42 2024 +0100

    Merge remote-tracking branch 'origin/develop'

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	public/css/build/app.css
    #	public/css/build/overrides.css
    #	public/css/dist/all.css
    #	public/mix-manifest.json

commit 94300d81d6
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 11:19:32 2024 +0100

    Updated dev assets

    Signed-off-by: snipe <snipe@snipe.net>

commit bc9ea5a2ec
Merge: 4635a6efc 963911f2e
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 11:18:06 2024 +0100

    Merge pull request #15352 from Godmartinz/mobile_breakpoint

    Fixed Mobile misalignment of info on Assets and Users view pages

commit 4635a6efc3
Merge: 9608414ea d29b3bfb9
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 11:17:49 2024 +0100

    Merge pull request #15360 from snipe/more_print_fixes

    More print fixes for asset view

commit 9608414eae
Merge: 47d8e2f8b 5efddf6f5
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 11:06:13 2024 +0100

    Merge pull request #15367 from snipe/fixes/15344_added_freeform_to_country_select2

    Fixed #15344 - make select2 for countries freeform-ish

commit 5efddf6f5b
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 11:01:39 2024 +0100

    Allow clear on country dropdown

    Signed-off-by: snipe <snipe@snipe.net>

commit 305dc049a4
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 11:01:28 2024 +0100

    Added asterisk help text

    Signed-off-by: snipe <snipe@snipe.net>

commit 3ac0702094
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 10:13:22 2024 +0100

    Fixed #15344 - make select2 for countries freeform-ish

    Signed-off-by: snipe <snipe@snipe.net>

commit 47d8e2f8b9
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 22 09:42:05 2024 +0100

    Add @Scarzy as a contributor

commit a2246b9645
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Aug 21 17:00:32 2024 -0700

    Simplify assertions

commit 1d89759706
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Aug 21 16:59:44 2024 -0700

    Implement fix

commit 206f8fe605
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Aug 21 16:59:38 2024 -0700

    Add test case

commit 21d2217619
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Aug 21 16:54:16 2024 -0700

    Point test to correct endpoint

commit 833bcb282f
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Aug 21 16:49:29 2024 -0700

    Add failing test

commit 83dd9ce20e
Merge: 6fdce3c53 a8eb76fd8
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 21 23:15:24 2024 +0100

    Merge pull request #15362 from r-xyz/model-files-api

    Added #9413: AssetModel files endpoints to API

commit a8eb76fd8d
Author: r-xyz <100710244+r-xyz@users.noreply.github.com>
Date:   Wed Aug 21 22:25:41 2024 +0200

    Fixed model files API routes.

commit cd7db5c4a8
Author: r-xyz <100710244+r-xyz@users.noreply.github.com>
Date:   Wed Aug 21 22:24:08 2024 +0200

    Fix some typos in models file handler.

commit da7313bc9d
Author: r-xyz <100710244+r-xyz@users.noreply.github.com>
Date:   Wed Aug 21 20:24:22 2024 +0200

    Fix models files API routes.

commit 4ec361c718
Author: r-xyz <100710244+r-xyz@users.noreply.github.com>
Date:   Wed Aug 21 19:49:51 2024 +0200

    Add AssetModel files endpoints to API

commit 738ef442fd
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Aug 21 13:16:51 2024 +0100

    Rename .env var to have DB_ prefix for sanitize-by-default setting

commit d29b3bfb9a
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 21 13:06:16 2024 +0100

    Few more hidden-print classes

    Signed-off-by: snipe <snipe@snipe.net>

commit 6fdce3c536
Merge: 01c4fe611 1ab29ec3a
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 21 13:02:50 2024 +0100

    Merge pull request #15358 from r-xyz/rename-docker-startup

    Renamed  docker startup scripts coherently.

commit 912bbf0e32
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 21 13:02:21 2024 +0100

    More print fixes

    Signed-off-by: snipe <snipe@snipe.net>

commit c54bff0f83
Merge: d3f30ced9 01c4fe611
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 21 12:24:13 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 01c4fe6113
Merge: 7e475a078 0fa9f5797
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 21 12:12:23 2024 +0100

    Merge pull request #15359 from uberbrady/improve_windows_upgrade

    Fixed #15190 - Improvements to upgrade.php script to improve Windows experience

commit 0fa9f57971
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Aug 21 11:53:38 2024 +0100

    Improvements to upgrade.php script to improve Windows experience

commit 1ab29ec3a4
Author: r-xyz <100710244+r-xyz@users.noreply.github.com>
Date:   Wed Aug 21 11:52:09 2024 +0200

    Rename  docker startup scripts coherently.

commit 7e475a0786
Merge: d0acf5b8a 26b3c62ab
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 21 10:41:17 2024 +0100

    Merge pull request #15357 from snipe/tighten_category_view_translations

    Fixed #15330 - Cleaned up category title

commit 26b3c62ab8
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 21 10:29:51 2024 +0100

    Cleaned up category title

    Signed-off-by: snipe <snipe@snipe.net>

commit d3f30ced94
Merge: 973e2e575 d0acf5b8a
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 21 10:13:57 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit d0acf5b8a6
Merge: 09033b19a 74fbc2382
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 21 10:12:58 2024 +0100

    Merge pull request #15356 from snipe/validate_location_parent

    Fixed #15341 - validate parent ID

commit 74fbc23823
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 21 10:09:35 2024 +0100

    Updated tests

    Signed-off-by: snipe <snipe@snipe.net>

commit a23dee52f2
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 21 09:58:47 2024 +0100

    Added tests

    Signed-off-by: snipe <snipe@snipe.net>

commit 4d03f1e110
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 21 09:46:18 2024 +0100

    Fixed #15341 - validate parent ID

    Signed-off-by: snipe <snipe@snipe.net>

commit 963911f2e1
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Aug 21 00:23:10 2024 -0700

    changed order of info stgack

commit 59832126cb
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Aug 20 16:52:51 2024 -0700

    Improve comment

commit 680cce3ee2
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Aug 20 16:42:29 2024 -0700

    Align indents

commit 6c5ec6a16c
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Aug 20 16:41:24 2024 -0700

    Get datepicker working

commit 5d1f98bf93
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Aug 20 15:38:43 2024 -0700

    Simplify by directly wire:modeling

commit 9d484077ae
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Aug 20 14:24:37 2024 -0700

    missed a file

commit 9858b0f37f
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Aug 20 14:23:55 2024 -0700

    fixes info tab for users and assets

commit 973e2e5756
Merge: 46ed07642 09033b19a
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 19:45:53 2024 +0100

    Merge remote-tracking branch 'origin/develop'

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	config/version.php

commit 09033b19a7
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 19:44:13 2024 +0100

    Bumped hash

    Signed-off-by: snipe <snipe@snipe.net>

commit 46ed076428
Merge: d3a555ce9 5fdeb9c41
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 19:42:56 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 5fdeb9c413
Merge: 22d373407 6c450d133
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 19:42:08 2024 +0100

    Merge pull request #15351 from snipe/localizations/new_translations_2024-08-20

    Updated languages

commit 22d3734075
Merge: d99b306ae eca6b03f4
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 19:34:38 2024 +0100

    Merge pull request #15350 from marcusmoore/icon-component-updates

    Fixed icon not rotated and simplified component

commit eca6b03f44
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Aug 20 11:08:53 2024 -0700

    Allow id to be rendered

commit bbdbec7197
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Aug 20 11:00:39 2024 -0700

    Rely on $attributes behavior rendering passed attributes

commit 6c450d1338
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 18:18:17 2024 +0100

    Updated languages

    Signed-off-by: snipe <snipe@snipe.net>

commit a8cd1027f3
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Tue Aug 20 11:40:15 2024 -0500

    rm commented code

commit d3a555ce91
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 11:49:39 2024 +0100

    Updated assets

    Signed-off-by: snipe <snipe@snipe.net>

commit 0f8e041809
Merge: e8a22f3c5 d99b306ae
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 11:49:32 2024 +0100

    Merge remote-tracking branch 'origin/develop'

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	public/css/build/app.css
    #	public/css/build/overrides.css
    #	public/css/dist/all.css
    #	public/css/dist/bootstrap-table.css
    #	public/js/dist/bootstrap-table.js
    #	public/mix-manifest.json

commit d99b306ae9
Merge: f597d6433 74136761d
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 11:46:55 2024 +0100

    Merge pull request #15345 from snipe/add_trim_strings_middleware

    Added TrimStrings middleware

commit 74136761df
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 11:45:13 2024 +0100

    Added TrimStrings middleware

    Signed-off-by: snipe <snipe@snipe.net>

commit f597d64339
Merge: 64bed01a9 0072f1500
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 10:17:26 2024 +0100

    Merge pull request #15342 from snipe/snyk/bs-tables

    [Snyk] Upgrade bootstrap-table from 1.23.0 to 1.23.2

commit 0072f1500e
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 10:16:27 2024 +0100

    [Snyk] Upgrade bootstrap-table from 1.23.0 to 1.23.2

    Signed-off-by: snipe <snipe@snipe.net>

commit 64bed01a91
Merge: f8c72fb0a f6319e11e
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 10:13:43 2024 +0100

    Merge pull request #15327 from snipe/update_button_style

    Update icons to use blade components, standardize button colors and format

commit f6319e11e7
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 10:11:27 2024 +0100

    Added fa-fw to sidebar elements

    Signed-off-by: snipe <snipe@snipe.net>

commit 5d9f988df3
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 10:01:49 2024 +0100

    Added fw class to topnav icons

    Signed-off-by: snipe <snipe@snipe.net>

commit f8c72fb0ac
Merge: 886514a25 fa765667f
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 20 09:57:03 2024 +0100

    Merge pull request #15112 from marcusmoore/livewire-importer-improvements

    Improved handling attempted access of deleted files in importer

commit 8e1111c681
Merge: 697595d96 886514a25
Author: akemidx <kojotek.dx@gmail.com>
Date:   Mon Aug 19 19:33:44 2024 -0400

    Merge remote-tracking branch 'upstream/develop' into eol_date_range_for_reports

commit 886514a25f
Merge: cb40a82e7 434bdcd6d
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 22:46:08 2024 +0100

    Merge pull request #15336 from marcusmoore/fixes/remove-displayed-parentheses

    Fixed `)` being added to expected asset checkin report email header

commit fa765667f2
Merge: 94d8a547b cb40a82e7
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Aug 19 14:41:58 2024 -0700

    Merge branch 'develop' into livewire-importer-improvements

commit 434bdcd6d4
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Aug 19 14:31:47 2024 -0700

    Add missing parentheses to conditional

commit be5f3f38f8
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 14:48:12 2024 +0100

    Settings pages

    Signed-off-by: snipe <snipe@snipe.net>

commit 08c3a25b39
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 14:16:57 2024 +0100

    Little more padding

    Signed-off-by: snipe <snipe@snipe.net>

commit 34cd4b6244
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 14:15:36 2024 +0100

    Added links to apple/google maps

    Signed-off-by: snipe <snipe@snipe.net>

commit d89c8682be
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 13:46:31 2024 +0100

    Reversed location button ordering

    Signed-off-by: snipe <snipe@snipe.net>

commit 6f024849e9
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 13:39:24 2024 +0100

    Few more

    Signed-off-by: snipe <snipe@snipe.net>

commit e048f0955f
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 13:27:21 2024 +0100

    More icons

    Signed-off-by: snipe <snipe@snipe.net>

commit 479b2b4fd3
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 13:23:08 2024 +0100

    More icons

    Signed-off-by: snipe <snipe@snipe.net>

commit 84f14a05bd
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 13:20:19 2024 +0100

    Fixed logging for asset model restore

    Signed-off-by: snipe <snipe@snipe.net>

commit 8d52fa51b1
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 13:20:06 2024 +0100

    Fixed suppliers buttons

    Signed-off-by: snipe <snipe@snipe.net>

commit 229d8b9bf5
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 13:19:59 2024 +0100

    Added location restore

    Signed-off-by: snipe <snipe@snipe.net>

commit eb8d43a804
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 12:32:44 2024 +0100

    Updated buttons on models

    Signed-off-by: snipe <snipe@snipe.net>

commit f82266fade
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 11:58:31 2024 +0100

    Cleaned up presenters

    Signed-off-by: snipe <snipe@snipe.net>

commit b4b6f7a35f
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 11:58:21 2024 +0100

    Added css-consumable to overrides for table headers

    Signed-off-by: snipe <snipe@snipe.net>

commit 0bc995b87f
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 11:58:05 2024 +0100

    Updated more icons

    Signed-off-by: snipe <snipe@snipe.net>

commit 59725f2031
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 19 11:57:40 2024 +0100

    Removed extra debugging in test

    Signed-off-by: snipe <snipe@snipe.net>

commit 00bc9ac806
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 22:39:14 2024 +0100

    Fixed spacing

    Signed-off-by: snipe <snipe@snipe.net>

commit f200960a57
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 22:26:57 2024 +0100

    Aaaand more

    Signed-off-by: snipe <snipe@snipe.net>

commit c700127f1a
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 22:09:00 2024 +0100

    Updated user view

    Signed-off-by: snipe <snipe@snipe.net>

commit ae2f9571b4
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 21:57:37 2024 +0100

    And still more

    Signed-off-by: snipe <snipe@snipe.net>

commit a77dcad336
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 20:30:53 2024 +0100

    More links

    Signed-off-by: snipe <snipe@snipe.net>

commit 7ace9324b4
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 20:30:22 2024 +0100

    Added padlock sound

    Signed-off-by: snipe <snipe@snipe.net>

commit d2e889e927
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 19:21:59 2024 +0100

    Still more

    Signed-off-by: snipe <snipe@snipe.net>

commit 803bdb457c
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 18:48:19 2024 +0100

    Added calendar

    Signed-off-by: snipe <snipe@snipe.net>

commit 7c9b1f6e38
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 18:39:22 2024 +0100

    Added the plus icon

    Signed-off-by: snipe <snipe@snipe.net>

commit d545537a43
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 18:34:13 2024 +0100

    More icons

    Signed-off-by: snipe <snipe@snipe.net>

commit 4d8904938d
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 18:24:26 2024 +0100

    Added calendar icon for datepickers

    Signed-off-by: snipe <snipe@snipe.net>

commit 0c09f2b2c0
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 18:13:49 2024 +0100

    Moar icon replacement

    Signed-off-by: snipe <snipe@snipe.net>

commit bffba02511
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 17:26:44 2024 +0100

    Updated icons

    Signed-off-by: snipe <snipe@snipe.net>

commit 901f4df7ee
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 17:03:36 2024 +0100

    Added more icons

    Signed-off-by: snipe <snipe@snipe.net>

commit 9337cba340
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 15:53:58 2024 +0100

    Added download

    Signed-off-by: snipe <snipe@snipe.net>

commit 2b0c67c263
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 15:51:00 2024 +0100

    Load the icon helper

    Signed-off-by: snipe <snipe@snipe.net>

commit da71f031f5
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 15:48:24 2024 +0100

    Use icon in hardware view

    Signed-off-by: snipe <snipe@snipe.net>

commit d2e585baa7
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 15:47:45 2024 +0100

    Added icon blade

    Signed-off-by: snipe <snipe@snipe.net>

commit a102c085df
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 15:47:37 2024 +0100

    Added icon helper

    Signed-off-by: snipe <snipe@snipe.net>

commit e8a22f3c5b
Merge: d843cf8dc cb40a82e7
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 04:55:04 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit cb40a82e79
Merge: 7e6ff3cbe 4253acad4
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 04:54:23 2024 +0100

    Merge pull request #15324 from snipe/jerk_prevention

    Prevent passing an array as login

commit 4253acad4c
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 18 04:51:36 2024 +0100

    Prevent passing an array as login

    Signed-off-by: snipe <snipe@snipe.net>

commit d843cf8dcc
Merge: 1013dcae6 7e6ff3cbe
Author: snipe <snipe@snipe.net>
Date:   Sat Aug 17 00:52:10 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 1013dcae61
Merge: c30c649aa e7ef3bf51
Author: snipe <snipe@snipe.net>
Date:   Sat Aug 17 00:38:44 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 70e5e0f9df
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Fri Aug 16 12:52:06 2024 -0500

    get rid of dd

commit dec4691c73
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Fri Aug 16 12:50:09 2024 -0500

    should be good to go now

commit c30c649aaa
Merge: bb1385369 ad6d09b6a
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 16 16:44:02 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit bb1385369c
Merge: c1caf6088 43b338d61
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 16 16:18:00 2024 +0100

    Merge remote-tracking branch 'origin/develop'

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	public/css/build/app.css
    #	public/css/build/overrides.css
    #	public/css/dist/all.css
    #	public/mix-manifest.json

commit c1caf6088e
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 16 13:12:13 2024 +0100

    Prod assets

    Signed-off-by: snipe <snipe@snipe.net>

commit 12dfe71ea8
Merge: ca8926871 ea2b1b074
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 16 12:48:42 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit ca89268716
Merge: ec5731353 3167ee91d
Author: snipe <snipe@snipe.net>
Date:   Fri Aug 16 11:02:56 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 94d8a547b8
Merge: 6521c0252 b39a7c6f0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Aug 15 13:47:49 2024 -0700

    Merge branch 'develop' into livewire-importer-improvements

commit 43b109fac0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Aug 15 13:20:22 2024 -0700

    Use cached values for textarea and radio input

commit 75c1e7658f
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Aug 15 10:43:41 2024 -0700

    Improve method name

commit e7c9c799bb
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Aug 15 10:40:23 2024 -0700

    Add wire:keys

commit 6ab976f353
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Aug 15 10:32:33 2024 -0700

    Use cached values for text input

commit ec5731353a
Merge: 3283704fe b39a7c6f0
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 15 15:53:52 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 3283704fe8
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 15 12:25:08 2024 +0100

    Updated assets

    Signed-off-by: snipe <snipe@snipe.net>

commit 540df32046
Merge: 85486fa58 594f50664
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 15 12:24:59 2024 +0100

    Merge remote-tracking branch 'origin/develop'

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	public/js/build/app.js
    #	public/js/dist/all.js
    #	public/mix-manifest.json

commit 85486fa58c
Merge: 3618df2ec 10dc1f136
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 15 10:53:54 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 3618df2ec5
Merge: a201f22fd 8f7bce7aa
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 15 10:44:39 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit a201f22fdb
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 15 10:36:12 2024 +0100

    Bumped version

    Signed-off-by: snipe <snipe@snipe.net>

commit 6070d530cf
Merge: 6c0cf9447 4d66f7c93
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 15 10:35:33 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 6c0cf94473
Merge: bf4b91516 381003eea
Author: snipe <snipe@snipe.net>
Date:   Thu Aug 15 10:28:08 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 9622e05cf5
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Wed Aug 14 18:41:06 2024 -0500

    correct api test

commit afaf53cdfc
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Wed Aug 14 18:14:21 2024 -0500

    failing ui test

commit f031309f8f
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Wed Aug 14 16:09:15 2024 -0500

    set up api controller for route/model binding

commit 20ec420ba3
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Wed Aug 14 13:53:29 2024 -0500

    not quite done, api side needs some work

commit ab63a19aff
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Aug 14 11:01:51 2024 -0700

    Initialize concept of cached values

commit a70b94e707
Merge: 120cfd13c 3e2945709
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Wed Aug 14 11:36:19 2024 -0500

    Merge branch 'refs/heads/develop' into bug/sc-26584

commit 008bf036b5
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Aug 14 16:09:34 2024 +0100

    Got rid of weird namespace declaration and commented-out data-toggle line

commit cc5ad456e6
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Aug 14 15:59:21 2024 +0100

    Expose the 'sanitize' system for backup restores to the web GUI

commit bf4b915168
Merge: 0a9c2e354 0f1e5181a
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 14 10:45:13 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 0a9c2e354f
Merge: 47f1b3b14 e54400718
Author: snipe <snipe@snipe.net>
Date:   Wed Aug 14 10:02:43 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 038e86954b
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Aug 13 17:30:53 2024 -0700

    Improve property name

commit f6c1642bf2
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Aug 13 17:01:35 2024 -0700

    Use computed fields in CustomFieldSetDefaultValuesForModel component

commit 120cfd13c5
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Tue Aug 13 14:07:40 2024 -0500

    translation

commit 09f2739298
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Tue Aug 13 13:45:41 2024 -0500

    works, un-reassignable licenses are an issue

commit 47f1b3b14e
Merge: 198b76ebc 3044af941
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 13 16:48:06 2024 +0100

    Merge remote-tracking branch 'origin/develop'

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	public/css/build/app.css
    #	public/css/build/overrides.css
    #	public/css/dist/all.css
    #	public/mix-manifest.json

commit 198b76ebc2
Merge: 5546f9676 6e84c29ce
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 13 15:47:00 2024 +0100

    Merge remote-tracking branch 'origin/develop'

    Signed-off-by: snipe <snipe@snipe.net>

    # Conflicts:
    #	public/css/build/app.css
    #	public/css/build/overrides.css
    #	public/css/dist/all.css
    #	public/mix-manifest.json

commit 5546f9676a
Merge: 46caa478d 9e73eaf95
Author: snipe <snipe@snipe.net>
Date:   Tue Aug 13 13:51:33 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit ec863df007
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Mon Aug 12 16:58:53 2024 -0500

    rm conditional that might be unnecessary

commit cc3b8e0681
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Mon Aug 12 16:58:21 2024 -0500

    this should more or less work, but i need to determine if this is the best way

commit ff145abbe7
Author: spencerrlongg <spencer@spencerlong.com>
Date:   Mon Aug 12 16:13:03 2024 -0500

    use array for eager loading, makes ide prettier

commit 46caa478d2
Merge: 4d8569e75 e6106aa7c
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 12 20:47:45 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 4d8569e754
Merge: 4dc57f95e c9f8a84d4
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 12 18:01:21 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 4dc57f95e2
Merge: 316ee6f81 9d354ca65
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 12 16:38:23 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 316ee6f810
Merge: 509cc812e 3f2139349
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 12 16:30:53 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 509cc812ea
Merge: d5f66bc0d e7fb29fce
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 12 15:58:40 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit d5f66bc0dd
Merge: 1e213c31e ce5be8ac2
Author: snipe <snipe@snipe.net>
Date:   Mon Aug 12 10:10:59 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 1e213c31ef
Merge: 91874dfe0 1777bb4b9
Author: snipe <snipe@snipe.net>
Date:   Sun Aug 11 10:26:16 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 91874dfe0b
Merge: 0e6eda5e8 5c6c655cd
Author: snipe <snipe@snipe.net>
Date:   Sat Aug 10 19:37:37 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 0e6eda5e8a
Merge: 24560b936 60eb60215
Author: snipe <snipe@snipe.net>
Date:   Sat Aug 10 18:29:41 2024 +0100

    Merge remote-tracking branch 'origin/develop'

commit 24560b9362
Author: snipe <snipe@snipe.net>
Date:   Sat Aug 10 18:24:49 2024 +0100

    Updated prod assets

    Signed-off-by: snipe <snipe@snipe.net>

commit 6521c02526
Merge: 8d1cc22c5 9350a2018
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Aug 7 15:20:39 2024 -0700

    Merge branch 'develop' into livewire-importer-improvements

    # Conflicts:
    #	resources/views/livewire/importer.blade.php

commit bb465dbfaa
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Jul 24 15:09:23 2024 +0100

    Cut down run number to 100 from 1000

commit 8cbcc237c0
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Jul 24 13:27:31 2024 +0100

    Cleanup of Stale workflow for GH - set to debug-mode to start

commit 97e3af8fc9
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Sat Jun 29 00:59:47 2024 +0100

    WIP on new GitHub-backed stalebot settings

commit 914e29210a
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Jun 26 18:53:01 2024 +0100

    Initial rough stab at re-implementing stalebot

commit 8d1cc22c58
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Jul 18 12:00:01 2024 -0700

    Turn on legacy binding since other components still use it

commit 7685de45f2
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Jul 17 17:12:14 2024 -0700

    Turn off legacy binding

commit 199e68ff29
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Jul 17 17:10:12 2024 -0700

    Simplify computed propery

commit 81bffccf01
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Jul 17 16:28:26 2024 -0700

    Use better error message

commit cfca1514c0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Jul 17 16:22:44 2024 -0700

    Swap file_id for activeFileId

commit b4ed01243b
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Jul 17 13:40:41 2024 -0700

    Add more details

commit 3772a21a51
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Jul 17 13:37:24 2024 -0700

    Move comment up

commit 04b6cb763f
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Wed Jul 17 10:58:48 2024 -0700

    Add todo

commit dd32341502
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Jul 16 17:21:18 2024 -0700

    Display message if attempting to delete non-existent file

commit f58e3114a2
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Jul 16 17:17:45 2024 -0700

    Simplify destroy method and update list

commit eba494ad8c
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Jul 16 17:03:42 2024 -0700

    Make $activeFile a computed property

commit 7e89b58746
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Jul 16 16:08:42 2024 -0700

    Move files to computed property

commit b7744105a0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Jul 16 14:20:41 2024 -0700

    Migrate import type to component

commit 69263f0e5b
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Jul 16 13:30:29 2024 -0700

    Migrate header row to component

commit 017530ba4b
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Tue Jul 16 12:02:50 2024 -0700

    Make updating hook more specific

commit c8dad528a8
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Jul 15 16:15:58 2024 -0700

    Migrate a couple items out of mount

commit 256e989ba1
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Jul 15 15:49:18 2024 -0700

    Add test for importer

commit 9793016603
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Jul 11 13:32:16 2024 -0700

    Remove unneeded AuthorizesRequests

commit 9e06f2d17f
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Jul 11 13:22:10 2024 -0700

    Remove commented code

commit d4d19569ee
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Jul 11 10:52:47 2024 -0700

    adds execution timer

commit 43c7504f89
Author: Godfrey M <godmartinz@gmail.com>
Date:   Thu Jul 11 10:03:51 2024 -0700

    adds an all option, adds help context for all, seperates logic

commit 1fa6a763bc
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Jul 10 11:09:57 2024 -0700

    updated description

commit 726308bfd5
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Jul 10 10:58:45 2024 -0700

    removed typo

commit 22ddb695f2
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Jul 10 10:57:47 2024 -0700

    better description

commit 09b2feac54
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Jul 10 10:56:44 2024 -0700

    updates assets with selected model to inherit asset model eol

commit 57e1df86c8
Author: Godfrey M <godmartinz@gmail.com>
Date:   Wed Jul 10 10:21:24 2024 -0700

    finds model and collects assets with such model

commit 3ea5d4ee40
Author: Robert-Azelis <82208283+Robert-Azelis@users.noreply.github.com>
Date:   Thu May 2 12:55:17 2024 +0200

    Update BulkAssetsController.php

    Fix for bulk updarte of purchase date to calculate new EOL

commit 5fa0c87ab0
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Apr 30 12:02:11 2024 -0700

    null debugbar

commit 75aa01791a
Author: Godfrey M <godmartinz@gmail.com>
Date:   Tue Apr 30 11:54:33 2024 -0700

    adds location select to the create new user vice asset checkout

commit 697595d963
Merge: 0bdd8a591 9502525a4
Author: akemidx <116301219+akemidx@users.noreply.github.com>
Date:   Tue Nov 21 16:07:26 2023 -0500

    Merge branch 'develop' into eol_date_range_for_reports

commit 0bdd8a5917
Author: akemidx <kojotek.dx@gmail.com>
Date:   Wed Aug 2 16:40:38 2023 -0400

    fixing key names

commit e35dd2daa1
Author: akemidx <kojotek.dx@gmail.com>
Date:   Wed Jul 26 17:45:18 2023 -0400

    asset_eol_date stuff

commit f71b69a739
Author: akemidx <kojotek.dx@gmail.com>
Date:   Wed Jul 26 17:31:06 2023 -0400

    adding eol fields

commit 499a3debcd
Author: akemidx <kojotek.dx@gmail.com>
Date:   Tue Jul 11 14:08:55 2023 -0400

    this WILL break. i'm back to site not found which is something missing. otherwise the columns are either blank or another value like expected checkin i was using to test a bit

Signed-off-by: snipe <snipe@snipe.net>
2024-11-12 15:39:22 +00:00
snipe
9eed6cde43 Merge remote-tracking branch 'origin/develop' 2024-11-11 14:04:56 +00:00
snipe
6bec573956 Merge pull request #15794 from snipe/check_for_file_on_asset_acceptance
Check that the file exists before trying to download stored EULA
2024-11-11 13:54:09 +00:00
snipe
1fc5bb54e1 Check that the file exists before trying to download
Signed-off-by: snipe <snipe@snipe.net>
2024-11-11 13:50:53 +00:00
snipe
5d581752af Merge remote-tracking branch 'origin/develop' 2024-11-10 18:05:52 +00:00
snipe
b6ad69fac2 Merge pull request #15793 from snipe/allow_eol_explicit
Allow user to specify null for calculation or explicit on bulk edit
2024-11-10 18:05:20 +00:00
snipe
47b2cdb846 Allow user to specify null for calculation or explicit on bulk edit
Signed-off-by: snipe <snipe@snipe.net>
2024-11-10 18:04:13 +00:00
snipe
7596717a15 Merge remote-tracking branch 'origin/develop' 2024-11-10 17:49:30 +00:00
snipe
357ef7e375 Merge pull request #15792 from snipe/edit_eol_from_bulk
Added EOL date to bulk asset edit
2024-11-10 17:48:25 +00:00
snipe
6928b1b273 Added eol date to bulk asset edit
Signed-off-by: snipe <snipe@snipe.net>
2024-11-10 17:47:10 +00:00
snipe
c6b9556f60 Merge remote-tracking branch 'origin/develop' 2024-11-08 10:28:26 +00:00
snipe
000f3171e3 Upgrade jspdf-autotable from 3.8.3 to 3.8.4 #15786
Signed-off-by: snipe <snipe@snipe.net>
2024-11-08 10:28:01 +00:00
Marcus Moore
4bb19152c4 Move test 2024-11-07 17:01:47 -08:00
Marcus Moore
dc0b8c7572 Inline route helpers in tests 2024-11-07 16:54:55 -08:00
Marcus Moore
b8265d54bb Improve comment 2024-11-07 16:42:55 -08:00
Marcus Moore
0e3efdfe87 Add string to name validation 2024-11-07 16:40:54 -08:00
Marcus Moore
363ec841d1 Re-introduce soft deletes 2024-11-07 16:40:37 -08:00
Marcus Moore
f8d0ddb3f7 Improve template name input 2024-11-07 14:17:20 -08:00
Marcus Moore
4aa5961860 Update page titles 2024-11-07 12:13:20 -08:00
Godfrey M
ca4bafc04a adds a dark background to fieldsets, fixes right border 2024-11-07 11:34:12 -08:00
Marcus Moore
7862b74e99 Inline fields when updating 2024-11-07 11:03:03 -08:00
Marcus Moore
c5710b858e Add test validation test for update method and remove name uniqueness constraint 2024-11-07 11:02:10 -08:00
snipe
d489527e6d Merge remote-tracking branch 'origin/develop' 2024-11-07 13:19:52 +00:00
snipe
5ef3183a52 Merge pull request #15783 from uberbrady/improve_user_and_location_manager_indexes
Improved indexes on manager_id for locations and users, including del…
2024-11-07 11:44:06 +00:00
Brady Wetherington
050831868e Improved indexes on manager_id for locations and users, including deleted_at 2024-11-07 11:39:27 +00:00
Tobias Regnery
2db70379a6 Fix Indentation in UsersController
The indentation in the update-function of the UsersController is partially wrong.
Fix this to avoid confusion.
2024-11-07 09:22:42 +01:00
snipe
aa080945f6 Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	public/css/dist/all.css
#	public/css/dist/bootstrap-table.css
#	public/js/dist/bootstrap-table.js
#	public/mix-manifest.json
2024-11-06 21:26:21 +00:00
snipe
a41529dbc4 Merge pull request #15780 from uberbrady/add_manager_indexes
Add new indexes to locations and users for faster manager lookups
2024-11-06 21:22:45 +00:00
Brady Wetherington
4fcf5ac7da Add new indexes to locations and users for faster manager lookups 2024-11-06 21:19:41 +00:00
Marcus Moore
8873137ed0 Scaffold updating template name 2024-11-06 12:29:31 -08:00
Marcus Moore
37d792352d Update page title dynamically 2024-11-06 12:11:35 -08:00
snipe
aa168fcb5b Updated BS table to 1.23.5
Signed-off-by: snipe <snipe@snipe.net>
2024-11-06 18:41:52 +00:00
snipe
9c1c93ad52 Merge pull request #15774 from marcusmoore/feature/sc-27350
Added Checkout ID column to user accessory table
2024-11-06 18:40:35 +00:00
Marcus Moore
ad99b8b456 Use generic ID translation 2024-11-06 10:37:31 -08:00
snipe
b96a312539 Merge pull request #15779 from ubc-cpsc/bugfix/CVE-2024-50345
Fixes CVE-2024-50342, CVE-2024-50345, CVE-2024-51736
2024-11-06 18:29:22 +00:00
Joël Pittet
bab1e58ea4 symfony/http-client CVE-2024-50342, symfony/http-foundation CVE-2024-50345, symfony/process CVE-2024-51736 2024-11-06 09:46:11 -08:00
snipe
9ce1e78c5c Merge remote-tracking branch 'origin/develop' 2024-11-06 14:16:09 +00:00
snipe
654f67b6ac Updated webpack
Signed-off-by: snipe <snipe@snipe.net>
2024-11-06 14:05:42 +00:00
snipe
3965bcd7c1 Merge pull request #15773 from Godmartinz/Fix_failing_failing_tests
Fixed notifications for licenses and asset to asset checkoutables
2024-11-06 14:02:44 +00:00
NebelKreis
52e4414bc5 Feature: Added asset ID option to 2D barcode in label generation 2024-11-05 13:41:34 +01:00
NebelKreis
f96b7c5056 Feature: Added data type context for select options with "URL:" and "Data:" labels, including translations 2024-11-05 13:40:33 +01:00
akemidx
82c38a8b18 or statement for if/else 2024-11-04 20:43:18 -05:00
akemidx
2f5e468b3c this fixes the assigned to piece 2024-11-04 19:48:34 -05:00
Godfrey M
2362cb5e52 refactor to getNotifiables 2024-11-04 16:32:46 -08:00
Marcus Moore
e7cb4a75eb Show accessory checkout id in user accessory table 2024-11-04 15:56:53 -08:00
Godfrey M
93494ac554 put dataprovider back in for tests 2024-11-04 15:17:58 -08:00
Godfrey M
0d707a1851 fixes notifications for licenses and asset to asset checkouables 2024-11-04 15:13:10 -08:00
Marcus Moore
4daa8e7c63 Indenting 2024-11-04 12:49:44 -08:00
Marcus Moore
41f25341fd Populate select with selected template 2024-11-04 12:32:05 -08:00
snipe
287f4addf0 Merge pull request #15771 from snipe/revert-15744-chore/action-tests-debugging
Revert "Added the display of logs when tests fail in GitHub Actions"
2024-11-04 20:06:24 +00:00
Marcus Moore
2e96d478f1 Revert "Added the display of logs when tests fail in GitHub Actions" 2024-11-04 11:04:17 -08:00
snipe
f32ebdc7ac Merge pull request #15765 from marcusmoore/chore/add-missing-livewire-file
Added missing Livewire file
2024-10-31 22:39:58 +00:00
Marcus Moore
d6c7dc8e1c Add missing livewire file 2024-10-31 15:37:01 -07:00
Godfrey M
de77eda33d another line indent 2024-10-31 14:38:32 -07:00
Godfrey M
ee58fcc898 moved lines in for labels 2024-10-31 14:37:08 -07:00
Godfrey M
ae3cb7b37b adds migration to update new with old if blank and remove old barcod variables 2024-10-31 14:35:13 -07:00
snipe
95dba6c426 Merge remote-tracking branch 'origin/develop' 2024-10-31 21:06:59 +00:00
snipe
5897d37fcf Merge pull request #15763 from Godmartinz/no_to_email_check
Fixed emails not being send if target has no email or if not instance of User. Cc_emails will still be sent.
2024-10-31 20:54:01 +00:00
Godfrey M
21a27dcac1 fixed conflicts 2024-10-31 12:55:46 -07:00
Godfrey M
3791380764 remove unused uses 2024-10-31 12:52:47 -07:00
Godfrey M
7a0f79ecd2 remove test route 2024-10-31 12:51:22 -07:00
Godfrey M
97a449e80e removes instanceof User check 2024-10-31 12:50:13 -07:00
Godfrey M
e65942064e send emails even if target has no email 2024-10-31 12:45:29 -07:00
Marcus Moore
5f83cb6a14 Use route model binding 2024-10-31 12:34:06 -07:00
Marcus Moore
ae24b73b32 Fix action_type from "created" to" create" 2024-10-31 12:19:41 -07:00
Marcus Moore
4aedbb52fa Implement activity logging transformer tests 2024-10-31 12:15:05 -07:00
snipe
49de07045a Merge pull request #15731 from Godmartinz/refacto_ms_teams_notifs
Fixed MS Team Notifications to utilize workflows after deprecation
2024-10-31 17:53:17 +00:00
snipe
7e996c40f5 Merge pull request #15758 from snipe/jerm/fix-deprecation-warning
Fix ${var} deprecation warning in License model
2024-10-31 02:51:42 +00:00
Jeremy Price
69e74bbdd3 Fix ${var} deprecation warning in License model
When upgrading to php8.3 i started getting deprecation warning about
using ${var} instead of {$var} in 2 places in License.php

PHP Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /var/www/snipe-it/app/Models/License.php on line 187
PHP Deprecated:  Using ${var} in strings is deprecated, use {$var} instead in /var/www/snipe-it/app/Models/License.php on line 219

This simple fix switches the offending statements to {$var} syntax.
2024-10-30 19:43:54 -07:00
Marcus Moore
20dab4d89d Simplify tests 2024-10-30 16:50:55 -07:00
Marcus Moore
e871481042 Add group 2024-10-30 16:48:42 -07:00
akemidx
f10807661d fixing bulk delete table 2024-10-30 19:26:52 -04:00
Marcus Moore
d727b03d95 Implement activity log test 2024-10-30 14:25:07 -07:00
Marcus Moore
0cc3031864 Implement deleted log 2024-10-30 14:05:27 -07:00
Marcus Moore
59e6874a4a Scaffold test cases 2024-10-30 13:07:51 -07:00
snipe
73e8f160cf Merge pull request #15756 from Godmartinz/cc-email-array
changes `admin_cc_email` validation to allow an array
2024-10-30 19:29:09 +00:00
Marcus Moore
930ef3fd11 Work on tests for activity logging 2024-10-30 12:22:59 -07:00
Godfrey M
bd23772fe9 changes cc_email validation to allow array 2024-10-30 11:42:15 -07:00
Godfrey M
73772a0138 change button text 2024-10-30 11:12:31 -07:00
Godfrey M
b26cae372c merged in develop 2024-10-30 10:40:23 -07:00
Godfrey M
d6ba303f39 Merge branch 'develop' into refacto_ms_teams_notifs
# Conflicts:
#	app/Listeners/CheckoutableListener.php
2024-10-30 10:27:45 -07:00
snipe
931ab103c1 Merge remote-tracking branch 'origin/develop' 2024-10-30 13:21:25 +00:00
snipe
f68df1fa06 Made type searchable in action logs
Signed-off-by: snipe <snipe@snipe.net>
2024-10-30 13:21:13 +00:00
snipe
f0813e03bf Merge pull request #15681 from Godmartinz/seperating_notification_n_mail
Separated Notifications and Emails: Check ins and Check outs
2024-10-30 12:18:41 +00:00
Marcus Moore
35f8a71c71 Test organization 2024-10-29 16:17:12 -07:00
Marcus Moore
86762c5e90 Remove marker test case 2024-10-29 16:12:34 -07:00
Marcus Moore
3c75fc2ced Move test 2024-10-29 16:12:13 -07:00
Marcus Moore
702edf7908 Remove x from select dropdown 2024-10-29 15:34:00 -07:00
Marcus Moore
54b4db86d2 Revert "Add soft deletes"
This reverts commit 0eadab49f1.
2024-10-29 15:33:49 -07:00
Marcus Moore
0eadab49f1 Add soft deletes 2024-10-29 15:26:18 -07:00
Marcus Moore
45e98e0282 Merge branch 'develop' into saving_custom_report_template 2024-10-29 15:20:52 -07:00
Marcus Moore
b97c54a54b Improve handling of old data for text inputs 2024-10-29 11:25:54 -07:00
NebelKreis
e22296fd79 Feature: Added serial number option to 2D barcode in label generation 2024-10-29 13:49:05 +01:00
NebelKreis
6c17d7d732 Fix: Corrected path in translation function
Updated the translation function to use the correct path, ensuring that instead of displaying the translation path as plain text, the appropriate translation is now shown as intended.
2024-10-29 11:45:29 +01:00
snipe
05875ebd1f Updated translations
Signed-off-by: snipe <snipe@snipe.net>
2024-10-28 22:04:35 +00:00
Godfrey M
9a0eee8f03 revert testing variables 2024-10-28 15:03:43 -07:00
Godfrey M
6128765d1f change wording on notification button 2024-10-28 15:03:03 -07:00
Godfrey M
c24f79c025 update method comment 2024-10-28 14:58:43 -07:00
Godfrey M
e7c4343c90 readd checkin accessory format 2024-10-28 14:56:48 -07:00
Marcus Moore
0d58ac61bc Make options required in model 2024-10-28 14:48:19 -07:00
Marcus Moore
7c08fbe144 Update test name 2024-10-28 14:43:05 -07:00
Marcus Moore
7777147af5 Add custom-reporting group 2024-10-28 14:42:44 -07:00
Marcus Moore
2042733dc0 Switch to array syntax 2024-10-28 14:37:52 -07:00
Godfrey M
c0620c27ff adds back laravels channel formats 2024-10-28 14:30:34 -07:00
Marcus Moore
d4cf392387 Organize tests 2024-10-28 14:24:47 -07:00
Marcus Moore
c881727747 Add redirect for missing template 2024-10-28 14:12:19 -07:00
Godfrey M
ed81973fe6 adds notifications for deprecation 2024-10-28 13:57:42 -07:00
Marcus Moore
ee00699cb3 Remove unused strings 2024-10-28 13:07:29 -07:00
Marcus Moore
b45749af16 Update translation strings 2024-10-28 13:06:19 -07:00
Marcus Moore
54dec8d30d Add translations 2024-10-28 12:56:42 -07:00
snipe
2d318b394c Merge pull request #15744 from marcusmoore/chore/action-tests-debugging
Added the display of logs when tests fail in GitHub Actions
2024-10-28 18:41:49 +00:00
Godfrey M
b987b3dc00 adds back the laravel channels package and applies a deprecated check 2024-10-28 10:57:48 -07:00
Marcus Moore
5c49716129 Dump logs on test failure 2024-10-28 10:24:35 -07:00
NebelKreis
6f3fb47e4a Feature: Added asset tag option to barcode in label generation 2024-10-28 15:39:04 +01:00
snipe
755604677c Merge remote-tracking branch 'origin/develop' 2024-10-28 13:38:19 +00:00
snipe
86d784bd59 Fixed #15740 - use non-translated strings for icons
Signed-off-by: snipe <snipe@snipe.net>
2024-10-28 13:37:59 +00:00
snipe
65f4f3def2 Merge remote-tracking branch 'origin/develop' 2024-10-28 12:04:20 +00:00
snipe
589f9cccdf Fixed #15732
Signed-off-by: snipe <snipe@snipe.net>
2024-10-28 12:04:10 +00:00
snipe
42ec2fa05f Merge remote-tracking branch 'origin/develop' 2024-10-28 11:55:43 +00:00
snipe
4d848e45e6 Fixed #15736
Signed-off-by: snipe <snipe@snipe.net>
2024-10-28 11:55:24 +00:00
Godfrey M
58ff641f82 removed unused variables 2024-10-24 22:53:53 -07:00
Godfrey M
ce68f550d8 remove alert emails from cc 2024-10-24 16:01:17 -07:00
Godfrey M
6f0c1b12b1 this adds check out message for consumables 2024-10-24 15:04:54 -07:00
Godfrey M
278bc5e52a ads check in and checkout message for license seats 2024-10-24 14:59:10 -07:00
Godfrey M
cce75a8185 adds check in and checkout messag for accessories 2024-10-24 14:48:23 -07:00
Godfrey M
e27ff13377 adds check in and checkout message for assets 2024-10-24 14:39:40 -07:00
Godfrey M
56365495a1 remove unnecessary fields in accessory checkout mail 2024-10-24 14:26:42 -07:00
Godfrey M
18da80e6de fix checkoutable listener for microsoft teams 2024-10-24 14:24:00 -07:00
akemidx
b29a2a6ae4 removing header color from login button 2024-10-24 17:23:03 -04:00
Godfrey M
18760e3fa1 replaces teams notification package, passes integration test 2024-10-24 12:21:51 -07:00
Godfrey M
57107c487c fixed last test, definetly the last test 2024-10-24 09:40:10 -07:00
snipe
dfc63641dc Merge pull request #15550 from uberbrady/fix_multi_create_partial_failure
Fix multi create partial failure (fixes: [RB-18591])
2024-10-24 11:40:50 +01:00
snipe
3445b543ea Merge remote-tracking branch 'origin/develop' 2024-10-24 10:04:02 +01:00
snipe
07a51ec8b1 Merge pull request #15712 from Godmartinz/fix_import-progress-bar
Upgraded `livewire v3.5.9 => v3.5.12`
2024-10-24 10:03:10 +01:00
snipe
15ffd69ac0 Merge remote-tracking branch 'origin/develop' 2024-10-24 01:40:10 +01:00
Godfrey M
6329f5b87e removed unused variable from test 2024-10-23 17:33:23 -07:00
snipe
e0ec6795b5 Use crucial for seeded data
Signed-off-by: snipe <snipe@snipe.net>
2024-10-24 01:27:50 +01:00
Godfrey M
15073a0d38 last test to fix 2024-10-23 17:27:37 -07:00
Godfrey M
a80c09c16d Merge branch 'develop' into seperating_notification_n_mail 2024-10-23 17:23:55 -07:00
snipe
5509d756b7 Merge pull request #15722 from Godmartinz/fix_component_factory
Fixed Component Factory: use manufacturer factory for `manufactuer_id`
2024-10-24 01:12:11 +01:00
Marcus Moore
7238238d1f Use created_by instead of user_id 2024-10-23 16:40:03 -07:00
Godfrey M
b16a978f1b uses manufacturer factory for manufactuer_id 2024-10-23 16:25:51 -07:00
Godfrey M
ab3b9c4510 remove unnecessary code from checkinasset notification 2024-10-23 16:24:01 -07:00
Marcus Moore
84f6638f50 Add authorization check 2024-10-23 16:11:10 -07:00
Godfrey M
2cc2b2b1df apply array_filter to cc emails to prevent errors 2024-10-23 16:06:27 -07:00
Godfrey M
62d06b44d6 set fallback from email address to service.snipe-it.io 2024-10-23 15:43:42 -07:00
Marcus Moore
e390a95bd3 Improve back button behavior 2024-10-23 15:42:09 -07:00
Marcus Moore
3616c92148 Reflash template name 2024-10-23 15:40:54 -07:00
Marcus Moore
2fcc7e1188 Make template name required 2024-10-23 15:24:58 -07:00
Marcus Moore
8a06f4ad82 Improve label 2024-10-23 15:21:02 -07:00
Godfrey M
f29a383179 Merge branch 'develop' into seperating_notification_n_mail
# Conflicts:
#	app/Notifications/CheckoutConsumableNotification.php
2024-10-23 15:15:14 -07:00
Godfrey M
fd74c35102 remove old notify by mail from consumable notification 2024-10-23 15:08:29 -07:00
Godfrey M
c681946b1d added component markdown changes 2024-10-23 15:05:39 -07:00
Godfrey M
257d25bd9e removed import notification from test, feature is not present in project 2024-10-23 14:56:54 -07:00
Godfrey M
6c34a5c52c conditionally check cc emails, initiate variables 2024-10-23 14:54:21 -07:00
Godfrey M
1b5f4415ae corrected cc email behavior 2024-10-23 14:44:45 -07:00
Marcus Moore
853e14f369 Fix width 2024-10-23 13:24:06 -07:00
Marcus Moore
c1aa33862d Add error message for eol start and end fields 2024-10-23 13:22:21 -07:00
Marcus Moore
30dc5fa0cf Allow retrieving eol start and end dates 2024-10-23 13:21:44 -07:00
Marcus Moore
94e168fa15 Fix label 2024-10-23 13:17:20 -07:00
snipe
7bbe23995d Merge remote-tracking branch 'origin/develop' 2024-10-23 19:14:36 +01:00
snipe
55ba6279a4 Use trans_choice on alert menu
Signed-off-by: snipe <snipe@snipe.net>
2024-10-23 19:14:17 +01:00
snipe
a9eea830e3 Added manufacturer and model number to component seeders
Signed-off-by: snipe <snipe@snipe.net>
2024-10-23 19:05:34 +01:00
snipe
574f2e096d Merge remote-tracking branch 'origin/develop' 2024-10-23 17:57:37 +01:00
snipe
af564935d5 Merge pull request #15720 from snipe/15695_adds_manufacturer_and_model_number_to_components
Fixed #15695 - Added manufacturer and model_number to components
2024-10-23 17:56:04 +01:00
snipe
3ee76be7e3 Added manufacturer and model_number to components
Signed-off-by: snipe <snipe@snipe.net>
2024-10-23 17:50:22 +01:00
snipe
e15e33b648 Merge remote-tracking branch 'origin/develop' 2024-10-23 15:14:29 +01:00
snipe
d58f87862c Merge pull request #15719 from snipe/#15717_adds_qty_to_consumable
Fixed #15717 - Added ability to checkout consumables in variable qty via API
2024-10-23 15:09:50 +01:00
snipe
0b6859c491 Added ability to checkout consumables in variable qty
Signed-off-by: snipe <snipe@snipe.net>
2024-10-23 15:05:35 +01:00
Marcus Moore
4217d7402b Improve tests 2024-10-22 17:50:40 -07:00
Marcus Moore
3d28a9090c Improve test 2024-10-22 17:38:22 -07:00
Marcus Moore
271de1eceb Improve tests 2024-10-22 17:37:23 -07:00
Marcus Moore
b6aae1f8a9 Group routes 2024-10-22 17:30:34 -07:00
Marcus Moore
c313a78c3c Remove outdated @since annotations 2024-10-22 17:04:23 -07:00
Marcus Moore
37d65dac3d Add todo 2024-10-22 17:01:37 -07:00
Marcus Moore
5ebf013d4e Add comment 2024-10-22 16:54:38 -07:00
Marcus Moore
02c22c9efb Add test case 2024-10-22 16:52:59 -07:00
Godfrey M
1e9922a0b0 fix moar tests 2024-10-22 16:14:36 -07:00
Godfrey M
ead27accac fixed accessory tests and notifiable target 2024-10-22 15:45:52 -07:00
Marcus Moore
d953519db6 Merge branch 'develop' into saving_custom_report_template 2024-10-22 15:11:18 -07:00
Godfrey M
727c0e458c remove translation 2024-10-22 14:34:39 -07:00
Godfrey M
870dc747db oops 2024-10-22 14:27:32 -07:00
Godfrey M
0fb3d83fac revert controller change 2024-10-22 14:26:54 -07:00
Godfrey M
0d59ccd6a6 upgraded livewire v3.5.9 => v3.5.12 2024-10-22 14:23:26 -07:00
Marcus Moore
dd97e4ea82 Update permission tests 2024-10-22 14:22:19 -07:00
snipe
1979ada656 Merge remote-tracking branch 'origin/develop' 2024-10-22 22:10:53 +01:00
snipe
5da3ce3564 Merge pull request #15711 from marcusmoore/fixes/custom-fieldset-checkboxes
Fixed custom field checkboxes on asset edit page
2024-10-22 22:10:20 +01:00
snipe
c536dbc741 Merge remote-tracking branch 'origin/develop' 2024-10-22 22:08:59 +01:00
snipe
c3bbca30ad Merge pull request #15710 from snipe/fixes_lightbox_for_avif
Fixes #15701 - load avif files properly in lightbox
2024-10-22 22:07:50 +01:00
snipe
37f14fff3b Fixed typo
Signed-off-by: snipe <snipe@snipe.net>
2024-10-22 22:07:28 +01:00
snipe
eb6c51fabd Fixes #15701 - load avif files properly in lightbox
Signed-off-by: snipe <snipe@snipe.net>
2024-10-22 22:04:57 +01:00
Marcus Moore
5ecd2b6293 Default checkbox elements to an empty array 2024-10-22 14:04:05 -07:00
Godfrey M
1e31592c55 messing with the tests 2024-10-22 11:49:06 -07:00
snipe
dccb788a88 Merge pull request #15691 from marcusmoore/fixes/get-id-for-current-user
Updated `Company::getIdForCurrentUser()` to return null in certain scenarios
2024-10-22 17:44:30 +01:00
Marcus Moore
d10fe77ee7 Merge branch 'develop' into fixes/get-id-for-current-user 2024-10-22 09:38:31 -07:00
snipe
7774dd0b7d Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	config/version.php
2024-10-22 16:53:47 +01:00
snipe
5e1d792bba Merge pull request #15687 from NebelKreis/fix/dashboard-title-casing
Fixed #15686: Corrected capitalization for dashboard section titles by removing strtolower()
2024-10-22 16:52:28 +01:00
snipe
9cf71976f6 Fixed #15706 - Removed purchase order number from asset import
Signed-off-by: snipe <snipe@snipe.net>
2024-10-22 16:51:42 +01:00
snipe
15745d9737 Merge pull request #15566 from Godmartinz/status-label-error-message
Fixed Status Labels Error Message
2024-10-22 16:39:44 +01:00
snipe
bd97955b9e Bumped hash
Signed-off-by: snipe <snipe@snipe.net>
2024-10-22 16:38:46 +01:00
snipe
252d99421c Merge pull request #15689 from snipe/better_handle_inline_files
Better handle inline files in file listing
2024-10-22 16:26:48 +01:00
snipe
5767a98ad8 Merge pull request #15649 from bryanlopezinc/ImproveImporting
Improve import performance
2024-10-22 16:26:23 +01:00
snipe
0c820cbc0d Merge pull request #15598 from spencerrlongg/bug/custom_field_validation_issue
Custom Field Existence Validation Issue
2024-10-22 15:56:12 +01:00
snipe
db81701621 Merge branch 'develop' into better_handle_inline_files 2024-10-22 15:44:24 +01:00
snipe
a05c33febf Squashed commit of the following:
commit 147fcfb8eb
Merge: 58a3d09b5 fdcc17ca2
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 15:12:55 2024 +0100

    Merge pull request #15676 from Toreg87/fixes/api_create_user_fmcs

    Fix user creation with FullMultipleCompanySupport enabled over API

commit 58a3d09b5f
Merge: 30a06a594 867fa2f36
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 14:55:42 2024 +0100

    Merge pull request #15703 from marcusmoore/bug/sc-27188

    Linked accessory files in activity report

commit 30a06a5942
Merge: 6c6af78e0 ce3086317
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 11:47:06 2024 +0100

    Merge pull request #15693 from marcusmoore/chore/remove-parallel-testing

    Removed brianium/paratest

commit 6c6af78e08
Merge: 9b06bbb6c 3f79fd7ea
Author: snipe <snipe@snipe.net>
Date:   Tue Oct 22 11:46:04 2024 +0100

    Merge pull request #15705 from marcusmoore/tests/icon-component-test

    Added test to ensure icon component does not end in newline

commit 3f79fd7ea7
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Oct 21 17:07:40 2024 -0700

    Add test to ensure icon component does not end in newline

commit 9b06bbb6c3
Merge: 46ad1d072 d7f70146f
Author: snipe <snipe@snipe.net>
Date:   Mon Oct 21 22:38:26 2024 +0100

    Merge pull request #15704 from marcusmoore/bug/remove-extra-icon

    Removed second icon in accessory file list

commit ce30863177
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Oct 21 13:57:04 2024 -0700

    Remove brianium/paratest dependency

commit d7f70146f4
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Oct 21 13:48:25 2024 -0700

    Remove extra icon in accessory file upload list

commit 867fa2f36e
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Oct 21 12:40:24 2024 -0700

    Display file in activity report for accessories

commit 0933a2d4ea
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Oct 17 18:01:48 2024 -0700

    Remove --parallel flag

commit 46ad1d072f
Merge: bcb4bd9eb 3cf746d7d
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 15:29:47 2024 +0100

    Merge pull request #15680 from uberbrady/bulk_checkout_to_bulk_actions

    Bulk checkout to bulk actions

commit bcb4bd9eb4
Merge: 250037540 f50ccbcc4
Author: snipe <snipe@snipe.net>
Date:   Thu Oct 17 10:20:13 2024 +0100

    Merge pull request #15683 from Toreg87/fixes/outdated_comment

    Fix outdated comment in CompanyableTrait

commit f50ccbcc49
Author: Tobias Regnery <tobias.regnery@gmail.com>
Date:   Thu Oct 17 11:07:28 2024 +0200

    Fix outdated comment in CompanyableTrait

    As of commit 5800e8d the user model uses CompanyableTrait so remove this clearly outdated comment

commit 3cf746d7df
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Oct 16 23:13:32 2024 +0100

    Rework the bulk checkout to not change how all checkouts work

commit 6b7af802af
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Thu Oct 10 13:28:23 2024 +0100

    Add 'bulk checkout' as one of the bulk actions in the bulk actions toolbar

commit fdcc17ca2c
Author: Tobias Regnery <tobias.regnery@gmail.com>
Date:   Wed Oct 16 11:18:24 2024 +0200

    Fix user creation with FullMultipleCompanySupport enabled over API

    It is currently possible as a non-superuser to create a new user or patch an existing user with arbitrary company over the API if FullMultipleCompanySupport is enabled.
    Altough a highly unlikely scenario as the user needs permission to create API keys and new users, it is a bug that should get fixed.

    Add a call to getIdForCurrentUser() to normalize the company_id if FullMultipleCompanySupport is enabled.

Signed-off-by: snipe <snipe@snipe.net>
2024-10-22 15:43:19 +01:00
snipe
03b01689b5 Merge remote-tracking branch 'origin/develop' 2024-10-22 15:39:20 +01:00
snipe
147fcfb8eb Merge pull request #15676 from Toreg87/fixes/api_create_user_fmcs
Fix user creation with FullMultipleCompanySupport enabled over API
2024-10-22 15:12:55 +01:00
snipe
58a3d09b5f Merge pull request #15703 from marcusmoore/bug/sc-27188
Linked accessory files in activity report
2024-10-22 14:55:42 +01:00
snipe
30a06a5942 Merge pull request #15693 from marcusmoore/chore/remove-parallel-testing
Removed brianium/paratest
2024-10-22 11:47:06 +01:00
snipe
6c6af78e08 Merge pull request #15705 from marcusmoore/tests/icon-component-test
Added test to ensure icon component does not end in newline
2024-10-22 11:46:04 +01:00
Marcus Moore
a20e03fce9 Merge branch 'develop' into saving_custom_report_template 2024-10-21 17:13:15 -07:00
Marcus Moore
3f79fd7ea7 Add test to ensure icon component does not end in newline 2024-10-21 17:07:40 -07:00
snipe
9b06bbb6c3 Merge pull request #15704 from marcusmoore/bug/remove-extra-icon
Removed second icon in accessory file list
2024-10-21 22:38:26 +01:00
Marcus Moore
ce30863177 Remove brianium/paratest dependency 2024-10-21 13:57:04 -07:00
Marcus Moore
d7f70146f4 Remove extra icon in accessory file upload list 2024-10-21 13:48:25 -07:00
Marcus Moore
867fa2f36e Display file in activity report for accessories 2024-10-21 12:40:24 -07:00
Marcus Moore
e1882ee6d2 Add comment 2024-10-21 12:21:45 -07:00
Marcus Moore
7eee239378 use is_numeric instead of is_int 2024-10-21 12:20:28 -07:00
Marcus Moore
4188849ae1 Add failing test case 2024-10-21 12:19:48 -07:00
snipe
787e651778 Fixed todos with log message
Signed-off-by: snipe <snipe@snipe.net>
2024-10-21 16:52:21 +01:00
snipe
ef9b6e3b07 Code cleanup
Signed-off-by: snipe <snipe@snipe.net>
2024-10-21 16:34:54 +01:00
snipe
06c599cc17 Added method to show or download file
Signed-off-by: snipe <snipe@snipe.net>
2024-10-21 16:34:03 +01:00
snipe
6105323877 Use plural class name for src
Signed-off-by: snipe <snipe@snipe.net>
2024-10-21 14:11:20 +01:00
Marcus Moore
0933a2d4ea Remove --parallel flag 2024-10-17 18:01:48 -07:00
Marcus Moore
a8d853c44a Remove focus group tags 2024-10-17 15:26:27 -07:00
Marcus Moore
7e1b47708e Fix failing test ensuring company id is an integer 2024-10-17 15:18:41 -07:00
Marcus Moore
979e4502ff Have getIdForCurrentUser method return null if FMCS enabled, user is not super admin, and does not have company 2024-10-17 15:14:39 -07:00
Godfrey M
ff113ef523 typo fix 2024-10-17 14:56:58 -07:00
Marcus Moore
99dd51a965 Improve name 2024-10-17 14:53:18 -07:00
Marcus Moore
15c2169477 Scaffold additional tests 2024-10-17 14:31:05 -07:00
Marcus Moore
50fa6ce335 Scaffold tests 2024-10-17 14:12:22 -07:00
Godfrey M
7ae76e7db9 remove viewdata array from 3 tests 2024-10-17 13:55:03 -07:00
Godfrey M
b98058ca98 fix tests pt 3 2024-10-17 13:48:26 -07:00
Godfrey M
83e8186d9e fix assertSent to AssertNotSent on some test 2024-10-17 13:39:56 -07:00
Godfrey M
cdd4fef7df attempt to fix tests p2 2024-10-17 13:34:55 -07:00
Godfrey M
dceb8e305f attempt to fix tests 2024-10-17 13:11:39 -07:00
Godfrey M
123cdeb858 add email check to listener 2024-10-17 12:39:48 -07:00
Godfrey M
496b44e887 merged composer lock from dev 2024-10-17 12:28:57 -07:00
Godfrey M
a690cc3582 removing my composer stuff again..for the last time 2024-10-17 12:26:55 -07:00
Godfrey M
ceb3f5cea6 added mail-gun and http-client to 8.1 2024-10-17 12:19:50 -07:00
Godfrey M
65735a31f1 removed symfony/mailgun-mailer symfony/http-client 2024-10-17 12:18:34 -07:00
Godfrey M
285d6897cf added a coulple test adjustments and moved mail send logic to listener 2024-10-17 12:05:36 -07:00
Marcus Moore
159a1d3f43 Be more explicit 2024-10-17 11:48:55 -07:00
snipe
d1149730be Apply blade component to files views
Signed-off-by: snipe <snipe@snipe.net>
2024-10-17 16:31:17 +01:00
snipe
46ad1d072f Merge pull request #15680 from uberbrady/bulk_checkout_to_bulk_actions
Bulk checkout to bulk actions
2024-10-17 15:29:47 +01:00
NebelKreis
780ed91a10 Fix: Removed strtolower() from dashboard titles
This fix ensures the correct capitalization in different languages.
2024-10-17 16:09:25 +02:00
snipe
bcb4bd9eb4 Merge pull request #15683 from Toreg87/fixes/outdated_comment
Fix outdated comment in CompanyableTrait
2024-10-17 10:20:13 +01:00
Tobias Regnery
f50ccbcc49 Fix outdated comment in CompanyableTrait
As of commit 5800e8d the user model uses CompanyableTrait so remove this clearly outdated comment
2024-10-17 11:07:28 +02:00
Godfrey M
9a79483375 removed namespaces from routing 2024-10-16 16:59:18 -07:00
Godfrey M
ed6034065b removed test route 2024-10-16 16:47:36 -07:00
Godfrey M
a7754c1a7f fixed asset checkout markdown, and notifiable variable 2024-10-16 16:46:52 -07:00
snipe
0e9b3c9119 Check for existence before trying to get the icon
Signed-off-by: snipe <snipe@snipe.net>
2024-10-17 00:27:39 +01:00
snipe
4933aa5784 Add StorageHelper to app config
Signed-off-by: snipe <snipe@snipe.net>
2024-10-17 00:27:04 +01:00
snipe
d67addc69e Removed filetype column - it’s dumb
Signed-off-by: snipe <snipe@snipe.net>
2024-10-17 00:21:43 +01:00
snipe
02c80ff18a Added comment
Signed-off-by: snipe <snipe@snipe.net>
2024-10-17 00:18:40 +01:00
snipe
c01190fac2 Conditionally add content-type
Signed-off-by: snipe <snipe@snipe.net>
2024-10-17 00:18:34 +01:00
snipe
017884f843 Added checks and filetype display
Signed-off-by: snipe <snipe@snipe.net>
2024-10-17 00:09:09 +01:00
snipe
c49921f50f Removed unused (maybe?) API endpoint
Signed-off-by: snipe <snipe@snipe.net>
2024-10-17 00:08:54 +01:00
snipe
c49abb6aea Refactor the UserFilesController show method for simpler inlining
Signed-off-by: snipe <snipe@snipe.net>
2024-10-17 00:08:38 +01:00
snipe
ccd2019448 Removed unusded use statements
Signed-off-by: snipe <snipe@snipe.net>
2024-10-17 00:08:04 +01:00
snipe
96191a5e93 Added method to decide if the file should be inlinable
Signed-off-by: snipe <snipe@snipe.net>
2024-10-17 00:07:54 +01:00
snipe
c56affd663 Added SVG icon
Signed-off-by: snipe <snipe@snipe.net>
2024-10-17 00:07:37 +01:00
Godfrey M
02bda3cd95 adds Checkout Consumable mailable and slackwebhook channel to notifs 2024-10-16 15:53:05 -07:00
Godfrey M
02ff646da4 adds checkin license mailable 2024-10-16 15:44:45 -07:00
Godfrey M
4becdca8aa removes toMail from license notificaqtion 2024-10-16 15:39:20 -07:00
Godfrey M
2584d60344 adds Licenses seat checkout Mailable 2024-10-16 15:38:49 -07:00
akemidx
f0d3a6e2d3 removing some comments/merging in develop 2024-10-16 18:35:31 -04:00
akemidx
5cb940c2ee Merge branch 'refs/heads/upstream/dev' into feature/sc-26415 2024-10-16 18:32:36 -04:00
Godfrey M
f1d83a3f28 forgot to add asset checkout markdown to projet 2024-10-16 15:30:53 -07:00
Godfrey M
c39df34bdf forgot to add accessory mail to project 2024-10-16 15:29:50 -07:00
Godfrey M
dcdf600b78 adds Checkin and Checkout mailables and listner logic 2024-10-16 15:27:34 -07:00
Brady Wetherington
3cf746d7df Rework the bulk checkout to not change how all checkouts work 2024-10-16 23:13:32 +01:00
Brady Wetherington
6b7af802af Add 'bulk checkout' as one of the bulk actions in the bulk actions toolbar 2024-10-16 22:02:45 +01:00
Godfrey M
9710436d54 adds Mailables for asset checkin and out 2024-10-16 13:12:07 -07:00
Godfrey M
16cffe9a9d simplified checkout webhook call 2024-10-16 12:53:35 -07:00
Godfrey M
9e1b86f586 sends checkout notification via webhook 2024-10-16 12:51:19 -07:00
Godfrey M
3ab2521cb0 email comes through, no picture and html markup appear though. 2024-10-16 12:21:33 -07:00
Marcus Moore
604a964462 Improve scenario descriptions 2024-10-16 11:52:24 -07:00
Marcus Moore
2f72c66614 Add additional case 2024-10-16 11:30:06 -07:00
Tobias Regnery
fdcc17ca2c Fix user creation with FullMultipleCompanySupport enabled over API
It is currently possible as a non-superuser to create a new user or patch an existing user with arbitrary company over the API if FullMultipleCompanySupport is enabled.
Altough a highly unlikely scenario as the user needs permission to create API keys and new users, it is a bug that should get fixed.

Add a call to getIdForCurrentUser() to normalize the company_id if FullMultipleCompanySupport is enabled.
2024-10-16 11:47:18 +02:00
Marcus Moore
cba1a56040 Improve readability? 2024-10-15 17:38:11 -07:00
Marcus Moore
d9afde4610 Write failing test 2024-10-15 17:00:22 -07:00
Godfrey M
9f06a0e441 handle some edge cases, null values clean up variable names 2024-10-15 14:01:28 -07:00
Marcus Moore
42095c0167 Add reference link 2024-10-15 13:02:22 -07:00
Godfrey M
f8476f7133 finished the construct and mail call in the listner 2024-10-15 12:49:52 -07:00
Marcus Moore
5306e1cd15 Merge branch 'develop' into saving_custom_report_template
# Conflicts:
#	resources/views/partials/forms/edit/location-select.blade.php
#	resources/views/partials/forms/edit/manufacturer-select.blade.php
#	resources/views/partials/forms/edit/model-select.blade.php
#	resources/views/partials/forms/edit/supplier-select.blade.php
#	resources/views/reports/custom.blade.php
2024-10-15 12:32:01 -07:00
Godfrey M
b29d032bf0 adds checkoutAssetMail class, and content method 2024-10-15 11:28:27 -07:00
snipe
688260c8bb Merge remote-tracking branch 'origin/develop' 2024-10-15 18:31:16 +01:00
snipe
2500375400 Merge pull request #15672 from uberbrady/ldap_location_fixes
Clean up how we use the '$location' in LDAP sync command
2024-10-15 17:34:35 +01:00
Brady Wetherington
e4e1d0d50a Clean up how we use the '$location' in LDAP sync command 2024-10-15 17:26:31 +01:00
snipe
b38c2d4660 Merge remote-tracking branch 'origin/develop' 2024-10-15 16:43:23 +01:00
snipe
16c8264e76 Merge pull request #15671 from snipe/bug/sc-27147
Bug/sc 27147
2024-10-15 16:42:34 +01:00
snipe
0ae9ce0aa9 Cannot sort by updated at on Users [sc-27147]
Signed-off-by: snipe <snipe@snipe.net>
2024-10-15 16:41:45 +01:00
snipe
50b8f180b3 More logical grouping in allow_columns
Signed-off-by: snipe <snipe@snipe.net>
2024-10-15 16:41:39 +01:00
snipe
b256bea000 Merge remote-tracking branch 'origin/develop' 2024-10-15 13:10:55 +01:00
snipe
914a647204 Merge pull request #15669 from snipe/remlove_ou_requirenedess
Fixed #15663 - remove requiredness for OU
2024-10-15 12:47:15 +01:00
snipe
e9225ff3ea Switch to regular HTML for input form field
Signed-off-by: snipe <snipe@snipe.net>
2024-10-15 12:43:10 +01:00
snipe
d0d4159088 Fixed typo
Signed-off-by: snipe <snipe@snipe.net>
2024-10-15 12:42:09 +01:00
snipe
69b6080bd8 Merge pull request #15666 from snipe/updated_readme_llm
Added LLM note
2024-10-15 10:31:29 +01:00
snipe
b997d728fb Added LLM note
Signed-off-by: snipe <snipe@snipe.net>
2024-10-15 10:30:34 +01:00
snipe
ddead359d0 Merge pull request #15660 from Toreg87/fixes/api_asset_create_fmcs2
Refactor asset creation with API
2024-10-14 14:29:34 +01:00
Tobias Regnery
f3c4e55667 Refactor asset creation with API
Commit fb4fe3004 restored the previous behaviour to check the company_id in case of FullMultipleCompanySupport.
But after rereading the code and the laravel documentation, the check is already there where it belongs in AssetStoreRequest::prepareForValidation()
The bug is the is_int-check of the request input in prepareForValidation(). Is is of type string even if it is a numeric value, so the call to getIdForCurrentUser() never happend.
Fix this by removing the check and the now redundant call to getIdForCurrentUser().
Wrong values will get caught by the model-level validation rules.
2024-10-14 15:14:41 +02:00
snipe
0a1716382e Merge remote-tracking branch 'origin/develop' 2024-10-11 16:07:01 +01:00
snipe
0d35335da7 Removed debugging
Signed-off-by: snipe <snipe@snipe.net>
2024-10-11 16:06:17 +01:00
snipe
6554d0c787 Merge remote-tracking branch 'origin/develop' 2024-10-11 14:24:11 +01:00
snipe
feaa714304 Nicer disabled button
Signed-off-by: snipe <snipe@snipe.net>
2024-10-11 14:23:57 +01:00
snipe
e1a70023b1 Merge pull request #15655 from Toreg87/fixes/api_asset_create_fmcs
Fixes #15654 Fix asset creation with API and FullMultipleCompanySupport
2024-10-11 11:45:48 +01:00
snipe
41ffd55430 Merge remote-tracking branch 'origin/develop' 2024-10-11 11:30:09 +01:00
snipe
de62359c67 Merge pull request #15533 from marcusmoore/testing/fmcs-accessories
Added tests for accessory api controller
2024-10-11 11:29:34 +01:00
snipe
1338eaa4fa Merge remote-tracking branch 'origin/develop' 2024-10-11 11:28:06 +01:00
snipe
12bda8fc7b Merge pull request #15653 from snipe/15651_admin_user_on_maintenances
Fixed #15651 - admin user now displaying on maintenances page
2024-10-11 11:27:18 +01:00
Tobias Regnery
fb4fe30049 Fix asset creation with API and FullMultipleCompanySupport
It is currently possible to create an asset with arbitrary company without being superuser and FullMultipleCompanySupport enabled.
This bug goes back to 75ac7f80b9 which is part of version 6.3.0.
Fix this by restoring the previous behaviour to check the company_id with getIdForCurrentUser().
2024-10-11 12:19:20 +02:00
snipe
b054017c9f Fixed #15651 - admin user now displaying on maintenances page
Signed-off-by: snipe <snipe@snipe.net>
2024-10-11 11:16:24 +01:00
bryanlopezinc
524a442724 Improved import performance 2024-10-10 23:32:07 +01:00
snipe
b296afe050 Merge remote-tracking branch 'origin/develop' 2024-10-10 12:32:19 +01:00
snipe
8aa298f6b0 Merge pull request #15644 from snipe/form_requests_for_settings
Form requests for settings
2024-10-10 12:30:53 +01:00
snipe
1f34657734 Fixed test
Signed-off-by: snipe <snipe@snipe.net>
2024-10-10 12:30:35 +01:00
snipe
0856ee648e Merge pull request #15648 from snipe/update_packages
Updated livewire to 3.5.2
2024-10-10 12:23:14 +01:00
snipe
1dafc970df Updated livewire to 3.5.2
Signed-off-by: snipe <snipe@snipe.net>
2024-10-10 12:19:57 +01:00
snipe
14b8b3b37c Merge remote-tracking branch 'origin/develop' 2024-10-10 12:09:29 +01:00
snipe
94a074a193 Merge pull request #15601 from snipe/check_db_on_healthcheck
Fixed #15439 - check database on healthcheck
2024-10-10 01:11:10 +01:00
snipe
2d49e1eff2 Merge pull request #15637 from akemidx/bug/sc-26614
FIXED: Badge counter showing deleted assets on User page
2024-10-10 01:09:11 +01:00
snipe
705bc6f0c0 Merge pull request #15642 from uberbrady/fix_bulk_checkout
Fix bulk checkout to users, assets, and locations
2024-10-10 01:08:25 +01:00
snipe
b5b93fdd3a Make ldap username required
Signed-off-by: snipe <snipe@snipe.net>
2024-10-10 00:27:00 +01:00
snipe
d9432baf7a Mlore ldap style improvements
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 23:51:20 +01:00
snipe
90be2a4498 Use newer naming convention for errors
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 22:26:30 +01:00
snipe
3886da8941 Remove form request from get LDAP method
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 22:15:49 +01:00
snipe
130e0c6242 More validation
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 22:15:37 +01:00
snipe
4361a10818 Added string
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 22:15:30 +01:00
snipe
aa8048ac15 Blade changes for ldap
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 22:15:25 +01:00
snipe
710e738e8e Fixed tests
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 22:15:16 +01:00
snipe
3705b91439 Added more validation
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 20:51:34 +01:00
snipe
707bdad192 Updated test
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 20:33:56 +01:00
snipe
242fe33f97 Switch to regular HTML input
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 20:33:42 +01:00
snipe
ded79469c1 Remove unused controller method
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 20:33:29 +01:00
snipe
d9fbf330e5 Fixed translations
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 20:33:15 +01:00
snipe
2cb9ac26cd Renamed test
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 19:57:04 +01:00
snipe
185bc966e6 Cleaned up use statements in tests
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 19:46:47 +01:00
snipe
a7f7e4938f Added form action
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 19:31:56 +01:00
snipe
2883e79193 Removed unecessary assets creation
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 19:30:55 +01:00
snipe
9c4191ae0a Basic tests
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 19:30:42 +01:00
snipe
3a77b83e9c Added space
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 19:30:34 +01:00
snipe
d9be2b5a5e Trying to use the email_array translation
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 19:30:25 +01:00
snipe
69c43c610c Fixed typo
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 19:30:00 +01:00
snipe
4f957bcf71 Required flag
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 18:34:53 +01:00
snipe
5cda7cce48 Only accept a positive number for thresholds
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 18:21:40 +01:00
snipe
41b94e7128 Fixed form input group
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 18:19:26 +01:00
snipe
aa55fa6ff4 Switch to form requests for settings
Signed-off-by: snipe <snipe@snipe.net>
2024-10-09 18:16:34 +01:00
Brady Wetherington
67a605c9a5 Fix bulk checkout to users, assets, and locations 2024-10-09 17:01:26 +01:00
akemidx
c2663ea1e0 withouttrashed 2024-10-08 16:38:33 -04:00
akemidx
299e743848 weird requesting 2024-10-08 15:51:53 -04:00
snipe
3ee5713740 Merge pull request #15631 from snipe/test/importer-tests
Add importer tests
2024-10-07 23:13:15 +01:00
snipe
ab8a22f77e Merge pull request #15630 from marcusmoore/bug/sc-27028
Only show EULA when available on print users page
2024-10-07 22:56:23 +01:00
snipe
56e7ea6677 Merge pull request #15616 from marcusmoore/test/importer-test-updates
Improve importer tests
2024-10-07 22:29:35 +01:00
snipe
26d7572bcc Merge pull request #15603 from marcusmoore/fixes/add-reguard
Added `Model::reguard()` to importer
2024-10-07 22:28:53 +01:00
Marcus Moore
8c9132aff9 Hide EULA text and button when nothing will be displayed 2024-10-07 14:22:49 -07:00
snipe
382ebef8ca Merge pull request #15621 from sniff122/develop
Docker Env: Change trusted proxies to RFC1918
2024-10-07 21:26:21 +01:00
snipe
5de608a6d2 Merge remote-tracking branch 'origin/develop' 2024-10-07 11:14:47 +01:00
snipe
2be88cb955 Merge pull request #15624 from snipe/fixed_line_break_on_print_all_for_users
Removed duplicate JS and removed line break before user section
2024-10-07 11:14:24 +01:00
snipe
3f36d5f9b3 Removed duplicate CSS and removed line break before user section
Signed-off-by: snipe <snipe@snipe.net>
2024-10-07 11:08:02 +01:00
Lewis Foster
f76da48448 Docker Env: Change trusted proxies to RFC1918 2024-10-05 18:27:42 +01:00
Marcus Moore
8035326675 Add test 2024-10-03 16:53:19 -07:00
Marcus Moore
dfdd85abb1 Remove unused imports 2024-10-03 15:14:07 -07:00
Marcus Moore
063ea1892b Add trait to clean up files after test runs 2024-10-03 15:02:03 -07:00
Marcus Moore
e213053775 Swap factory syntax 2024-10-03 13:59:58 -07:00
Marcus Moore
88d549e7c5 Remove unused data provider method 2024-10-03 13:40:37 -07:00
Marcus Moore
983a25aa5f Simplify permission tests 2024-10-03 13:39:54 -07:00
Marcus Moore
bde05d6ed9 Use new() instead of times() 2024-10-03 13:15:49 -07:00
Marcus Moore
b5ffe54bd0 Swap assertEquals parameter order 2024-10-03 13:15:02 -07:00
Marcus Moore
863c0a8b60 Fix import_type for accessory state 2024-10-03 11:43:02 -07:00
Marcus Moore
32551d55d7 Merge pull request #15579 from bryanlopezinc/ImportTests
Add Import data tests
2024-10-03 11:39:21 -07:00
snipe
c56a5edddc Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	public/css/build/app.css
#	public/css/build/overrides.css
#	public/css/dist/all.css
#	public/mix-manifest.json
2024-10-03 17:41:07 +01:00
snipe
7fc498a597 Merge pull request #15613 from snipe/css_fixes_for_long_values
Smarter word-wrapping on long text
2024-10-03 17:39:18 +01:00
snipe
cb281c6408 Tweaked line height
Signed-off-by: snipe <snipe@snipe.net>
2024-10-03 17:33:46 +01:00
snipe
f483cd448f Smarter work-wrapping on long text
Signed-off-by: snipe <snipe@snipe.net>
2024-10-03 17:27:37 +01:00
snipe
2de3bc92eb Merge remote-tracking branch 'origin/develop' 2024-10-03 16:29:14 +01:00
snipe
78ca1026fd Merge pull request #15612 from snipe/fixes_print_assigned_in_profile
Fixes print assigned in profile
2024-10-03 16:24:32 +01:00
snipe
722d5a58e7 Added isset on users
Signed-off-by: snipe <snipe@snipe.net>
2024-10-03 16:19:38 +01:00
snipe
7461c3e0ca Change controller to assume a collection. (This is dumb, but whatever)
Signed-off-by: snipe <snipe@snipe.net>
2024-10-03 16:19:27 +01:00
snipe
3c0f4181ae Use the newer button style
Signed-off-by: snipe <snipe@snipe.net>
2024-10-03 16:19:06 +01:00
snipe
f5d7b96503 Merge remote-tracking branch 'origin/develop' 2024-10-03 14:38:34 +01:00
snipe
3699d79363 Merge pull request #15610 from uberbrady/fix_numeric_sort_bug
Fix numeric sort 'ambiguous order clause' error
2024-10-03 14:34:00 +01:00
Brady Wetherington
350b627ce1 Fix numeric sort 'ambiguous order clause' error 2024-10-03 14:23:40 +01:00
akemidx
0c84904bf9 un'required'ing the rule. not sure what's breaking here but looking 2024-10-02 18:56:41 -04:00
akemidx
e00a1aec02 note box is now missing when unchecking setting 2024-10-02 18:52:33 -04:00
akemidx
06e3bb7fd1 requested changes 2024-10-02 18:37:11 -04:00
akemidx
492e686b7a Merge remote-tracking branch 'origin/feature/sc-26415' into feature/sc-26415
# Conflicts:
#	app/Http/Controllers/Assets/AssetCheckinController.php
#	app/Http/Controllers/Assets/AssetCheckoutController.php
#	app/Http/Requests/AssetCheckinRequest.php
2024-10-02 18:17:38 -04:00
akemidx
17706f150e requested changes 2024-10-02 18:15:53 -04:00
akemidx
6fef127cd1 missing closing ) 2024-10-02 18:15:53 -04:00
akemidx
f45b836010 backend form validation. +cleanup 2024-10-02 18:15:53 -04:00
akemidx
925aea8531 back to having tests pass. needed to comment out the notes rules() i added 2024-10-02 18:15:53 -04:00
akemidx
bd6698de2a fixing some formatting 2024-10-02 18:15:53 -04:00
akemidx
515f59fed9 more test work 2024-10-02 18:15:52 -04:00
akemidx
5e74b109d9 front end changes/updates from gh 2024-10-02 18:15:52 -04:00
akemidx
8b643cb3b9 note field optional 2024-10-02 18:15:52 -04:00
akemidx
700647c53f setting created 2024-10-02 18:15:52 -04:00
akemidx
081c5706c4 required, but not optional 2024-10-02 18:15:52 -04:00
Marcus Moore
ee046a8688 Add matching Model::reguard() 2024-10-02 10:50:40 -07:00
snipe
b34a7c8aad Removed die()
Signed-off-by: snipe <snipe@snipe.net>
2024-10-02 15:48:35 +01:00
snipe
f92bf5dc20 Updated language for failure
Signed-off-by: snipe <snipe@snipe.net>
2024-10-02 15:39:27 +01:00
snipe
4d9e85026a Fixed #15439 - check database on healthcheck
Signed-off-by: snipe <snipe@snipe.net>
2024-10-02 15:36:01 +01:00
snipe
1695b8250f Bumped version for master
Signed-off-by: snipe <snipe@snipe.net>
2024-10-02 12:41:31 +01:00
snipe
f42eeee666 Merge remote-tracking branch 'origin/develop' 2024-10-02 12:40:59 +01:00
snipe
54fbd0540d Merge branch 'develop' of https://github.com/snipe/snipe-it into develop 2024-10-02 12:40:49 +01:00
snipe
b483bb1633 Bumped version
Signed-off-by: snipe <snipe@snipe.net>
2024-10-02 12:40:45 +01:00
snipe
4db7358086 Merge pull request #15593 from Godmartinz/Fixed-divide-by-zero-bug
Fixed divide by zero bug in depreciation transformer
2024-10-02 12:38:46 +01:00
snipe
dc0949da78 Merge remote-tracking branch 'origin/develop' 2024-10-02 11:05:06 +01:00
snipe
0dd6f41f66 Simplified 2fa if/else
Signed-off-by: snipe <snipe@snipe.net>
2024-10-02 11:04:55 +01:00
snipe
0470a7c946 Merge remote-tracking branch 'origin/develop' 2024-10-02 11:01:05 +01:00
snipe
684c20ae39 Fixed parenthasis
Signed-off-by: snipe <snipe@snipe.net>
2024-10-02 11:00:49 +01:00
spencerrlongg
3153bbb13f dumb fix 2024-10-01 17:04:18 -05:00
akemidx
73a059c9ac missing closing ) 2024-10-01 16:37:30 -04:00
Marcus Moore
3dc64cc5e0 Reference accessory checkout and not the accessory 2024-10-01 13:35:39 -07:00
snipe
c32f4e34b4 Minor formatting fix
Signed-off-by: snipe <snipe@snipe.net>
2024-10-01 20:35:49 +01:00
snipe
c8981f5031 Merge remote-tracking branch 'origin/develop' 2024-10-01 20:32:41 +01:00
snipe
ca1886cebc Merge pull request #15594 from snipe/localizations/update-2024-10-01
Updated strings
2024-10-01 20:31:38 +01:00
snipe
a79dfea40a Updated strings
Signed-off-by: snipe <snipe@snipe.net>
2024-10-01 20:30:58 +01:00
snipe
45ab49eeab Merge pull request #15592 from spencerrlongg/bug/catch_request_notify_errors
Catch Errors Around Request Notifications
2024-10-01 20:26:42 +01:00
spencerrlongg
8232618a9f change the other one too 2024-10-01 14:26:32 -05:00
spencerrlongg
9a651b567d change error to warning 2024-10-01 14:24:03 -05:00
snipe
97d00e5aa8 Fixed erroneous form tag on anchor
Signed-off-by: snipe <snipe@snipe.net>
2024-10-01 20:08:54 +01:00
Marcus Moore
5b90d79494 Use created_by 2024-10-01 11:50:48 -07:00
Godfrey M
b9cfdf2e54 reworked monthly depreciation variable value 2024-10-01 11:41:59 -07:00
spencerrlongg
1139acd9f3 catch errors around request notifications 2024-10-01 13:36:47 -05:00
Godfrey M
b7ad80bd31 fix monthly depreciation value 2024-10-01 11:24:24 -07:00
Godfrey M
5ffd1b8daa fixes if statement in transformer 2024-10-01 11:02:39 -07:00
snipe
9a2117466e Removed placeholder
Signed-off-by: snipe <snipe@snipe.net>
2024-10-01 18:23:40 +01:00
snipe
7e3a062984 Use <th> for table header in bulk interstitial
Signed-off-by: snipe <snipe@snipe.net>
2024-10-01 18:23:07 +01:00
snipe
9cf4b03f59 Merge remote-tracking branch 'origin/develop' 2024-10-01 14:33:29 +01:00
snipe
d274fb6963 Merge pull request #15589 from snipe/adds_checkin_action_on_asset_delete
Adds checkin action on asset delete via View UI
2024-10-01 14:32:48 +01:00
snipe
27ba641aa5 Added checkin on delete to API
Signed-off-by: snipe <snipe@snipe.net>
2024-10-01 14:30:34 +01:00
snipe
5823197e6f Added checkin action on delete for checked out assets
Signed-off-by: snipe <snipe@snipe.net>
2024-10-01 14:29:02 +01:00
snipe
cfc04a1d12 Merge pull request #15588 from snipe/added_more_maxlengths
Added maxlengths to additional fields
2024-10-01 14:08:58 +01:00
snipe
cae8aa7840 Added maxlengths to additional fields
Signed-off-by: snipe <snipe@snipe.net>
2024-10-01 14:02:54 +01:00
spencerrlongg
4f9f035c69 added a way to manipulate validator attribute names 2024-09-30 20:09:00 -05:00
snipe
5d5e999384 Merge remote-tracking branch 'origin/develop' 2024-10-01 01:44:24 +01:00
snipe
12da43303f Fixed #15584 - regression with required css change
Signed-off-by: snipe <snipe@snipe.net>
2024-10-01 01:44:05 +01:00
Marcus Moore
fdfea390fb Merge branch 'develop' into testing/fmcs-accessories 2024-09-30 12:59:27 -07:00
spencerrlongg
cd3059f790 rm numbers too. :( 2024-09-30 13:38:52 -05:00
snipe
b04afbbc85 Merge pull request #15564 from uberbrady/improve_autoclose
Get us better debugging output for new Github Stale Action
2024-09-30 19:26:08 +01:00
snipe
b964ce1025 Merge pull request #15583 from Godmartinz/remove-sortable-from-depreciations
Removed sortablity for current value column in depreciations report
2024-09-30 19:25:05 +01:00
snipe
6217cba201 Merge pull request #15524 from Godmartinz/double-notif-bug
Fixed double webhook notifications // Separated email and webhook notifications.
2024-09-30 19:24:19 +01:00
Godfrey M
68e3f375fc removes sortablity from current value column 2024-09-30 11:15:49 -07:00
snipe
21af36b105 Merge remote-tracking branch 'origin/develop' 2024-09-30 18:24:19 +01:00
snipe
5689e940b8 Fixed #15581 - missing bracker
Signed-off-by: snipe <snipe@snipe.net>
2024-09-30 18:23:12 +01:00
bryanlopezinc
e807cfab86 Merge branch 'develop' into importTests 2024-09-30 12:47:52 +01:00
bryanlopezinc
0b3f458561 Added tests for Import feature 2024-09-30 12:42:41 +01:00
snipe
d6d5dfb3d2 Merge remote-tracking branch 'origin/develop' 2024-09-29 14:33:50 +01:00
snipe
001348c638 Unset required on checkout select :(
Related to the discussion at #15552

Signed-off-by: snipe <snipe@snipe.net>
2024-09-29 14:33:42 +01:00
snipe
9e3997e0a1 Generated prod assets
Signed-off-by: snipe <snipe@snipe.net>
2024-09-29 11:25:47 +01:00
snipe
1b041af862 Merge remote-tracking branch 'origin/master' into develop
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	public/css/build/app.css
#	public/css/build/overrides.css
#	public/css/dist/all.css
#	public/mix-manifest.json
2024-09-29 11:25:01 +01:00
snipe
260b153689 Merge pull request #15573 from snipe/fixed_requiredness_indicator
Fixes for requiredness indicator in UI
2024-09-28 16:09:51 +01:00
snipe
05d74f7a92 Covered setup pages too
Signed-off-by: snipe <snipe@snipe.net>
2024-09-28 15:42:03 +01:00
snipe
dc85588d7f Don’t show password as required if editing
Signed-off-by: snipe <snipe@snipe.net>
2024-09-28 15:31:44 +01:00
snipe
585f998cae Fixes for requiredness display
Signed-off-by: snipe <snipe@snipe.net>
2024-09-28 15:28:06 +01:00
snipe
d120585f94 Check for valid eula for license, consumable
Signed-off-by: snipe <snipe@snipe.net>
2024-09-27 14:07:30 +01:00
snipe
166a700342 Merge remote-tracking branch 'origin/develop' 2024-09-27 13:37:28 +01:00
snipe
36b27fcda3 Check for valid category before getting the eula
Signed-off-by: snipe <snipe@snipe.net>
2024-09-27 13:37:14 +01:00
snipe
a44490e448 Nowrap on files column
Signed-off-by: snipe <snipe@snipe.net>
2024-09-27 13:07:24 +01:00
Marcus Moore
e974c96eda Update to created_by 2024-09-26 12:41:16 -07:00
Marcus Moore
2004e58b53 Merge branch 'develop' into updated_ad_hoc_notes 2024-09-26 12:29:28 -07:00
Marcus Moore
eb2d7b1f4f Move comment location 2024-09-26 12:14:00 -07:00
Marcus Moore
47763d1e1a Add tests for adding notes to assets 2024-09-26 12:13:36 -07:00
Godfrey M
44447b85c9 Merge branch 'develop' into barcode_settings_hide 2024-09-26 11:27:05 -07:00
snipe
9aada2ec70 Merge pull request #15498 from Godmartinz/Modal_fix
Refactoring modals with partials and fixing misalignments
2024-09-26 09:09:35 +01:00
Godfrey M
3f74ff25d2 fixed error message 2024-09-25 16:19:09 -07:00
akemidx
b813dcd9d0 requested changes from github 2024-09-25 18:54:30 -04:00
Godfrey M
ef82f954e5 fixed required css, and user input lengths 2024-09-25 15:47:57 -07:00
spencerrlongg
b69596a261 rm dump 2024-09-25 16:21:33 -05:00
spencerrlongg
d02b9933e5 rm comment 2024-09-25 15:38:40 -05:00
spencerrlongg
852a56fa9b should be all good now 2024-09-25 15:30:41 -05:00
Brady Wetherington
3f311ba2fb Get us better debugging output for new Github Stale Action 2024-09-25 21:27:45 +01:00
Godfrey Martinez
96953aa2ed Merge pull request #23 from Godmartinz/Modal_fix_p3
replace duplicate code with partials
2024-09-25 12:50:01 -07:00
Godfrey M
b797c37acb replace duplicate code with partials 2024-09-25 12:48:05 -07:00
snipe
6c85ba3495 Merge remote-tracking branch 'origin/develop' 2024-09-25 20:45:02 +01:00
snipe
ac6411743b Merge pull request #15563 from snipe/refined_gates_on_user_bulk
Update for #15534 - Refined gates on user bulk
2024-09-25 20:35:58 +01:00
snipe
3f0245f88f Make controller gate match dropdown gate
Signed-off-by: snipe <snipe@snipe.net>
2024-09-25 20:33:00 +01:00
snipe
c02647a0fa Moved merge into delete gate, since they do technically delete
Signed-off-by: snipe <snipe@snipe.net>
2024-09-25 20:32:03 +01:00
snipe
edca3f432c Removed gate for delete
Signed-off-by: snipe <snipe@snipe.net>
2024-09-25 20:30:58 +01:00
snipe
2218c94aa3 Gates the dropdown based on user permissions
Signed-off-by: snipe <snipe@snipe.net>
2024-09-25 20:29:23 +01:00
Godfrey Martinez
e609b39760 Merge pull request #22 from Godmartinz/Modal_fix_p2
Modal fix p2
2024-09-25 12:09:26 -07:00
Godfrey M
12522a3791 fix spacing issues 2024-09-25 12:07:15 -07:00
spencerrlongg
9df78a9ed0 working! need formatting for error messages etc 2024-09-25 14:00:50 -05:00
snipe
f6d7ea19e4 Set view as base permission, drill down for more intrusive actions
Signed-off-by: snipe <snipe@snipe.net>
2024-09-25 19:44:39 +01:00
Godfrey M
18ddffe8f9 fix partial variable intialization, fix width of input fields 2024-09-25 11:42:16 -07:00
snipe
9b03f46490 Merge pull request #15534 from marcusmoore/bulk-print-users
Added the ability to bulk print users
2024-09-25 19:32:01 +01:00
Godfrey M
926a319552 Merge branch 'develop' into Modal_fix_p2 2024-09-25 11:10:24 -07:00
spencerrlongg
f3ad89931f hm ok this kind of works 2024-09-25 13:00:35 -05:00
spencerrlongg
21906d8c27 world set up and idea in place 2024-09-25 12:47:56 -05:00
snipe
9f8473e254 Merge remote-tracking branch 'origin/develop' 2024-09-25 18:36:40 +01:00
snipe
cb6e5042d9 Merge pull request #15547 from snipe/disallow_checkout_with_nondeployable_status
Fixed #13396 - do not allow checkout to undeployable status types
2024-09-25 18:32:59 +01:00
snipe
c1a887b48b Merge pull request #15561 from snipe/fixes/adds_action_date_to_sorting
Changed `action_date` to `created_at` in activity report
2024-09-25 18:32:21 +01:00
snipe
658c94ad8b Changed action_date to created_at
Signed-off-by: snipe <snipe@snipe.net>
2024-09-25 17:25:15 +01:00
Maciej Poleszczyk
d1e2f9db34 Fixing #15064 - to not fail ldap sync on single data issue with ldap manager 2024-09-25 17:56:49 +02:00
snipe
0e61d0b195 Merge remote-tracking branch 'origin/develop' 2024-09-25 15:51:38 +01:00
snipe
ba12204842 Merge pull request #15555 from snipe/fixes/user_file_upload
Fixed case on `$logAction` for user file upload
2024-09-25 15:51:14 +01:00
snipe
1c3babacaf Fixed case on logAction for usewr file upload
Signed-off-by: snipe <snipe@snipe.net>
2024-09-25 15:46:57 +01:00
snipe
abdddbec44 Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	public/css/build/app.css
#	public/css/build/overrides.css
#	public/css/dist/all.css
#	public/mix-manifest.json
2024-09-25 11:58:25 +01:00
snipe
eeabc8dc9d Dev assets
Signed-off-by: snipe <snipe@snipe.net>
2024-09-25 11:33:45 +01:00
snipe
21f8ac8e52 Merge pull request #15552 from Godmartinz/ragged-form-inputs
Fixed input field misalignments
2024-09-25 11:31:23 +01:00
snipe
a425c2b765 Merge remote-tracking branch 'origin/develop' 2024-09-25 10:52:19 +01:00
Godfrey M
2a2666be0b makes required a pseudo field 2024-09-24 13:24:50 -07:00
snipe
c38222e956 Merge pull request #15549 from snipe/fixes/#15548_unify_audit_api_endpoints
Fixes #15548 - unify audit api endpoints
2024-09-24 18:10:53 +01:00
snipe
0ce5832b6c Removed debugging
Signed-off-by: snipe <snipe@snipe.net>
2024-09-24 17:29:40 +01:00
Brady Wetherington
b6340532d7 Improve the error and success messages and linking 2024-09-24 17:15:39 +01:00
snipe
5fb43dd159 Handle audit *and* audits for urls
Signed-off-by: snipe <snipe@snipe.net>
2024-09-24 16:55:56 +01:00
snipe
de57d71bf1 Fixed #15548 - unify audit due/overdue APIs
Signed-off-by: snipe <snipe@snipe.net>
2024-09-24 16:30:24 +01:00
snipe
ba69259f2d Fixed #13396 - do not allow checkout to undeployable status types
Signed-off-by: snipe <snipe@snipe.net>
2024-09-24 15:35:00 +01:00
Brady Wetherington
c71411465a First pass at better-handling those annoying Rollbars we keep getting 2024-09-24 15:17:35 +01:00
snipe
8cf1e4dceb Merge pull request #15544 from snipe/bug/sc-26855
Fixed app settings view on mobile
2024-09-24 11:10:20 +01:00
snipe
66249a37ed Tweaked styles
Signed-off-by: snipe <snipe@snipe.net>
2024-09-24 11:08:31 +01:00
snipe
96712cb398 Fixed app settings view on mobile
Signed-off-by: snipe <snipe@snipe.net>
2024-09-24 10:55:26 +01:00
Marcus Moore
fac4833b58 Remove unused import 2024-09-23 17:15:16 -07:00
Marcus Moore
a12c9d053f Hide label when printing 2024-09-23 16:44:25 -07:00
Marcus Moore
8b3b68b308 Show or hide all eulas at once when printing multiple users 2024-09-23 16:43:14 -07:00
Marcus Moore
4b02db5031 Add authorization check in bulk users controller 2024-09-23 16:26:22 -07:00
Marcus Moore
ab90c0cf05 Add missing eager load in bulk users controller 2024-09-23 16:10:40 -07:00
Marcus Moore
cef7ddc719 Add eager loads to userscontroller 2024-09-23 16:10:21 -07:00
Marcus Moore
3870095a28 Fix Cannot read properties of undefined error by removing snipe-table class from eula table 2024-09-23 15:50:24 -07:00
Marcus Moore
a02e250b22 Add page breaks for each user 2024-09-23 15:26:15 -07:00
Marcus Moore
8ac5c0e471 Re-combine layout and view 2024-09-23 14:05:47 -07:00
Marcus Moore
a2d4dcf6e8 Use bulk actions menu 2024-09-23 12:49:36 -07:00
Marcus Moore
54044bfa5e Add eager loads 2024-09-23 10:57:57 -07:00
Marcus Moore
e493cc964d Remove AssetCountForSidebar middleware from print view 2024-09-23 10:48:07 -07:00
Marcus Moore
29af210f4f Merge branch 'develop' into bulk-print-users 2024-09-23 10:26:20 -07:00
snipe
34eb10ff73 Merge remote-tracking branch 'origin/develop' 2024-09-20 19:45:20 +01:00
snipe
ab0c009c0d Fixed seeder
Signed-off-by: snipe <snipe@snipe.net>
2024-09-20 19:45:10 +01:00
snipe
7d7d58769c Merge remote-tracking branch 'origin/develop' 2024-09-20 19:13:00 +01:00
snipe
b68805cf83 Small fix for notifications checkout
Signed-off-by: snipe <snipe@snipe.net>
2024-09-20 19:11:52 +01:00
snipe
245d5dc469 Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	config/version.php
2024-09-20 17:28:15 +01:00
snipe
7d858129d9 Bumped hash
Signed-off-by: snipe <snipe@snipe.net>
2024-09-20 14:44:19 +01:00
snipe
65ce63bc9b Merge pull request #15537 from snipe/snyk/updated_jspdf_autotable
Updated jspdf autotable
2024-09-20 14:42:07 +01:00
snipe
54fba2f547 Update jspdf autotable
Signed-off-by: snipe <snipe@snipe.net>
2024-09-20 14:40:41 +01:00
snipe
5eea9d1950 Corrected text warning translation
Signed-off-by: snipe <snipe@snipe.net>
2024-09-20 14:33:56 +01:00
snipe
b84a634ec7 Corrected comment
Signed-off-by: snipe <snipe@snipe.net>
2024-09-20 14:33:35 +01:00
snipe
2fc88a0e08 Eager load adminuser
Signed-off-by: snipe <snipe@snipe.net>
2024-09-20 14:33:26 +01:00
snipe
bc540b6564 Requestable status not saving with manual [sc-26848]
Signed-off-by: snipe <snipe@snipe.net>
2024-09-20 14:02:28 +01:00
snipe
f53b852dff Make created_by equal one in the seeder
Signed-off-by: snipe <snipe@snipe.net>
2024-09-20 13:53:52 +01:00
snipe
b83d1a043f Merge pull request #15519 from snipe/features/add_created_at_created_by
Change `user_id` to `created_by`
2024-09-20 13:47:31 +01:00
snipe
4ab478bb97 Merge remote-tracking branch 'origin/develop' 2024-09-20 13:44:45 +01:00
snipe
b21c303e56 Merge remote-tracking branch 'origin/develop' into features/add_created_at_created_by 2024-09-20 13:43:50 +01:00
Marcus Moore
5128fd49e6 Allow printing all users 2024-09-19 17:27:25 -07:00
Marcus Moore
2d2d5bdc7e Pass user in array 2024-09-19 17:23:47 -07:00
Marcus Moore
8364d26c9b Extract parent layout 2024-09-19 17:18:26 -07:00
Marcus Moore
efd6d7625f Remove bad closing tag 2024-09-19 17:16:05 -07:00
Marcus Moore
bdf5708bfc Remove accidental line 2024-09-19 17:10:43 -07:00
Marcus Moore
e95703cb18 Use eager load 2024-09-19 17:10:07 -07:00
Marcus Moore
7ad4a29970 Add eager loading 2024-09-19 16:54:39 -07:00
snipe
cdb7ccb8f3 Merge pull request #15532 from spencerrlongg/bug/15253
Catch Exceptions on Checkout Notification
2024-09-19 21:54:03 +01:00
snipe
8270947ed2 Merge pull request #13291 from akemidx/eol_date_range_for_reports
Added date range for EOL in custom reports
2024-09-19 21:49:27 +01:00
snipe
4f7c8e0c3d Merge pull request #14671 from Robert-Azelis/patch-6
[FIX] Update EOL date when used bulk update of purchase date
2024-09-19 21:36:09 +01:00
Marcus Moore
d609ed50a4 Merge branch 'develop' into testing/fmcs-accessories 2024-09-19 13:20:55 -07:00
snipe
b88f2054dd Refactor isDeletable on companies
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 20:38:34 +01:00
snipe
d7914e238d Added created by to company on save
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 20:34:54 +01:00
snipe
d7bde37842 Merge pull request #15507 from setpill/setpill/feat/use_explicit_attributes_in_ldap_sync
Added #15506: Explicitly request used LDAP attributes
2024-09-19 20:33:10 +01:00
snipe
454796e52a Merge pull request #15518 from snipe/sort_by_numeric_custom_fields
Fixed #11634 - Sort by numeric columns for numeric custom fields
2024-09-19 20:32:03 +01:00
snipe
eef487d61b Merge pull request #15531 from Godmartinz/status-doesnt-update-in-email
Fixed mail notification field `status label` not updating
2024-09-19 20:31:02 +01:00
Godfrey M
71dbc7abb0 refreshed the assetstatus relationship 2024-09-19 12:23:07 -07:00
Marcus Moore
d639d6fbc1 Add tests for accessory select list endpoint 2024-09-19 12:21:54 -07:00
snipe
74088ea581 Optimize isDeletable counts
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 20:13:38 +01:00
Marcus Moore
fff069824b Add tests for update accessory endpoint 2024-09-19 12:11:03 -07:00
spencerrlongg
d446773fdd catch exceptions on notification 2024-09-19 14:05:48 -05:00
snipe
f283b5fbe8 Eager load adminuser
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 19:56:39 +01:00
Marcus Moore
a5be18bb14 Add test for limit and offset 2024-09-19 11:55:15 -07:00
snipe
eb6f05faf7 Eager load adminuser
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 19:41:46 +01:00
snipe
118183ff58 Removed footer
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 19:41:39 +01:00
Marcus Moore
2137890496 Remove dead code 2024-09-19 11:33:20 -07:00
snipe
ebf6ce6980 Refactor for fewer queries
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 19:27:10 +01:00
Marcus Moore
9b22d6d493 Add tests for accessory checkouts endpoint 2024-09-19 11:24:01 -07:00
snipe
5ebf0ed2b2 Updated variable
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 19:19:14 +01:00
snipe
836893cba5 Added id to report
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 18:35:00 +01:00
snipe
cd98b3817d Removed duplicate line
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 18:26:08 +01:00
snipe
727806372c Added created_by to status label
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 18:22:11 +01:00
snipe
5e1c736d49 Added created_by for manufacturers
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 18:04:50 +01:00
snipe
6579fa72da Added scoping for categories and companies
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 17:56:05 +01:00
snipe
82d6e1510f Order by created_by for depreciations
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 17:41:05 +01:00
snipe
822ea96dfd Use auth()->id() instead of Auth::id()
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 17:31:46 +01:00
snipe
b247fc33b9 Added legacy comment
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 17:28:01 +01:00
snipe
2dcae780c0 Reapply deleted code
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 17:26:21 +01:00
snipe
5c3180ffa0 Removed duplicate code
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 17:25:09 +01:00
snipe
65eba30038 Fixed markdown in acceptance reminder
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 17:23:34 +01:00
snipe
bbce7b40ca Additional consistencies
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 17:20:56 +01:00
snipe
02a29c71ef Added created_by
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 17:01:48 +01:00
snipe
6699995972 Added created_by to components
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 17:01:36 +01:00
snipe
951f03094a Added created_by to kits
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 17:01:17 +01:00
snipe
354b00ef15 Made method name consistent
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 16:45:51 +01:00
snipe
c93229179b Added order by created_by to accessories
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 16:45:39 +01:00
snipe
a77a7065d7 Added order by admin to assets
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 16:34:10 +01:00
snipe
4363e8b34c Updated importer
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 16:20:42 +01:00
snipe
9adb2c24f3 Squashed commit of the following:
commit dddbf27d78
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 18 14:18:52 2024 +0100

    Updated language strings

    Signed-off-by: snipe <snipe@snipe.net>

commit fcefcc8184
Merge: 04bb3eec8 3519a82dd
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 18 13:44:44 2024 +0100

    Merge pull request #15512 from marcusmoore/testing/fmcs

    Added tests for delete methods in api

commit 04bb3eec83
Merge: 154d5d8d9 f963b9a19
Author: snipe <snipe@snipe.net>
Date:   Wed Sep 18 13:41:37 2024 +0100

    Merge pull request #15521 from uberbrady/improve_country_selector

    Fix selected-index of Countries drop-down [fd-44144]

commit f963b9a19f
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Sep 18 13:24:26 2024 +0100

    Fix selected-index of Countries drop-down

commit 154d5d8d91
Merge: 6c996b775 9e5f6d656
Author: snipe <snipe@snipe.net>
Date:   Tue Sep 17 23:40:25 2024 +0100

    Merge pull request #15491 from uberbrady/numeric_prefixes_add_multiple_assets

    [Fixes fd-43940] Improve multi-asset create when using numeric prefixes to asset_tags

commit 3519a82ddd
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 16:55:20 2024 -0700

    Fix name: TestsFullMultipleCompaniesSupport

commit a629df07bf
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 14:49:08 2024 -0700

    Implement interfaces on existing test classes

commit 9a13fcab23
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 14:38:38 2024 -0700

    Pluralize

commit f5705a1dde
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 14:34:55 2024 -0700

    More unification

commit f325c4afdb
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 14:32:38 2024 -0700

    Unify assertion method

commit 1fddacd7d0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 14:25:11 2024 -0700

    Re-order test methods

commit 4af893df61
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 14:20:24 2024 -0700

    Improve assertions

commit b8b3f91ce4
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 13:55:18 2024 -0700

    Formatting

commit 7f40f55343
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 13:52:02 2024 -0700

    Add tests for delete supplier endpoint

commit b06e8d442d
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 13:37:08 2024 -0700

    Add tests for delete status label endpoint

commit c269184c60
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 13:29:41 2024 -0700

    Add tests for delete predefined kit endpoint

commit 53c673dee2
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 13:13:12 2024 -0700

    Add tests for delete manufacturer endpoint

commit 50730fc4fb
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 12:37:18 2024 -0700

    Add tests for delete location endpoint

commit 60a54cee79
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 12:33:30 2024 -0700

    Add tests for delete license endpoint

commit 446e962a50
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 10:38:51 2024 -0700

    Add tests for delete group endpoint

commit 79a4bb7316
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 10:35:44 2024 -0700

    Add tests for delete depreciation endpoint

commit 2f76c1bc5b
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 10:33:21 2024 -0700

    Add assertion

commit 38b9f4a438
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Mon Sep 16 10:29:20 2024 -0700

    Add tests for delete departments endpoint

commit 3105f53aff
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 16:54:29 2024 -0700

    Add tests for delete custom fieldsets endpoint

commit 2047cfed09
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 16:20:32 2024 -0700

    Add tests for delete custom fields endpoint

commit e3268d32df
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 16:00:02 2024 -0700

    Add tests for delete consumable endpoint

commit 6df8b0ac0e
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 15:52:07 2024 -0700

    Add tests for delete component endpoint

commit 910f13c1f7
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 15:38:30 2024 -0700

    Add tests for delete companies endpoint

commit 8ce2512f55
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 13:54:44 2024 -0700

    Add tests for delete category endpoint

commit 0ec415d4d0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 13:46:22 2024 -0700

    Clean up

commit 2044570e95
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 13:39:36 2024 -0700

    Add tests for delete asset model endpoint

commit b336c6273d
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 13:32:42 2024 -0700

    Pluralize test classes

commit 5299b3e9f0
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 13:29:44 2024 -0700

    Remove code handled by CompanyableChildTrait

commit 872b76b45f
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 13:29:10 2024 -0700

    Add tests for delete asset maintenance endpoint

commit 275cf4630e
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 13:16:37 2024 -0700

    Add tests for delete asset endpoint

commit 5c2660bd34
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 13:02:32 2024 -0700

    Introduce interface

commit c7ae9d9dfa
Author: Marcus Moore <contact@marcusmoore.io>
Date:   Thu Sep 12 12:58:47 2024 -0700

    Add tests for delete accessory endpoint

commit 9e5f6d656a
Author: Brady Wetherington <bwetherington@grokability.com>
Date:   Wed Sep 11 15:45:01 2024 +0100

    Improve multi-asset create when using numeric prefixes to asset_tags

Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 16:06:36 +01:00
snipe
634a4afa75 Fixed 1001 query on license
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 16:04:54 +01:00
snipe
7650628d30 Removed free seat count from fillable
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 16:00:59 +01:00
snipe
7f690a6238 Fixed variable name
Signed-off-by: snipe <snipe@snipe.net>
2024-09-19 15:58:32 +01:00
Godfrey M
b32ab6a06c import User model 2024-09-18 16:36:24 -07:00
Godfrey M
4ff5fc1ff9 clean up variables 2024-09-18 16:19:35 -07:00
Marcus Moore
86f13a9735 Add index test 2024-09-18 16:13:34 -07:00
Godfrey M
c40209f500 seperates emails and webhook notifications 2024-09-18 15:23:44 -07:00
akemidx
3964296ae6 no payload 2024-09-18 17:06:21 -04:00
akemidx
da9a61c28a no payload 2024-09-18 17:01:37 -04:00
Marcus Moore
a071fff954 Implement tests 2024-09-18 12:32:14 -07:00
Marcus Moore
8b50ef077d Implement test 2024-09-18 11:58:33 -07:00
Marcus Moore
607f29030f Stub out test 2024-09-18 11:53:27 -07:00
Marcus Moore
a6bcd3c0c2 Add validation test 2024-09-18 11:47:59 -07:00
Marcus Moore
9b293afaac Remove more dead code 2024-09-18 11:28:29 -07:00
Marcus Moore
636c776620 Remove dead code 2024-09-18 11:27:37 -07:00
Marcus Moore
d5f659024c Add test for logging 2024-09-18 11:27:09 -07:00
Marcus Moore
832e50a71e Implement test 2024-09-18 11:19:41 -07:00
Marcus Moore
fa19686248 Implement test 2024-09-18 11:18:21 -07:00
Marcus Moore
c021609c13 Merge branch 'develop' into testing/fmcs-accessories 2024-09-18 10:42:58 -07:00
snipe
655abe8be5 Fixed requestable user_id
Signed-off-by: snipe <snipe@snipe.net>
2024-09-18 14:32:59 +01:00
snipe
d96c5e1ba4 Merge remote-tracking branch 'origin/develop' 2024-09-18 14:20:55 +01:00
snipe
dddbf27d78 Updated language strings
Signed-off-by: snipe <snipe@snipe.net>
2024-09-18 14:18:52 +01:00
snipe
bae9982833 Updated request methods
Signed-off-by: snipe <snipe@snipe.net>
2024-09-18 14:18:14 +01:00
snipe
a807646d39 Merge remote-tracking branch 'origin/develop' 2024-09-18 13:48:09 +01:00
snipe
abe79df6dc Added translation
Signed-off-by: snipe <snipe@snipe.net>
2024-09-18 13:47:30 +01:00
snipe
fcefcc8184 Merge pull request #15512 from marcusmoore/testing/fmcs
Added tests for delete methods in api
2024-09-18 13:44:44 +01:00
snipe
04bb3eec83 Merge pull request #15521 from uberbrady/improve_country_selector
Fix selected-index of Countries drop-down [fd-44144]
2024-09-18 13:41:37 +01:00
Brady Wetherington
f963b9a19f Fix selected-index of Countries drop-down 2024-09-18 13:24:26 +01:00
Marcus Moore
6e16f589bd Remove reference to old trait 2024-09-17 17:00:06 -07:00
Marcus Moore
6b70443515 Formatting 2024-09-17 16:58:49 -07:00
Godfrey M
c9854d43a5 fixes selection order 2024-09-17 16:56:02 -07:00
Godfrey M
04708ae2b2 only allows PDF417 for new label engine 2024-09-17 16:54:50 -07:00
Godfrey M
bbb9babf27 one more finger 2024-09-17 16:40:18 -07:00
Godfrey M
e5daf35f65 fat finger fix 2024-09-17 16:39:55 -07:00
Godfrey M
87c72953b2 udpated translation 2024-09-17 16:37:17 -07:00
Marcus Moore
89e2d03a81 Fix the deleted assets radio 2024-09-17 16:24:18 -07:00
Godfrey M
fa5651f335 remove getbarcodes, postbarcodes, barcodes settings blade 2024-09-17 16:21:26 -07:00
akemidx
443447a068 added icon to button 2024-09-17 19:16:44 -04:00
Godfrey M
b33c0fc4dd updates getbarcode method and labels view 2024-09-17 16:15:56 -07:00
Marcus Moore
8e0b718a4a Scope Select All checkbox to fields on left side of page 2024-09-17 16:00:32 -07:00
snipe
154d5d8d91 Merge pull request #15491 from uberbrady/numeric_prefixes_add_multiple_assets
[Fixes fd-43940] Improve multi-asset create when using numeric prefixes to asset_tags
2024-09-17 23:40:25 +01:00
Marcus Moore
b51c505d9e Fix department, manufacturer, and category multi-selects 2024-09-17 15:29:38 -07:00
Marcus Moore
8bba11e1bb Merge branch 'develop' into saving_custom_report_template
# Conflicts:
#	app/Http/Controllers/ReportsController.php
#	resources/views/partials/forms/edit/category-select.blade.php
#	resources/views/partials/forms/edit/company-select.blade.php
#	resources/views/partials/forms/edit/location-select.blade.php
#	resources/views/partials/forms/edit/manufacturer-select.blade.php
#	resources/views/partials/forms/edit/model-select.blade.php
#	resources/views/partials/forms/edit/status-select.blade.php
#	resources/views/reports/custom.blade.php
2024-09-17 15:26:35 -07:00
akemidx
4b54e980e2 added button 2024-09-17 17:56:22 -04:00
snipe
1582d81e5b Change user_id to created_by
Signed-off-by: snipe <snipe@snipe.net>
2024-09-17 22:16:41 +01:00
Godfrey M
033a56fe6d change variables in hardware labels edit post methods 2024-09-17 12:22:05 -07:00
snipe
7c85ad54eb Sort by numeric columns for numeric custom fields
Signed-off-by: snipe <snipe@snipe.net>
2024-09-17 19:44:03 +01:00
Godfrey M
3682d9fa6c removed duplicate line from post labels 2024-09-17 11:23:59 -07:00
Godfrey M
ce987b4f6d added front end barcodes to labels 2024-09-17 11:23:38 -07:00
Marcus Moore
7b31df7c14 Begin additional test case 2024-09-17 09:11:58 -07:00
snipe
83b4bf9cf8 Merge remote-tracking branch 'origin/develop' 2024-09-17 15:54:53 +01:00
snipe
6c996b7759 Merge pull request #15516 from snipe/fixes/fmcs_edit_user
Fixed check for outside assets on user update validation
2024-09-17 15:54:11 +01:00
snipe
9e957baeb5 Fixed check for outside assets on user update validation
Signed-off-by: snipe <snipe@snipe.net>
2024-09-17 15:46:45 +01:00
Marcus Moore
12fd9cd97a Update interface name 2024-09-16 17:00:08 -07:00
Marcus Moore
9e03c4ba6f Merge branch 'testing/fmcs' into testing/fmcs-accessories 2024-09-16 16:58:46 -07:00
Marcus Moore
3519a82ddd Fix name: TestsFullMultipleCompaniesSupport 2024-09-16 16:55:20 -07:00
Marcus Moore
8eb1c487bc implement FMCS test for accessory index 2024-09-16 16:52:10 -07:00
Marcus Moore
e835637ef0 Add accessory checkin test 2024-09-16 16:40:10 -07:00
Marcus Moore
eb35608bb5 Remove call handled by form request 2024-09-16 16:35:33 -07:00
Marcus Moore
3f07f682de Migrate existing tests to TestsPermissionsRequirement 2024-09-16 16:35:21 -07:00
akemidx
74efd850af redoing branch. old branch merge onflicts were waaay too gnarly 2024-09-16 19:30:26 -04:00
Marcus Moore
a629df07bf Implement interfaces on existing test classes 2024-09-16 14:49:08 -07:00
Marcus Moore
9a13fcab23 Pluralize 2024-09-16 14:38:38 -07:00
Marcus Moore
f5705a1dde More unification 2024-09-16 14:34:55 -07:00
Marcus Moore
f325c4afdb Unify assertion method 2024-09-16 14:32:38 -07:00
Marcus Moore
1fddacd7d0 Re-order test methods 2024-09-16 14:25:11 -07:00
Marcus Moore
4af893df61 Improve assertions 2024-09-16 14:20:24 -07:00
Marcus Moore
b8b3f91ce4 Formatting 2024-09-16 13:55:18 -07:00
Marcus Moore
7f40f55343 Add tests for delete supplier endpoint 2024-09-16 13:52:02 -07:00
Marcus Moore
b06e8d442d Add tests for delete status label endpoint 2024-09-16 13:37:08 -07:00
Marcus Moore
c269184c60 Add tests for delete predefined kit endpoint 2024-09-16 13:29:41 -07:00
Marcus Moore
53c673dee2 Add tests for delete manufacturer endpoint 2024-09-16 13:13:12 -07:00
Marcus Moore
50730fc4fb Add tests for delete location endpoint 2024-09-16 12:37:18 -07:00
Marcus Moore
60a54cee79 Add tests for delete license endpoint 2024-09-16 12:33:30 -07:00
Marcus Moore
446e962a50 Add tests for delete group endpoint 2024-09-16 10:38:51 -07:00
Marcus Moore
79a4bb7316 Add tests for delete depreciation endpoint 2024-09-16 10:35:44 -07:00
Marcus Moore
2f76c1bc5b Add assertion 2024-09-16 10:33:21 -07:00
Marcus Moore
38b9f4a438 Add tests for delete departments endpoint 2024-09-16 10:29:20 -07:00
snipe
fe5fc6e0ce Merge pull request #15471 from Godmartinz/Edit_side-panel
Fixes margin for the sidebar menus while using rtl languages
2024-09-16 15:56:31 +01:00
snipe
62747a0090 Merge pull request #15493 from Godmartinz/fix_consumables_media_sizing
Fixed misalignment of consumables with smaller media
2024-09-16 15:02:55 +01:00
snipe
9ff2111055 Merge remote-tracking branch 'origin/develop' 2024-09-16 14:52:48 +01:00
snipe
b465cc98d8 Merge pull request #15510 from snipe/bulk_users_locale_fix
Fixed #15504 - allow nulling/not changing locale in user bulk edit
2024-09-16 14:45:06 +01:00
snipe
4debaaea39 Fixed #15504 - allow nulling/not changing locale in user bulk edit
Signed-off-by: snipe <snipe@snipe.net>
2024-09-16 14:31:10 +01:00
snipe
1328366a48 Merge remote-tracking branch 'origin/develop' 2024-09-16 12:38:56 +01:00
setpill
4facc4007e feat: Explicitly request LDAP attributes during sync 2024-09-13 17:05:48 +02:00
setpill
31da47e046 refactor: Put LDAP attribute mapping in array 2024-09-13 17:05:28 +02:00
Marcus Moore
3105f53aff Add tests for delete custom fieldsets endpoint 2024-09-12 16:54:29 -07:00
Marcus Moore
2047cfed09 Add tests for delete custom fields endpoint 2024-09-12 16:20:32 -07:00
Marcus Moore
e3268d32df Add tests for delete consumable endpoint 2024-09-12 16:00:02 -07:00
Marcus Moore
6df8b0ac0e Add tests for delete component endpoint 2024-09-12 15:52:07 -07:00
Marcus Moore
910f13c1f7 Add tests for delete companies endpoint 2024-09-12 15:38:30 -07:00
Marcus Moore
8ce2512f55 Add tests for delete category endpoint 2024-09-12 13:54:44 -07:00
Marcus Moore
0ec415d4d0 Clean up 2024-09-12 13:46:22 -07:00
Marcus Moore
2044570e95 Add tests for delete asset model endpoint 2024-09-12 13:39:36 -07:00
Marcus Moore
b336c6273d Pluralize test classes 2024-09-12 13:32:42 -07:00
Marcus Moore
5299b3e9f0 Remove code handled by CompanyableChildTrait 2024-09-12 13:29:44 -07:00
Marcus Moore
872b76b45f Add tests for delete asset maintenance endpoint 2024-09-12 13:29:10 -07:00
Marcus Moore
275cf4630e Add tests for delete asset endpoint 2024-09-12 13:16:37 -07:00
Marcus Moore
5c2660bd34 Introduce interface 2024-09-12 13:02:32 -07:00
Marcus Moore
c7ae9d9dfa Add tests for delete accessory endpoint 2024-09-12 12:58:47 -07:00
Godfrey M
0bc98e971f refactoring modals with partials and fixing misalignments 2024-09-12 12:26:19 -07:00
snipe
8774da3921 Merge pull request #15492 from snipe/fixes/edit_to_archived_warning
Fix - warn user on changing status to undeployable when editing
2024-09-12 16:08:44 +01:00
Godfrey M
c6c5cb73cf fixes consumables positioning with smaller media 2024-09-11 10:49:27 -07:00
snipe
a97530367d Fixed tests again
Signed-off-by: snipe <snipe@snipe.net>
2024-09-11 17:29:22 +01:00
snipe
43250ae881 Updated tests
Signed-off-by: snipe <snipe@snipe.net>
2024-09-11 17:04:09 +01:00
snipe
04e96b8f20 Added tests
Signed-off-by: snipe <snipe@snipe.net>
2024-09-11 16:43:41 +01:00
snipe
98323185de Null and warn if editing asset to a non-deployabe state
Signed-off-by: snipe <snipe@snipe.net>
2024-09-11 16:43:33 +01:00
Brady Wetherington
9e5f6d656a Improve multi-asset create when using numeric prefixes to asset_tags 2024-09-11 15:45:01 +01:00
snipe
7e14f8c6d6 Merge remote-tracking branch 'origin/develop' 2024-09-11 12:25:28 +01:00
snipe
ab3b655312 Fixed #15483 - show EOL by default
Signed-off-by: snipe <snipe@snipe.net>
2024-09-11 12:25:09 +01:00
snipe
601d8d7e5f Merge pull request #15486 from marcusmoore/fixes/custom-field-values
Fixed a couple bugs in CustomFieldSetDefaultValuesForModel component
2024-09-11 09:46:58 +01:00
Marcus Moore
ca01261c1f Merge branch 'develop' into fixes/custom-field-values 2024-09-10 16:05:39 -07:00
Godfrey M
15183c4822 rephrased the ternary <-correctly spelled 2024-09-10 11:05:03 -07:00
snipe
fddbdafb99 Fixed conflict
Signed-off-by: snipe <snipe@snipe.net>
2024-09-10 19:03:56 +01:00
snipe
a5dbece1a9 Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	config/version.php
#	public/css/build/app.css
#	public/css/build/overrides.css
#	public/css/dist/all.css
#	public/mix-manifest.json
2024-09-10 19:00:05 +01:00
snipe
4f0f72b29e Fixed version
Signed-off-by: snipe <snipe@snipe.net>
2024-09-10 18:15:12 +01:00
snipe
4183d1834f Pre-release assets
Signed-off-by: snipe <snipe@snipe.net>
2024-09-10 18:14:03 +01:00
snipe
713bb104ec Merge remote-tracking branch 'origin/develop' 2024-09-10 14:46:15 +01:00
snipe
4998d60f39 Merge pull request #15481 from snipe/localizations/2024-09-10
Updated translations
2024-09-10 14:43:27 +01:00
snipe
7cf30003b6 Updated strings
Signed-off-by: snipe <snipe@snipe.net>
2024-09-10 14:41:08 +01:00
snipe
f6bf2d03c4 Merge pull request #15445 from Godmartinz/eula_confusion
Fixed priority for category eula vs default eula
2024-09-10 11:04:58 +01:00
snipe
6f44441a8b Merge pull request #15469 from marcusmoore/accessory_tests
Added UI tests for creating accessories
2024-09-10 11:04:23 +01:00
snipe
e7e5dfbdfa Merge pull request #15470 from marcusmoore/company_tests
Added UI tests for creating companies
2024-09-10 11:04:08 +01:00
snipe
d62315fbe4 Merge pull request #15472 from marcusmoore/testing/dashboard_counts
Added test for dashboard counts
2024-09-10 11:03:55 +01:00
snipe
7f3f77dec8 Merge pull request #15473 from marcusmoore/testing/accessory_api_tests
Added some permission tests for accessory api endpoints
2024-09-10 11:03:46 +01:00
snipe
82e56c6832 Merge pull request #15474 from marcusmoore/bug/sc-26730
Fixed login success message not being displayed
2024-09-10 09:37:02 +01:00
Marcus Moore
76c9015aa9 Add test case 2024-09-09 16:51:40 -07:00
Marcus Moore
5d5f421294 Add test case 2024-09-09 16:49:43 -07:00
Godfrey M
367f02af86 more partials and includes 2024-09-09 16:34:04 -07:00
Godfrey M
7a1c721eca making modal partials for reuse 2024-09-09 16:22:56 -07:00
Marcus Moore
6423df2133 Merge branch 'develop' into fixes/custom-field-values
# Conflicts:
#	resources/views/livewire/custom-field-set-default-values-for-model.blade.php
2024-09-09 16:07:37 -07:00
Marcus Moore
dc6a5bf998 Reflash session so login message is displayed 2024-09-09 14:54:19 -07:00
Marcus Moore
0820dd9da4 Update test names 2024-09-09 14:36:32 -07:00
Marcus Moore
aa6ab2df60 Add permission tests for some accessory api endpoints 2024-09-09 14:35:38 -07:00
Marcus Moore
22a2cc0256 Add test for dashboard counts 2024-09-09 13:21:10 -07:00
Godfrey M
57fab0268b made it a terenary 2024-09-09 13:02:25 -07:00
Godfrey M
ad5768d8b2 fixes margin for the sidebar using rtl languages 2024-09-09 12:45:11 -07:00
Marcus Moore
35533c39d5 Merge branch 'develop' into company_tests 2024-09-09 12:18:02 -07:00
Marcus Moore
de403f6e07 Merge branch 'develop' into accessory_tests 2024-09-09 12:17:53 -07:00
snipe
549dec9f9e Merge pull request #15468 from marcusmoore/coverage
Added coverage commands for Herd users
2024-09-09 20:13:01 +01:00
Marcus Moore
d4426e4686 Add simple tests for company creation via UI 2024-09-09 11:03:00 -07:00
snipe
b2a6349243 Merge pull request #15465 from snipe/update_city_on_bulk_user_edit
Correctly save user’s city on bulk edit
2024-09-09 10:06:42 +01:00
snipe
c5dbc5f6b8 Correctly save user’s city on bulk edit
Signed-off-by: snipe <snipe@snipe.net>
2024-09-09 10:01:07 +01:00
snipe
7f2cae4f26 Merge remote-tracking branch 'origin/develop' 2024-09-09 03:56:05 +01:00
snipe
ce97e2a30f Merge pull request #15463 from snipe/consumables_order_by_remaining
Added ability to sort on qty and remaining for consumables
2024-09-09 03:54:28 +01:00
snipe
7d9a0eba04 Added ability to sort on qty and remaining for consumables
Signed-off-by: snipe <snipe@snipe.net>
2024-09-09 03:49:58 +01:00
Marcus Moore
010f66f4c9 Add validation test 2024-09-04 15:48:11 -07:00
Marcus Moore
9c6718b459 Organize 2024-09-04 15:46:35 -07:00
Marcus Moore
9f832a93c9 Ensure user is stored 2024-09-04 15:44:52 -07:00
Marcus Moore
487d88c012 Add some ui tests for accessories 2024-09-04 15:43:01 -07:00
akemidx
d262638a63 backend form validation. +cleanup 2024-09-04 18:23:36 -04:00
Marcus Moore
0e9f7153c0 Add composer commands for generating coverage reports via Herd 2024-09-04 15:13:45 -07:00
akemidx
bebb72a04f back to having tests pass. needed to comment out the notes rules() i added 2024-09-04 17:53:19 -04:00
akemidx
77c5035cac fixing some formatting 2024-09-04 17:50:52 -04:00
Godfrey M
7c8955b126 revert changes to label view 2024-09-04 12:38:35 -07:00
Godfrey M
20fa4c39f9 adds setEula to support\settings 2024-09-04 12:26:44 -07:00
Godfrey M
f04a4a3cf5 adds test 2024-09-04 12:21:49 -07:00
Godfrey M
df8b1c0240 hides barcode settings if new label engine enabled 2024-09-03 12:29:52 -07:00
Godfrey M
cf07186ae8 gives priority to default eula being checked vs catregory eula 2024-09-03 12:23:23 -07:00
Marcus Moore
51d63d57c6 Hide the "Add default values" checkbox if no fieldset selected 2024-09-03 12:22:43 -07:00
akemidx
2901ecbf43 more test work 2024-09-03 15:02:27 -04:00
snipe
e34f549e4c Merge remote-tracking branch 'origin/develop' 2024-09-02 19:16:23 +01:00
snipe
e1fcfc8dc1 Merge pull request #15440 from snipe/fixes/user_api_put_patch
Fixes  #15435 - user api put patch API route regression
2024-09-02 19:14:49 +01:00
snipe
9fe8a866e0 Updated test
Signed-off-by: snipe <snipe@snipe.net>
2024-09-02 19:07:21 +01:00
snipe
e8e3060a75 Added tests
Signed-off-by: snipe <snipe@snipe.net>
2024-09-02 18:51:22 +01:00
snipe
6aaf2f623f Removed extra route
Signed-off-by: snipe <snipe@snipe.net>
2024-09-02 18:49:55 +01:00
snipe
dfbccf50e8 Added patch/put back into resource routes
Signed-off-by: snipe <snipe@snipe.net>
2024-09-02 18:48:09 +01:00
snipe
a8813cca94 Merge remote-tracking branch 'origin/develop' 2024-08-31 13:48:59 +01:00
snipe
13dbf9ee74 Added icon for dept
Signed-off-by: snipe <snipe@snipe.net>
2024-08-31 13:48:42 +01:00
snipe
f8bbb7ad9b Merge pull request #15431 from snipe/add_employee_num_to_asset_overview
Added employee number to asset view
2024-08-31 13:47:25 +01:00
snipe
3c7d455ee3 Added employee number to asset view
Signed-off-by: snipe <snipe@snipe.net>
2024-08-31 13:38:38 +01:00
snipe
9fef27a448 Merge remote-tracking branch 'origin/develop' 2024-08-29 21:07:56 +01:00
snipe
12fa505972 Disabmiguate licenses company_id
Signed-off-by: snipe <snipe@snipe.net>
2024-08-29 21:07:30 +01:00
snipe
d2b88a5107 Merge remote-tracking branch 'origin/develop' 2024-08-29 21:02:21 +01:00
snipe
4e4930ba62 Check for array
Signed-off-by: snipe <snipe@snipe.net>
2024-08-29 21:01:48 +01:00
snipe
4e35f389df Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	public/css/build/app.css
#	public/css/build/overrides.css
#	public/css/dist/all.css
#	public/mix-manifest.json
2024-08-29 20:07:03 +01:00
snipe
76301bc30d Fixed typo
Signed-off-by: snipe <snipe@snipe.net>
2024-08-29 20:05:03 +01:00
snipe
964e105cf9 Merge pull request #15415 from snipe/rules/prevent_company_switch
Validation rules to prevent switching user companies if items are assigned to them
2024-08-29 19:20:03 +01:00
snipe
6fd24c7e14 Merge pull request #15418 from snipe/added_multiple_for_custom_report
Fixed #15416 - Added multiple selects for custom report
2024-08-29 18:55:11 +01:00
snipe
231bc1e2de Updated blade selectors
Signed-off-by: snipe <snipe@snipe.net>
2024-08-29 18:31:34 +01:00
snipe
37d04b7176 Some CSS tweaks for select2
Signed-off-by: snipe <snipe@snipe.net>
2024-08-29 17:52:01 +01:00
snipe
e62a802926 Use whereIn instead of where =
Signed-off-by: snipe <snipe@snipe.net>
2024-08-29 17:51:44 +01:00
snipe
69e981364a Made multiple select
Signed-off-by: snipe <snipe@snipe.net>
2024-08-29 17:51:20 +01:00
snipe
e5b9d9a28b Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	public/js/build/app.js
#	public/js/build/vendor.js
#	public/js/dist/all.js
#	public/mix-manifest.json
2024-08-29 15:04:32 +01:00
snipe
abb4221539 Validation rules to prevent switchng user companies if assets are assigned
Signed-off-by: snipe <snipe@snipe.net>
2024-08-29 14:55:18 +01:00
snipe
e4ebabdaba Merge pull request #15414 from uberbrady/fix_create_user
Use the null-safe property accessor for new-user creation
2024-08-29 14:19:51 +01:00
Brady Wetherington
da1e383295 Use the null-safe property accessor for new-user creation 2024-08-29 14:09:23 +01:00
snipe
b64ed254e0 Fixed tests
Signed-off-by: snipe <snipe@snipe.net>
2024-08-29 13:49:09 +01:00
snipe
ba291edc42 Merge pull request #15412 from uberbrady/ImprovePatchPurchasePrice
Fix [FD-43836] PATCH of purchase_cost for assets for comma as decimal separator
2024-08-29 13:18:52 +01:00
Brady Wetherington
ec2ea955d8 Fix PATCH of purchase_cost for assets for comma as decimal separator 2024-08-29 12:35:14 +01:00
snipe
c197644ba7 Merge pull request #15284 from spencerrlongg/bug/sc-26584
[Multi-Company] Fixes Users Being Moved With Items Still Assigned
2024-08-29 11:38:15 +01:00
snipe
29b30cc5d3 Merge pull request #15411 from snipe/snyk/upgrade-webpack
Upgraded webpack
2024-08-29 11:29:44 +01:00
snipe
6af27516dc Upgraded webpack
Signed-off-by: snipe <snipe@snipe.net>
2024-08-29 11:29:00 +01:00
snipe
a89f17a145 Merge pull request #15410 from snipe/snyk/upgrade-jquery-ui
Updated jquery UI
2024-08-29 11:25:56 +01:00
snipe
de0565f5b3 Updated jquery UI
Signed-off-by: snipe <snipe@snipe.net>
2024-08-29 11:24:06 +01:00
snipe
4111ef0d78 Merge remote-tracking branch 'origin/develop' 2024-08-29 11:20:21 +01:00
snipe
68c708bdef Merge pull request #15409 from snipe/fixes-string
Corrected language string
2024-08-29 11:18:34 +01:00
snipe
5581950fee Corrected language string
Signed-off-by: snipe <snipe@snipe.net>
2024-08-29 11:17:17 +01:00
snipe
cfa56e2219 Merge remote-tracking branch 'origin/develop' 2024-08-29 11:08:53 +01:00
snipe
58e366a063 Merge pull request #15408 from snipe/redirect-on-print-if-user-invalid
Check that the user exists before trying to print
2024-08-29 11:08:02 +01:00
snipe
b06c527767 Check that the user exists before trying to print
Signed-off-by: snipe <snipe@snipe.net>
2024-08-29 11:06:30 +01:00
snipe
7f1dfcc935 Merge remote-tracking branch 'origin/develop' 2024-08-28 14:29:06 +01:00
snipe
26f28a862a Merge pull request #15404 from snipe/bug/sc-26717-model-delete
Set image to null if model is deleted
2024-08-28 14:26:03 +01:00
snipe
94c981e22c Set image to null if model is deleted
Signed-off-by: snipe <snipe@snipe.net>
2024-08-28 14:23:49 +01:00
snipe
6f3fb21fef Merge remote-tracking branch 'origin/develop' 2024-08-28 12:50:19 +01:00
snipe
e8da7e2df2 Merge pull request #15403 from snipe/clean_up_depreciations
Fixed #15392 - filter by depreciation when showing models
2024-08-28 12:46:48 +01:00
snipe
d635c86e00 Added tests
Signed-off-by: snipe <snipe@snipe.net>
2024-08-28 12:46:30 +01:00
snipe
406ff6984b Added click to select on models table
Signed-off-by: snipe <snipe@snipe.net>
2024-08-28 12:42:23 +01:00
snipe
c6ddc501c5 Filter by depreciation_id
Signed-off-by: snipe <snipe@snipe.net>
2024-08-28 12:40:12 +01:00
snipe
4839181beb Added counts to API
Signed-off-by: snipe <snipe@snipe.net>
2024-08-28 12:40:01 +01:00
snipe
63a05c89a7 Added counts to show method
Signed-off-by: snipe <snipe@snipe.net>
2024-08-28 12:39:52 +01:00
snipe
385c4f69f7 Added counts to depreciation transformer
Signed-off-by: snipe <snipe@snipe.net>
2024-08-28 12:39:43 +01:00
snipe
486cd8c8c9 Nicer formatting for searchableAttributes
Signed-off-by: snipe <snipe@snipe.net>
2024-08-28 12:39:09 +01:00
snipe
eb5d93b3c2 Added assets relationship
Signed-off-by: snipe <snipe@snipe.net>
2024-08-28 12:38:55 +01:00
snipe
a5ff623484 Added asset, license, model count to API
Signed-off-by: snipe <snipe@snipe.net>
2024-08-28 12:38:43 +01:00
snipe
b5a4389815 Added badge count, fixed model bulk edit menu
Signed-off-by: snipe <snipe@snipe.net>
2024-08-28 12:38:31 +01:00
snipe
7b5b559baa Merge pull request #15401 from snipe/fixes-15397-new-window-for-label
Opens label new window
2024-08-28 11:57:29 +01:00
snipe
67a9929745 Opens label new window
Signed-off-by: snipe <snipe@snipe.net>
2024-08-28 11:56:54 +01:00
snipe
a48e79a1fc Merge remote-tracking branch 'origin/develop' 2024-08-27 07:37:53 +01:00
snipe
64c4433b98 Merge pull request #15396 from snipe/add_start_end_date_to_users_edit
Added `start_date` and `end_date` to user bulk edit
2024-08-27 07:36:37 +01:00
snipe
22bc088f6f Added start_date and end_date to user bulk edit
Signed-off-by: snipe <snipe@snipe.net>
2024-08-27 07:21:19 +01:00
snipe
d3e8e06638 Add @swift2512 as a contributor 2024-08-26 14:07:06 +01:00
snipe
c207d48430 Merge remote-tracking branch 'origin/develop' 2024-08-26 14:01:38 +01:00
snipe
1b933f7add Added s to fa icons
Signed-off-by: snipe <snipe@snipe.net>
2024-08-26 13:47:17 +01:00
snipe
991e48696a Merge remote-tracking branch 'origin/develop' 2024-08-26 10:26:06 +01:00
snipe
3fe891a05b Removed a few more commas
Signed-off-by: snipe <snipe@snipe.net>
2024-08-26 10:25:27 +01:00
snipe
7974885041 Merge remote-tracking branch 'origin/develop' 2024-08-26 10:24:19 +01:00
snipe
f4c5b712f4 Removed colons
Signed-off-by: snipe <snipe@snipe.net>
2024-08-26 10:24:07 +01:00
snipe
4ef85bd529 Merge remote-tracking branch 'origin/develop' 2024-08-23 17:58:08 +01:00
snipe
4c8dc7818d Merge pull request #15389 from snipe/added_generate_label_to_button_stack
Fixed #15388 - Moved generate label  button
2024-08-23 17:57:00 +01:00
snipe
5c43a1f87c Use proper style for buttons
Signed-off-by: snipe <snipe@snipe.net>
2024-08-23 17:54:49 +01:00
snipe
d3b265de8e Moved button on hardware
Signed-off-by: snipe <snipe@snipe.net>
2024-08-23 17:48:36 +01:00
snipe
263151658f Moved general label button
Signed-off-by: snipe <snipe@snipe.net>
2024-08-23 17:44:09 +01:00
snipe
6eab83a85a Merge remote-tracking branch 'origin/develop' 2024-08-23 15:22:53 +01:00
snipe
aa86e07cd2 Fixed #15385 - small icon tweaks
Signed-off-by: snipe <snipe@snipe.net>
2024-08-23 15:22:39 +01:00
snipe
cce1f87da6 Merge remote-tracking branch 'origin/develop' 2024-08-23 15:18:30 +01:00
snipe
d92fa5de65 fa-fw on settings icon
Signed-off-by: snipe <snipe@snipe.net>
2024-08-23 15:17:25 +01:00
snipe
b460e8dc83 Merge remote-tracking branch 'origin/develop' 2024-08-23 08:42:32 +01:00
snipe
c589140ea0 Merge pull request #15383 from snipe/re-adds-checkout-button
Fixed #15378 - Corrected gate on checkin button on asset view
2024-08-23 08:42:04 +01:00
snipe
52894615ce More specific gate for checkin
Signed-off-by: snipe <snipe@snipe.net>
2024-08-23 08:40:41 +01:00
snipe
8546bbdd65 Fixed gate for checkout button
Signed-off-by: snipe <snipe@snipe.net>
2024-08-23 08:38:47 +01:00
snipe
50cb7e65c9 Merge remote-tracking branch 'origin/develop' 2024-08-23 07:32:39 +01:00
snipe
cc2c8f76d0 Merge pull request #15375 from Godmartinz/fix-acceptance-reminder-command
Fixes the `acceptance-reminder` command
2024-08-23 07:31:29 +01:00
snipe
1ffa69c43c Merge pull request #15380 from snipe/fixed/fixed_nav_bracket
Added pull-right to angle bracket
2024-08-23 07:28:20 +01:00
snipe
f85ebd7ffd Added pull-right to angle bracket
Signed-off-by: snipe <snipe@snipe.net>
2024-08-23 07:27:39 +01:00
snipe
78d355f136 Merge pull request #15377 from marcusmoore/fixes/custom-field-values-on-validation-error
Fixed custom field defaults being prematurely updated
2024-08-23 07:20:23 +01:00
snipe
ec0346e4a8 Add @setpill as a contributor 2024-08-23 07:19:08 +01:00
snipe
fc5eb37776 Merge pull request #15379 from setpill/fix/load-trustproxies-middleware
fixed #15374: load TrustProxies middleware in Kernel.php
2024-08-23 07:18:41 +01:00
Marcus Moore
9a73311a99 Fix nested checkboxes being updated as a group 2024-08-22 17:04:04 -07:00
Marcus Moore
aec781e7df Be a little more explicit 2024-08-22 16:03:30 -07:00
setpill
1d7853cbfe fixed #15374: load TrustProxies middleware in Kernel.php 2024-08-22 23:41:27 +02:00
Marcus Moore
7f3c86165b Conditionally disable Add default values checkbox 2024-08-22 13:58:31 -07:00
Marcus Moore
10b45812c4 Improve id for checkboxes and radio buttons 2024-08-22 13:38:01 -07:00
Marcus Moore
c3165717ed Handle old input 2024-08-22 13:20:04 -07:00
Marcus Moore
d0a351a132 Add comment 2024-08-22 12:59:03 -07:00
Marcus Moore
68749e7e87 Simplify logic 2024-08-22 12:58:35 -07:00
Marcus Moore
0abb5637e0 WIP: handle old input 2024-08-22 12:54:54 -07:00
Marcus Moore
af0a95be12 Simplify assertions 2024-08-22 10:18:23 -07:00
Marcus Moore
d67975cb62 Implement fix 2024-08-22 10:18:23 -07:00
Marcus Moore
663b2fd844 Add test case 2024-08-22 10:18:23 -07:00
Marcus Moore
bcace9d019 Point test to correct endpoint 2024-08-22 10:18:23 -07:00
Marcus Moore
b59bf3e7dc Add failing test 2024-08-22 10:18:23 -07:00
Godfrey M
3957d670d0 fixes send acceptance reminder query 2024-08-22 10:04:46 -07:00
snipe
821dd158d1 Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	public/css/build/app.css
#	public/css/build/overrides.css
#	public/css/dist/all.css
#	public/js/build/app.js
#	public/js/dist/all.js
#	public/mix-manifest.json
2024-08-22 15:50:20 +01:00
snipe
833dace2b4 Merge pull request #15373 from snipe/fixes/#15366_custom_fields
Fixed #15366 use the non-admin edit encrypted custom fields permissions
2024-08-22 15:00:16 +01:00
snipe
56e31d2303 Fixed #15366 - use permission for encrypted custom fields
Signed-off-by: snipe <snipe@snipe.net>
2024-08-22 14:58:09 +01:00
snipe
ec365b0804 Merge pull request #15372 from StarlessNights/update-docker-compose-files
Fixed #15371: docker-compose files updated.
2024-08-22 14:49:13 +01:00
Iisakki Jaakkola
aef0ac68c3 Need to use the long format for redis too in docker-compose file. 2024-08-22 16:10:00 +03:00
Iisakki Jaakkola
f12f9a816f Update the official docker-compose file too while at it. 2024-08-22 15:47:12 +03:00
Iisakki Jaakkola
a000d6454f Fix non-functional development docker-compose file. 2024-08-22 15:46:40 +03:00
snipe
ca8864c061 Fixed small layout quirks in asset view
Signed-off-by: snipe <snipe@snipe.net>
2024-08-22 13:28:52 +01:00
snipe
423f4f9126 Merge pull request #14667 from Godmartinz/add_location_to_create_user_via_asset
Adds location select to the create new user via asset checkout
2024-08-22 13:25:41 +01:00
snipe
456c7d8d91 Merge pull request #15065 from Godmartinz/explicit_eol_removal_command
Adds `snipeit:remove-explicit-eols` command
2024-08-22 13:20:56 +01:00
snipe
54cfe3f6e6 Merge pull request #15156 from uberbrady/re-add-stalebot
Re-add stalebot-esque github Action
2024-08-22 13:20:10 +01:00
snipe
5e0b18104d Merge pull request #15369 from snipe/fixes/checkbox_on_restore
Fixed checkbox layout on modal from #15296
2024-08-22 12:59:20 +01:00
snipe
8b5d3f7fbd Fixed extra closing p tag
Signed-off-by: snipe <snipe@snipe.net>
2024-08-22 12:56:32 +01:00
snipe
744f43676d Fixed checkbox layout on modal from #15296
Signed-off-by: snipe <snipe@snipe.net>
2024-08-22 12:53:16 +01:00
snipe
ec0b9b198f Merge pull request #15296 from uberbrady/expose_restore_sanitize
Expose the 'sanitize' system for backup restores to the web GUI
2024-08-22 12:43:07 +01:00
snipe
6c9a402685 Updated prod assets
Signed-off-by: snipe <snipe@snipe.net>
2024-08-22 11:20:52 +01:00
snipe
1b310f3a24 Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	public/css/build/app.css
#	public/css/build/overrides.css
#	public/css/dist/all.css
#	public/mix-manifest.json
2024-08-22 11:20:42 +01:00
snipe
94300d81d6 Updated dev assets
Signed-off-by: snipe <snipe@snipe.net>
2024-08-22 11:19:32 +01:00
snipe
bc9ea5a2ec Merge pull request #15352 from Godmartinz/mobile_breakpoint
Fixed Mobile misalignment of info on Assets and Users view pages
2024-08-22 11:18:06 +01:00
snipe
4635a6efc3 Merge pull request #15360 from snipe/more_print_fixes
More print fixes for asset view
2024-08-22 11:17:49 +01:00
snipe
9608414eae Merge pull request #15367 from snipe/fixes/15344_added_freeform_to_country_select2
Fixed #15344 - make select2 for countries freeform-ish
2024-08-22 11:06:13 +01:00
snipe
5efddf6f5b Allow clear on country dropdown
Signed-off-by: snipe <snipe@snipe.net>
2024-08-22 11:01:39 +01:00
snipe
305dc049a4 Added asterisk help text
Signed-off-by: snipe <snipe@snipe.net>
2024-08-22 11:01:28 +01:00
snipe
3ac0702094 Fixed #15344 - make select2 for countries freeform-ish
Signed-off-by: snipe <snipe@snipe.net>
2024-08-22 10:13:22 +01:00
snipe
47d8e2f8b9 Add @Scarzy as a contributor 2024-08-22 09:42:05 +01:00
Marcus Moore
a2246b9645 Simplify assertions 2024-08-21 17:00:32 -07:00
Marcus Moore
1d89759706 Implement fix 2024-08-21 16:59:44 -07:00
Marcus Moore
206f8fe605 Add test case 2024-08-21 16:59:38 -07:00
Marcus Moore
21d2217619 Point test to correct endpoint 2024-08-21 16:54:16 -07:00
Marcus Moore
833bcb282f Add failing test 2024-08-21 16:49:29 -07:00
snipe
83dd9ce20e Merge pull request #15362 from r-xyz/model-files-api
Added #9413: AssetModel files endpoints to API
2024-08-21 23:15:24 +01:00
r-xyz
a8eb76fd8d Fixed model files API routes. 2024-08-21 22:25:41 +02:00
r-xyz
cd7db5c4a8 Fix some typos in models file handler. 2024-08-21 22:24:08 +02:00
r-xyz
da7313bc9d Fix models files API routes. 2024-08-21 20:24:22 +02:00
r-xyz
4ec361c718 Add AssetModel files endpoints to API 2024-08-21 19:49:51 +02:00
Brady Wetherington
738ef442fd Rename .env var to have DB_ prefix for sanitize-by-default setting 2024-08-21 13:16:51 +01:00
snipe
d29b3bfb9a Few more hidden-print classes
Signed-off-by: snipe <snipe@snipe.net>
2024-08-21 13:06:16 +01:00
snipe
6fdce3c536 Merge pull request #15358 from r-xyz/rename-docker-startup
Renamed  docker startup scripts coherently.
2024-08-21 13:02:50 +01:00
snipe
912bbf0e32 More print fixes
Signed-off-by: snipe <snipe@snipe.net>
2024-08-21 13:02:21 +01:00
snipe
c54bff0f83 Merge remote-tracking branch 'origin/develop' 2024-08-21 12:24:13 +01:00
snipe
01c4fe6113 Merge pull request #15359 from uberbrady/improve_windows_upgrade
Fixed #15190 - Improvements to upgrade.php script to improve Windows experience
2024-08-21 12:12:23 +01:00
Brady Wetherington
0fa9f57971 Improvements to upgrade.php script to improve Windows experience 2024-08-21 11:53:38 +01:00
r-xyz
1ab29ec3a4 Rename docker startup scripts coherently. 2024-08-21 11:52:09 +02:00
snipe
7e475a0786 Merge pull request #15357 from snipe/tighten_category_view_translations
Fixed #15330 - Cleaned up category title
2024-08-21 10:41:17 +01:00
snipe
26b3c62ab8 Cleaned up category title
Signed-off-by: snipe <snipe@snipe.net>
2024-08-21 10:29:51 +01:00
snipe
d3f30ced94 Merge remote-tracking branch 'origin/develop' 2024-08-21 10:13:57 +01:00
snipe
d0acf5b8a6 Merge pull request #15356 from snipe/validate_location_parent
Fixed #15341 - validate parent ID
2024-08-21 10:12:58 +01:00
snipe
74fbc23823 Updated tests
Signed-off-by: snipe <snipe@snipe.net>
2024-08-21 10:09:35 +01:00
snipe
a23dee52f2 Added tests
Signed-off-by: snipe <snipe@snipe.net>
2024-08-21 09:58:47 +01:00
snipe
4d03f1e110 Fixed #15341 - validate parent ID
Signed-off-by: snipe <snipe@snipe.net>
2024-08-21 09:46:18 +01:00
Godfrey M
963911f2e1 changed order of info stgack 2024-08-21 00:23:10 -07:00
Marcus Moore
59832126cb Improve comment 2024-08-20 16:52:51 -07:00
Marcus Moore
680cce3ee2 Align indents 2024-08-20 16:42:29 -07:00
Marcus Moore
6c5ec6a16c Get datepicker working 2024-08-20 16:41:24 -07:00
akemidx
27c120a55e front end changes/updates from gh 2024-08-20 19:07:47 -04:00
Marcus Moore
5d1f98bf93 Simplify by directly wire:modeling 2024-08-20 15:38:43 -07:00
Godfrey M
9d484077ae missed a file 2024-08-20 14:24:37 -07:00
Godfrey M
9858b0f37f fixes info tab for users and assets 2024-08-20 14:23:55 -07:00
snipe
973e2e5756 Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	config/version.php
2024-08-20 19:45:53 +01:00
snipe
09033b19a7 Bumped hash
Signed-off-by: snipe <snipe@snipe.net>
2024-08-20 19:44:13 +01:00
snipe
46ed076428 Merge remote-tracking branch 'origin/develop' 2024-08-20 19:42:56 +01:00
snipe
5fdeb9c413 Merge pull request #15351 from snipe/localizations/new_translations_2024-08-20
Updated languages
2024-08-20 19:42:08 +01:00
snipe
22d3734075 Merge pull request #15350 from marcusmoore/icon-component-updates
Fixed icon not rotated and simplified component
2024-08-20 19:34:38 +01:00
Marcus Moore
eca6b03f44 Allow id to be rendered 2024-08-20 11:08:53 -07:00
Marcus Moore
bbdbec7197 Rely on $attributes behavior rendering passed attributes 2024-08-20 11:00:39 -07:00
snipe
6c450d1338 Updated languages
Signed-off-by: snipe <snipe@snipe.net>
2024-08-20 18:18:17 +01:00
spencerrlongg
a8cd1027f3 rm commented code 2024-08-20 11:40:15 -05:00
snipe
d3a555ce91 Updated assets
Signed-off-by: snipe <snipe@snipe.net>
2024-08-20 11:49:39 +01:00
snipe
0f8e041809 Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	public/css/build/app.css
#	public/css/build/overrides.css
#	public/css/dist/all.css
#	public/css/dist/bootstrap-table.css
#	public/js/dist/bootstrap-table.js
#	public/mix-manifest.json
2024-08-20 11:49:32 +01:00
snipe
d99b306ae9 Merge pull request #15345 from snipe/add_trim_strings_middleware
Added TrimStrings middleware
2024-08-20 11:46:55 +01:00
snipe
74136761df Added TrimStrings middleware
Signed-off-by: snipe <snipe@snipe.net>
2024-08-20 11:45:13 +01:00
snipe
f597d64339 Merge pull request #15342 from snipe/snyk/bs-tables
[Snyk] Upgrade bootstrap-table from 1.23.0 to 1.23.2
2024-08-20 10:17:26 +01:00
snipe
0072f1500e [Snyk] Upgrade bootstrap-table from 1.23.0 to 1.23.2
Signed-off-by: snipe <snipe@snipe.net>
2024-08-20 10:16:27 +01:00
snipe
64bed01a91 Merge pull request #15327 from snipe/update_button_style
Update icons to use blade components, standardize button colors and format
2024-08-20 10:13:43 +01:00
snipe
f6319e11e7 Added fa-fw to sidebar elements
Signed-off-by: snipe <snipe@snipe.net>
2024-08-20 10:11:27 +01:00
snipe
5d9f988df3 Added fw class to topnav icons
Signed-off-by: snipe <snipe@snipe.net>
2024-08-20 10:01:49 +01:00
snipe
f8c72fb0ac Merge pull request #15112 from marcusmoore/livewire-importer-improvements
Improved handling attempted access of deleted files in importer
2024-08-20 09:57:03 +01:00
akemidx
4e43fa6b9f Merge remote-tracking branch 'upstream/develop' into feature/sc-26415 2024-08-19 21:06:18 -04:00
akemidx
8e1111c681 Merge remote-tracking branch 'upstream/develop' into eol_date_range_for_reports 2024-08-19 19:33:44 -04:00
snipe
886514a25f Merge pull request #15336 from marcusmoore/fixes/remove-displayed-parentheses
Fixed `)` being added to expected asset checkin report email header
2024-08-19 22:46:08 +01:00
Marcus Moore
fa765667f2 Merge branch 'develop' into livewire-importer-improvements 2024-08-19 14:41:58 -07:00
Marcus Moore
434bdcd6d4 Add missing parentheses to conditional 2024-08-19 14:31:47 -07:00
snipe
be5f3f38f8 Settings pages
Signed-off-by: snipe <snipe@snipe.net>
2024-08-19 14:48:12 +01:00
snipe
08c3a25b39 Little more padding
Signed-off-by: snipe <snipe@snipe.net>
2024-08-19 14:16:57 +01:00
snipe
34cd4b6244 Added links to apple/google maps
Signed-off-by: snipe <snipe@snipe.net>
2024-08-19 14:15:36 +01:00
snipe
d89c8682be Reversed location button ordering
Signed-off-by: snipe <snipe@snipe.net>
2024-08-19 13:46:31 +01:00
snipe
6f024849e9 Few more
Signed-off-by: snipe <snipe@snipe.net>
2024-08-19 13:39:24 +01:00
snipe
e048f0955f More icons
Signed-off-by: snipe <snipe@snipe.net>
2024-08-19 13:27:21 +01:00
snipe
479b2b4fd3 More icons
Signed-off-by: snipe <snipe@snipe.net>
2024-08-19 13:23:08 +01:00
snipe
84f14a05bd Fixed logging for asset model restore
Signed-off-by: snipe <snipe@snipe.net>
2024-08-19 13:20:19 +01:00
snipe
8d52fa51b1 Fixed suppliers buttons
Signed-off-by: snipe <snipe@snipe.net>
2024-08-19 13:20:06 +01:00
snipe
229d8b9bf5 Added location restore
Signed-off-by: snipe <snipe@snipe.net>
2024-08-19 13:19:59 +01:00
snipe
eb8d43a804 Updated buttons on models
Signed-off-by: snipe <snipe@snipe.net>
2024-08-19 12:32:44 +01:00
snipe
f82266fade Cleaned up presenters
Signed-off-by: snipe <snipe@snipe.net>
2024-08-19 11:58:31 +01:00
snipe
b4b6f7a35f Added css-consumable to overrides for table headers
Signed-off-by: snipe <snipe@snipe.net>
2024-08-19 11:58:21 +01:00
snipe
0bc995b87f Updated more icons
Signed-off-by: snipe <snipe@snipe.net>
2024-08-19 11:58:05 +01:00
snipe
59725f2031 Removed extra debugging in test
Signed-off-by: snipe <snipe@snipe.net>
2024-08-19 11:57:40 +01:00
snipe
00bc9ac806 Fixed spacing
Signed-off-by: snipe <snipe@snipe.net>
2024-08-18 22:39:14 +01:00
snipe
f200960a57 Aaaand more
Signed-off-by: snipe <snipe@snipe.net>
2024-08-18 22:26:57 +01:00
snipe
c700127f1a Updated user view
Signed-off-by: snipe <snipe@snipe.net>
2024-08-18 22:09:00 +01:00
snipe
ae2f9571b4 And still more
Signed-off-by: snipe <snipe@snipe.net>
2024-08-18 21:57:37 +01:00
snipe
a77dcad336 More links
Signed-off-by: snipe <snipe@snipe.net>
2024-08-18 20:30:53 +01:00
snipe
7ace9324b4 Added padlock sound
Signed-off-by: snipe <snipe@snipe.net>
2024-08-18 20:30:22 +01:00
snipe
d2e889e927 Still more
Signed-off-by: snipe <snipe@snipe.net>
2024-08-18 19:21:59 +01:00
snipe
803bdb457c Added calendar
Signed-off-by: snipe <snipe@snipe.net>
2024-08-18 18:48:19 +01:00
snipe
7c9b1f6e38 Added the plus icon
Signed-off-by: snipe <snipe@snipe.net>
2024-08-18 18:39:22 +01:00
snipe
d545537a43 More icons
Signed-off-by: snipe <snipe@snipe.net>
2024-08-18 18:34:13 +01:00
snipe
4d8904938d Added calendar icon for datepickers
Signed-off-by: snipe <snipe@snipe.net>
2024-08-18 18:24:26 +01:00
snipe
0c09f2b2c0 Moar icon replacement
Signed-off-by: snipe <snipe@snipe.net>
2024-08-18 18:13:49 +01:00
snipe
bffba02511 Updated icons
Signed-off-by: snipe <snipe@snipe.net>
2024-08-18 17:26:44 +01:00
snipe
901f4df7ee Added more icons
Signed-off-by: snipe <snipe@snipe.net>
2024-08-18 17:03:36 +01:00
snipe
9337cba340 Added download
Signed-off-by: snipe <snipe@snipe.net>
2024-08-18 15:53:58 +01:00
snipe
2b0c67c263 Load the icon helper
Signed-off-by: snipe <snipe@snipe.net>
2024-08-18 15:51:00 +01:00
snipe
da71f031f5 Use icon in hardware view
Signed-off-by: snipe <snipe@snipe.net>
2024-08-18 15:48:24 +01:00
snipe
d2e585baa7 Added icon blade
Signed-off-by: snipe <snipe@snipe.net>
2024-08-18 15:47:45 +01:00
snipe
a102c085df Added icon helper
Signed-off-by: snipe <snipe@snipe.net>
2024-08-18 15:47:37 +01:00
snipe
e8a22f3c5b Merge remote-tracking branch 'origin/develop' 2024-08-18 04:55:04 +01:00
snipe
cb40a82e79 Merge pull request #15324 from snipe/jerk_prevention
Prevent passing an array as login
2024-08-18 04:54:23 +01:00
snipe
4253acad4c Prevent passing an array as login
Signed-off-by: snipe <snipe@snipe.net>
2024-08-18 04:51:36 +01:00
snipe
5066eb58f4 Added asset model import to importer
Signed-off-by: snipe <snipe@snipe.net>
2024-08-17 02:31:03 +01:00
snipe
d843cf8dcc Merge remote-tracking branch 'origin/develop' 2024-08-17 00:52:10 +01:00
snipe
7e6ff3cbe6 Removed trailing rows
Signed-off-by: snipe <snipe@snipe.net>
2024-08-17 00:51:19 +01:00
snipe
1013dcae61 Merge remote-tracking branch 'origin/develop' 2024-08-17 00:38:44 +01:00
snipe
e7ef3bf515 Merge pull request #15322 from snipe/importer_model_fixes
Importer model fixes
2024-08-17 00:37:37 +01:00
snipe
a25efe53aa Removed some debugging
Signed-off-by: snipe <snipe@snipe.net>
2024-08-17 00:35:42 +01:00
snipe
de059a715a Cleaner test CSV
Signed-off-by: snipe <snipe@snipe.net>
2024-08-17 00:30:49 +01:00
snipe
318aff1ef0 Fixed behavior for null model numbers
Signed-off-by: snipe <snipe@snipe.net>
2024-08-17 00:27:44 +01:00
snipe
e96b9b2f4f Added test for models with same name but no model number
Signed-off-by: snipe <snipe@snipe.net>
2024-08-16 23:04:11 +01:00
snipe
3ae4a5caf0 Removed debugging
Signed-off-by: snipe <snipe@snipe.net>
2024-08-16 22:53:27 +01:00
snipe
559f0d2f90 Added string
Signed-off-by: snipe <snipe@snipe.net>
2024-08-16 22:53:21 +01:00
snipe
9b6a36c8aa Removed unusued parameter
Signed-off-by: snipe <snipe@snipe.net>
2024-08-16 22:45:57 +01:00
snipe
1a4aebf805 Added TwoColumnUniqueUndeletedTrait trait
Signed-off-by: snipe <snipe@snipe.net>
2024-08-16 22:45:47 +01:00
snipe
6ad7100aa3 Removed unused use statements
Signed-off-by: snipe <snipe@snipe.net>
2024-08-16 22:45:17 +01:00
snipe
5529669884 Added tests
Signed-off-by: snipe <snipe@snipe.net>
2024-08-16 22:44:03 +01:00
snipe
b57283d8d1 Removed commented code
Signed-off-by: snipe <snipe@snipe.net>
2024-08-16 22:43:56 +01:00
snipe
7658f7c41d First shot
Signed-off-by: snipe <snipe@snipe.net>
2024-08-16 20:29:53 +01:00
spencerrlongg
70e5e0f9df get rid of dd 2024-08-16 12:52:06 -05:00
spencerrlongg
dec4691c73 should be good to go now 2024-08-16 12:50:09 -05:00
snipe
48903b1402 Added Gate Pass Generator link
Signed-off-by: snipe <snipe@snipe.net>
2024-08-16 17:42:42 +01:00
snipe
7376c21f10 Removed dupe link, linked name
Signed-off-by: snipe <snipe@snipe.net>
2024-08-16 17:01:07 +01:00
snipe
f921400579 Added link to UnifiSnipeSync
Signed-off-by: snipe <snipe@snipe.net>
2024-08-16 16:55:16 +01:00
snipe
c30c649aaa Merge remote-tracking branch 'origin/develop' 2024-08-16 16:44:02 +01:00
snipe
ad6d09b6ad Removed default label
Signed-off-by: snipe <snipe@snipe.net>
2024-08-16 16:43:51 +01:00
snipe
bb1385369c Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	public/css/build/app.css
#	public/css/build/overrides.css
#	public/css/dist/all.css
#	public/mix-manifest.json
2024-08-16 16:18:00 +01:00
snipe
43b338d612 Fixed translation
Signed-off-by: snipe <snipe@snipe.net>
2024-08-16 16:15:58 +01:00
snipe
c1caf6088e Prod assets
Signed-off-by: snipe <snipe@snipe.net>
2024-08-16 13:12:13 +01:00
snipe
67655ad84b Dev assets
Signed-off-by: snipe <snipe@snipe.net>
2024-08-16 13:11:33 +01:00
snipe
12dfe71ea8 Merge remote-tracking branch 'origin/develop' 2024-08-16 12:48:42 +01:00
snipe
ea2b1b0748 Merge pull request #15318 from snipe/localization/fixed_strings
Corrected some translations
2024-08-16 12:43:06 +01:00
snipe
856c57cb12 Corrected some translations
Signed-off-by: snipe <snipe@snipe.net>
2024-08-16 12:39:59 +01:00
snipe
90584ab803 Merge branch 'develop' of https://github.com/snipe/snipe-it into develop 2024-08-16 11:11:00 +01:00
snipe
184f54a6cd Removed extra spaces
Signed-off-by: snipe <snipe@snipe.net>
2024-08-16 11:10:57 +01:00
snipe
f24031b974 Merge pull request #15206 from Godmartinz/dashboard_box_alignment
Fixed dashboard box overflow
2024-08-16 11:10:40 +01:00
snipe
0a7aaa54b6 Merge pull request #15282 from r-xyz/alpine-secrets
Added support for Docker secrets in Standard and alpine image.
2024-08-16 11:08:09 +01:00
snipe
ca89268716 Merge remote-tracking branch 'origin/develop' 2024-08-16 11:02:56 +01:00
snipe
3167ee91d1 Added a setting test and validation on settings
Signed-off-by: snipe <snipe@snipe.net>
2024-08-16 10:51:49 +01:00
snipe
e8f1190628 Added missing migration from #15314
Signed-off-by: snipe <snipe@snipe.net>
2024-08-16 10:44:28 +01:00
snipe
44f18d210e Remove MBP constraint
Signed-off-by: snipe <snipe@snipe.net>
2024-08-16 10:36:35 +01:00
snipe
e8deecc9b4 Removed MBP constraint on model
This was creating a validation error since the name already exists

Signed-off-by: snipe <snipe@snipe.net>
2024-08-16 10:35:42 +01:00
snipe
a79fe69bf4 Merge branch 'develop' of https://github.com/snipe/snipe-it into develop 2024-08-16 10:22:16 +01:00
snipe
d49c33fbe3 Add @Glukose1 as a contributor 2024-08-16 10:22:05 +01:00
snipe
de29c1d8a0 Merge pull request #15314 from Glukose1/features/add_setting_due_for_checkin_in_days
Added #15312: Add checkin due in days setting
2024-08-16 10:21:36 +01:00
snipe
f9172594b2 Clearer time example display
Signed-off-by: snipe <snipe@snipe.net>
2024-08-16 10:14:43 +01:00
Marcus Moore
94d8a547b8 Merge branch 'develop' into livewire-importer-improvements 2024-08-15 13:47:49 -07:00
Marcus Moore
43b109fac0 Use cached values for textarea and radio input 2024-08-15 13:20:22 -07:00
Marcus Moore
75c1e7658f Improve method name 2024-08-15 10:43:41 -07:00
Marcus Moore
e7c9c799bb Add wire:keys 2024-08-15 10:40:23 -07:00
Marcus Moore
6ab976f353 Use cached values for text input 2024-08-15 10:32:33 -07:00
snipe
ec5731353a Merge remote-tracking branch 'origin/develop' 2024-08-15 15:53:52 +01:00
snipe
b39a7c6f0c String constraint
Signed-off-by: snipe <snipe@snipe.net>
2024-08-15 15:42:11 +01:00
snipe
a3d847151a Model name uniqueness
Signed-off-by: snipe <snipe@snipe.net>
2024-08-15 15:19:27 +01:00
snipe
3283704fe8 Updated assets
Signed-off-by: snipe <snipe@snipe.net>
2024-08-15 12:25:08 +01:00
snipe
540df32046 Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	public/js/build/app.js
#	public/js/dist/all.js
#	public/mix-manifest.json
2024-08-15 12:24:59 +01:00
snipe
594f506641 Merge pull request #15305 from snipe/localizations/updated_languages_2024-08-15
Updated translation strings
2024-08-15 12:21:59 +01:00
snipe
dd458dfa7f Updated strings
Signed-off-by: snipe <snipe@snipe.net>
2024-08-15 12:21:06 +01:00
snipe
b917489f00 Corrected string
Signed-off-by: snipe <snipe@snipe.net>
2024-08-15 12:10:41 +01:00
snipe
75dfedcb82 Merge pull request #15304 from snipe/confetti_fun_mode_redux
Added confetti option
2024-08-15 11:37:34 +01:00
snipe
6216b4fc0d Use native browser control for required in addition to the css effect
Signed-off-by: snipe <snipe@snipe.net>
2024-08-15 11:35:56 +01:00
snipe
4356cb7b9b Added confetti option
Signed-off-by: snipe <snipe@snipe.net>
2024-08-15 11:32:42 +01:00
Glukose1
d8df52cc8f Implemented setting to specify the amount of days before an assets appers in the due for checkin page. Currently this uses the audit warning days but a sperated setting gives the possibility of defineing different values for each field. 2024-08-15 12:20:51 +02:00
snipe
85486fa58c Merge remote-tracking branch 'origin/develop' 2024-08-15 10:53:54 +01:00
snipe
10dc1f1368 Re-pull the accessory checkout
Signed-off-by: snipe <snipe@snipe.net>
2024-08-15 10:51:49 +01:00
snipe
3618df2ec5 Merge remote-tracking branch 'origin/develop' 2024-08-15 10:44:39 +01:00
snipe
8f7bce7aad Re-added UI for checkout to non-users for accessories
Signed-off-by: snipe <snipe@snipe.net>
2024-08-15 10:44:27 +01:00
snipe
a201f22fdb Bumped version
Signed-off-by: snipe <snipe@snipe.net>
2024-08-15 10:36:12 +01:00
snipe
6070d530cf Merge remote-tracking branch 'origin/develop' 2024-08-15 10:35:33 +01:00
snipe
4d66f7c93f Bumped version
Signed-off-by: snipe <snipe@snipe.net>
2024-08-15 10:35:02 +01:00
snipe
6c0cf94473 Merge remote-tracking branch 'origin/develop' 2024-08-15 10:28:08 +01:00
snipe
381003eeab Cleaned up asset tag field on quickscan checkin
Signed-off-by: snipe <snipe@snipe.net>
2024-08-15 10:27:31 +01:00
snipe
c3d4c821f3 Merge pull request #15303 from snipe/features/#15301_optional_status_to_quickscan_checkin
Fixed #15301 - Added optional status to quickscan checkin
2024-08-15 10:26:04 +01:00
snipe
d8038ac483 Removed status label list
Signed-off-by: snipe <snipe@snipe.net>
2024-08-15 10:17:08 +01:00
snipe
d268f25f16 Make asset tag required
Signed-off-by: snipe <snipe@snipe.net>
2024-08-15 10:16:57 +01:00
snipe
01c69c8f8f Allow optional status label on quickscan checkin
Signed-off-by: snipe <snipe@snipe.net>
2024-08-15 10:08:48 +01:00
spencerrlongg
9622e05cf5 correct api test 2024-08-14 18:41:06 -05:00
spencerrlongg
afaf53cdfc failing ui test 2024-08-14 18:14:21 -05:00
spencerrlongg
f031309f8f set up api controller for route/model binding 2024-08-14 16:09:15 -05:00
spencerrlongg
20ec420ba3 not quite done, api side needs some work 2024-08-14 13:53:29 -05:00
Marcus Moore
ab63a19aff Initialize concept of cached values 2024-08-14 11:01:51 -07:00
spencerrlongg
a70b94e707 Merge branch 'refs/heads/develop' into bug/sc-26584 2024-08-14 11:36:19 -05:00
r-xyz
0d7cf55a3a Add support for Docker secrets in Standard and alpine image. 2024-08-14 17:40:52 +02:00
Brady Wetherington
008bf036b5 Got rid of weird namespace declaration and commented-out data-toggle line 2024-08-14 16:09:34 +01:00
Brady Wetherington
cc5ad456e6 Expose the 'sanitize' system for backup restores to the web GUI 2024-08-14 15:59:21 +01:00
snipe
3e29457094 Merge pull request #15292 from snipe/features/updated_phpinsights
Updated phpinsights
2024-08-14 12:12:40 +01:00
snipe
0b3ac2a9cd Updated phpinsights
Signed-off-by: snipe <snipe@snipe.net>
2024-08-14 12:08:49 +01:00
snipe
bf4b915168 Merge remote-tracking branch 'origin/develop' 2024-08-14 10:45:13 +01:00
snipe
0f1e5181a6 Nicer input layout for bulk edit name
Signed-off-by: snipe <snipe@snipe.net>
2024-08-14 10:09:14 +01:00
snipe
0a9c2e354f Merge remote-tracking branch 'origin/develop' 2024-08-14 10:02:43 +01:00
snipe
e544007185 Merge pull request #15291 from snipe/features/bulk_update_asset_name
Added asset name to bulk asset edit
2024-08-14 10:02:09 +01:00
snipe
4b690e8e1f Updated test to check for nulling
Signed-off-by: snipe <snipe@snipe.net>
2024-08-14 10:01:56 +01:00
snipe
371afde52d Bulk edit asset name
Signed-off-by: snipe <snipe@snipe.net>
2024-08-14 09:52:25 +01:00
Marcus Moore
038e86954b Improve property name 2024-08-13 17:30:53 -07:00
Marcus Moore
f6c1642bf2 Use computed fields in CustomFieldSetDefaultValuesForModel component 2024-08-13 17:01:35 -07:00
snipe
7a6a2e3d92 Merge pull request #15290 from marcusmoore/test-fixes
Fixed component check in test
2024-08-14 00:00:55 +01:00
Marcus Moore
3f8ac59f4c Reference the entry in the components_assets table 2024-08-13 15:31:16 -07:00
snipe
74e7b1cfa5 Merge pull request #15286 from marcusmoore/test-updates
Implemented artisan test case
2024-08-13 20:46:46 +01:00
Marcus Moore
ae0a6d66f3 Update tests
https://masteringlaravel.io/daily/2024-02-09-watch-out-for-this-when-testing-artisan-commands
2024-08-13 12:16:08 -07:00
Marcus Moore
321839e074 Fix namespace 2024-08-13 12:14:56 -07:00
spencerrlongg
120cfd13c5 translation 2024-08-13 14:07:40 -05:00
spencerrlongg
09f2739298 works, un-reassignable licenses are an issue 2024-08-13 13:45:41 -05:00
snipe
e9fc455a30 Merge pull request #15192 from Godmartinz/status_labels_check_emails
Added status labels to confirmation emails
2024-08-13 18:24:15 +01:00
Godfrey M
8af4126de1 removed indent from blades 2024-08-13 10:21:33 -07:00
Godfrey M
5d1c48c071 fixes alignment, and box issue with pie chart 2024-08-13 10:11:49 -07:00
snipe
47f1b3b14e Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	public/css/build/app.css
#	public/css/build/overrides.css
#	public/css/dist/all.css
#	public/mix-manifest.json
2024-08-13 16:48:06 +01:00
snipe
3044af9410 Merge pull request #15280 from snipe/bug/sc-23294
Fixed select2 “x” color on multi-select and border color
2024-08-13 16:46:56 +01:00
snipe
4f0f0af83b Make the border radius match the rest of the site
Signed-off-by: snipe <snipe@snipe.net>
2024-08-13 16:46:26 +01:00
snipe
198afee946 Fixed select2 “x” color on mult-select and border color
Signed-off-by: snipe <snipe@snipe.net>
2024-08-13 16:42:23 +01:00
snipe
def0af652d Merge pull request #15279 from TelecomsSansFrontieres/fix_missing-translate-item-assets
Fix: add missing admin/hardware/table.name key
2024-08-13 16:35:25 +01:00
Florent Bervas
20e4ba0590 lang: relocated translation key to existing item in general 2024-08-13 15:07:54 +00:00
snipe
72fd9977e5 Merge pull request #15277 from uberbrady/silence_saml_errors
Fixed: [sc-26355] Attempt to de-escalate SAML login and logout errors
2024-08-13 15:51:03 +01:00
Brady Wetherington
10f35c682b Re-add space 2024-08-13 15:49:51 +01:00
snipe
198b76ebc2 Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	public/css/build/app.css
#	public/css/build/overrides.css
#	public/css/dist/all.css
#	public/mix-manifest.json
2024-08-13 15:47:00 +01:00
snipe
6e84c29ce4 Merge pull request #15278 from snipe/print_view_improvements
Fixed #14821 - Hide UI elements from print view on assets
2024-08-13 15:45:30 +01:00
snipe
389a06aac5 Hide UI elements from print view on assets
Signed-off-by: snipe <snipe@snipe.net>
2024-08-13 15:40:51 +01:00
Brady Wetherington
4b96721393 Attempt to de-escalate SAML login and logout errors 2024-08-13 14:55:13 +01:00
snipe
e42ee0c0e1 Merge pull request #15276 from snipe/css_updates
Bold selected tab for better readability
2024-08-13 14:21:45 +01:00
snipe
277a0fd16a Make selected tab bold
Signed-off-by: snipe <snipe@snipe.net>
2024-08-13 14:19:41 +01:00
snipe
c163d6774f Merge pull request #15198 from spencerrlongg/feature/add_trait_to_request
Add MayContainCustomFields Trait to Asset Update Request
2024-08-13 14:12:52 +01:00
snipe
5546f9676a Merge remote-tracking branch 'origin/develop' 2024-08-13 13:51:33 +01:00
snipe
9e73eaf955 Merge pull request #15275 from snipe/added_tooltips_to_top_bar
Added tooltips to top nav shortcuts
2024-08-13 13:50:27 +01:00
snipe
1b2094f4e2 Added tooltips to top nav shortcuts
Signed-off-by: snipe <snipe@snipe.net>
2024-08-13 13:49:13 +01:00
spencerrlongg
ec863df007 rm conditional that might be unnecessary 2024-08-12 16:58:53 -05:00
spencerrlongg
cc3b8e0681 this should more or less work, but i need to determine if this is the best way 2024-08-12 16:58:21 -05:00
spencerrlongg
ff145abbe7 use array for eager loading, makes ide prettier 2024-08-12 16:13:03 -05:00
snipe
46caa478d2 Merge remote-tracking branch 'origin/develop' 2024-08-12 20:47:45 +01:00
snipe
e6106aa7cf Merge pull request #15272 from snipe/fixes/added_selectlist_permission_for_reports
Added reporting-only access for selectlists
2024-08-12 20:47:17 +01:00
snipe
b45a8f4b5f Added reporting-only access for selectlists
Signed-off-by: snipe <snipe@snipe.net>
2024-08-12 20:44:17 +01:00
snipe
4d8569e754 Merge remote-tracking branch 'origin/develop' 2024-08-12 18:01:21 +01:00
snipe
c9f8a84d48 Merge pull request #15270 from snipe/fixes/make_dashboard_pie_respect_show_in_list
Fixed #15247 - make pie chart on dashboard respect the “show archived…
2024-08-12 17:59:27 +01:00
snipe
ac1543d568 Fixed #15247 - make pie chart on dashboard respect the “show archived” setting
Signed-off-by: snipe <snipe@snipe.net>
2024-08-12 17:54:42 +01:00
snipe
4dc57f95e2 Merge remote-tracking branch 'origin/develop' 2024-08-12 16:38:23 +01:00
snipe
9d354ca657 Merge pull request #15266 from uberbrady/checkout_to_fixer
Checkout-to fixer
2024-08-12 16:34:19 +01:00
snipe
316ee6f810 Merge remote-tracking branch 'origin/develop' 2024-08-12 16:30:53 +01:00
snipe
3f2139349e Allow better fallthrough on image
Signed-off-by: snipe <snipe@snipe.net>
2024-08-12 16:30:21 +01:00
snipe
f56dd582f9 Merge pull request #15269 from snipe/fixes/smaller_email_logo
Fixes ##15236 - smaller email logo
2024-08-12 16:27:59 +01:00
snipe
225ab47b8e Simplified logic
Signed-off-by: snipe <snipe@snipe.net>
2024-08-12 16:23:09 +01:00
snipe
4c350bd5a3 Remove the regular logo fallback, make image capped by height
Signed-off-by: snipe <snipe@snipe.net>
2024-08-12 16:21:58 +01:00
snipe
509cc812ea Merge remote-tracking branch 'origin/develop' 2024-08-12 15:58:40 +01:00
snipe
e7fb29fced Fixed copy area for serial
Signed-off-by: snipe <snipe@snipe.net>
2024-08-12 15:58:30 +01:00
Brady Wetherington
a2d11b43de Whoops, these were accidentally committed 2024-08-12 13:50:46 +01:00
Brady Wetherington
f80cf666b1 Mark tests as incomplete for the new artisan assigned_to fixer 2024-08-12 13:46:56 +01:00
snipe
d5f66bc0dd Merge remote-tracking branch 'origin/develop' 2024-08-12 10:10:59 +01:00
snipe
ce5be8ac24 Merge pull request #15100 from Godmartinz/depreciation_percentage
Added Depreciation Percentage as an option
2024-08-12 10:10:25 +01:00
snipe
1e213c31ef Merge remote-tracking branch 'origin/develop' 2024-08-11 10:26:16 +01:00
snipe
1777bb4b93 Pulled searchable relation on model - needs revisit
Signed-off-by: snipe <snipe@snipe.net>
2024-08-11 10:26:02 +01:00
snipe
91874dfe0b Merge remote-tracking branch 'origin/develop' 2024-08-10 19:37:37 +01:00
snipe
5c6c655cdc Added sounds to quickscan checkin
Signed-off-by: snipe <snipe@snipe.net>
2024-08-10 19:37:18 +01:00
snipe
0e6eda5e8a Merge remote-tracking branch 'origin/develop' 2024-08-10 18:29:41 +01:00
snipe
60eb602156 Merge pull request #15264 from snipe/fixes/fixed_admin_ordering_on_report
Fixed #15252 - admin ordering on activity report
2024-08-10 18:26:15 +01:00
snipe
24560b9362 Updated prod assets
Signed-off-by: snipe <snipe@snipe.net>
2024-08-10 18:24:49 +01:00
snipe
76b114d820 Added test
Signed-off-by: snipe <snipe@snipe.net>
2024-08-10 18:21:41 +01:00
snipe
ce33deed86 Remove unused use statement
Signed-off-by: snipe <snipe@snipe.net>
2024-08-10 17:14:34 +01:00
snipe
1e6c172f18 Removed unusued use statement
Signed-off-by: snipe <snipe@snipe.net>
2024-08-10 17:14:20 +01:00
snipe
a1ce9b9285 Added query scope for ordering by admin
Signed-off-by: snipe <snipe@snipe.net>
2024-08-10 17:00:50 +01:00
snipe
6ec3693030 Load admin on actionlog
Signed-off-by: snipe <snipe@snipe.net>
2024-08-10 17:00:34 +01:00
snipe
71729f0b16 Load admin and model on assets
Signed-off-by: snipe <snipe@snipe.net>
2024-08-10 17:00:20 +01:00
snipe
1c229a8e08 Made notes field sortable
Signed-off-by: snipe <snipe@snipe.net>
2024-08-10 17:00:11 +01:00
snipe
07b1e3fb90 Fixed tests
Signed-off-by: snipe <snipe@snipe.net>
2024-08-10 16:55:48 +01:00
snipe
6294516271 Merge pull request #15263 from snipe/really/remove_pound_sign_for_order_number
Fixed #15248 Removed pound symbol from order number on asset view
2024-08-10 16:18:40 +01:00
snipe
f3331b5045 Removed pound symbol from order number on asset view
Signed-off-by: snipe <snipe@snipe.net>
2024-08-10 16:17:07 +01:00
snipe
6a06a91fa2 Merge pull request #15262 from snipe/synk/jquery-validation-from-1.20.1-to-1.21.0
Upgrade jquery-validation from 1.20.1 to 1.21.0
2024-08-10 16:07:47 +01:00
snipe
0cba5ba67e Upgrade jquery-validation from 1.20.1 to 1.21.0
Signed-off-by: snipe <snipe@snipe.net>
2024-08-10 16:06:14 +01:00
snipe
b815352a45 Merge pull request #15261 from snipe/security/upgrade_fontawesome
[Snyk] Upgrade @fortawesome/fontawesome-free from 6.5.2 to 6.6.0
2024-08-10 15:57:10 +01:00
snipe
2f299dbb20 Upgrade fontawesome, generate dev assets
Signed-off-by: snipe <snipe@snipe.net>
2024-08-10 15:51:24 +01:00
snipe
f76fbe75e0 Merge pull request #15221 from marcusmoore/fixes/bulk-checkin-logging
Fixed accessories and consumables not being logged correctly during bulk check-in
2024-08-08 10:43:59 +01:00
snipe
cc1e356c35 Merge pull request #15232 from marcusmoore/shift-126036
Updated PHPUnit to v10
2024-08-08 01:23:07 +01:00
snipe
8094f3c0e1 Merge pull request #15245 from spencerrlongg/bug/acceptance_issue
Fixed Issue with Acceptances Being Created
2024-08-08 01:22:34 +01:00
snipe
900beaa955 Merge pull request #15244 from snipe/features/play_sound_on_audit
Fixes #10560 - optional ability to play sound on audit
2024-08-08 00:58:30 +01:00
Marcus Moore
6521c02526 Merge branch 'develop' into livewire-importer-improvements
# Conflicts:
#	resources/views/livewire/importer.blade.php
2024-08-07 15:20:39 -07:00
spencerrlongg
2412333152 added conditional to listener 2024-08-07 16:53:06 -05:00
Marcus Moore
4a2d2f7336 Improve variable name 2024-08-07 13:32:30 -07:00
Marcus Moore
d03baa4613 Make diff cleaner 2024-08-07 13:29:45 -07:00
Marcus Moore
41437e4d8f Merge branch 'develop' into fixes/bulk-checkin-logging
# Conflicts:
#	app/Http/Controllers/Users/BulkUsersController.php
2024-08-07 13:06:59 -07:00
snipe
7d220dd8c2 set default
Signed-off-by: snipe <snipe@snipe.net>
2024-08-07 20:58:04 +01:00
snipe
a99ec062e6 Added checkbox for preferences
Signed-off-by: snipe <snipe@snipe.net>
2024-08-07 20:49:07 +01:00
snipe
8fe6395287 Added migration
Signed-off-by: snipe <snipe@snipe.net>
2024-08-07 20:41:13 +01:00
snipe
b4d51599ee Added sound effects
Signed-off-by: snipe <snipe@snipe.net>
2024-08-07 20:38:50 +01:00
snipe
9350a20189 Include accessories count
This isn’t exactly right right now

Signed-off-by: snipe <snipe@snipe.net>
2024-08-07 20:19:47 +01:00
snipe
889d5da71e Check for accessories on bulk items
Signed-off-by: snipe <snipe@snipe.net>
2024-08-07 20:04:32 +01:00
snipe
5546ab08c2 Only delete user records in accessories_checkouts for bulk delete
Signed-off-by: snipe <snipe@snipe.net>
2024-08-07 19:53:18 +01:00
snipe
ef183f256c Merge pull request #15242 from Godmartinz/shortcut_option
Fixed shortcuts to be optional now
2024-08-07 18:56:27 +01:00
Godfrey M
3a96e501cc use old school input 2024-08-07 10:54:06 -07:00
Godfrey M
6b1784f2ee makes shortcuts optional 2024-08-07 10:47:16 -07:00
snipe
1a872b1643 Merge remote-tracking branch 'origin/develop' 2024-08-07 18:15:44 +01:00
snipe
deef9ad181 Merge pull request #15241 from snipe/partial_revert_for_checkout_accessories_to_non_user
Partial revert for checkout accessories to non user
2024-08-07 18:15:08 +01:00
snipe
0dc7e8b8dc Temp removed other selector
Signed-off-by: snipe <snipe@snipe.net>
2024-08-07 18:04:52 +01:00
snipe
a5f075548a Default to user
Signed-off-by: snipe <snipe@snipe.net>
2024-08-07 18:04:39 +01:00
Brady Wetherington
1706ddd511 working fixup script, but failing tests. But I have tests! 2024-08-07 16:06:00 +01:00
Marcus Moore
a220986d16 Switch to snake case 2024-08-06 16:13:51 -07:00
Marcus Moore
2a8ac81eed Fix namespace 2024-08-06 15:22:13 -07:00
Marcus Moore
d3cb3c03d2 Rerun composer update using php 8.1 2024-08-06 15:01:01 -07:00
Marcus Moore
c60bc5cdbe Change indents back to 2 2024-08-06 13:51:44 -07:00
Marcus Moore
6cfbf835c7 Migrate phpunit.xml
vendor/bin/phpunit --migrate-configuration
2024-08-06 13:37:53 -07:00
Marcus Moore
047b77e038 Composer update for phpunit, collision, and paratest
composer update phpunit/phpunit nunomaduro/collision brianium/paratest --with-all-dependencies
2024-08-06 13:34:51 -07:00
snipe
766b370264 Merge pull request #15229 from marcusmoore/bug/sc-26552
Disallowed checking out components to different companies and fixed number remaining counts
2024-08-06 21:33:55 +01:00
snipe
da33277234 Merge pull request #15230 from marcusmoore/fixes/test-namespaces
Fixed handful of test namespaces
2024-08-06 21:32:11 +01:00
Marcus Moore
3e832e5e94 Revert "Define test classes as final"
This reverts commit 95516b0343.
2024-08-06 13:31:17 -07:00
Marcus Moore
82e795b642 Revert "Add return types to test methods"
This reverts commit 83fb6826ee.
2024-08-06 13:30:34 -07:00
Shift
95516b0343 Define test classes as final 2024-08-06 20:25:22 +00:00
Shift
83fb6826ee Add return types to test methods 2024-08-06 20:25:22 +00:00
Shift
b1e92ab866 Declare data providers as static 2024-08-06 20:25:21 +00:00
Shift
96241cb67c Adopt PHP attributes in test classes 2024-08-06 20:25:21 +00:00
Shift
b680dab5c9 Ignore PHPUnit cache folder 2024-08-06 20:25:19 +00:00
Shift
984840dc82 Bump PHPUnit dependencies 2024-08-06 20:25:18 +00:00
Marcus Moore
84e447af09 Fix test namespaces 2024-08-06 13:21:36 -07:00
Marcus Moore
c7ddabcc8b Check for FMCS when checking out component 2024-08-06 12:27:15 -07:00
Marcus Moore
bee80fcf8a Remove global scope when counting check outs 2024-08-06 12:16:06 -07:00
Marcus Moore
0aff35b622 Scaffold additional failed tests 2024-08-06 12:07:34 -07:00
Godfrey M
46a6a84ecb adds migration and translations 2024-08-06 11:07:39 -07:00
Marcus Moore
374812f8fe Add failing test 2024-08-06 10:48:38 -07:00
Marcus Moore
94e00b8a3e Use new accessory checkout relationship 2024-08-05 17:26:11 -07:00
Marcus Moore
f2b78d18a4 Merge branch 'develop' into fixes/bulk-checkin-logging
# Conflicts:
#	app/Http/Controllers/Users/BulkUsersController.php
2024-08-05 17:25:54 -07:00
Marcus Moore
17eccfcd8b Formatting 2024-08-05 16:58:27 -07:00
Marcus Moore
01e4382d20 Formatting 2024-08-05 16:58:17 -07:00
Marcus Moore
1c664af326 Remove todo outside of scope 2024-08-05 16:58:08 -07:00
Marcus Moore
392d34422a Remove code handled by ConsumableAssignment:: call above 2024-08-05 16:57:40 -07:00
Marcus Moore
35e7a3163c Implement test case 2024-08-05 16:54:31 -07:00
Marcus Moore
96fafa6952 Improve readability 2024-08-05 16:36:29 -07:00
Marcus Moore
a55693211f Move test class 2024-08-05 16:27:04 -07:00
Marcus Moore
1acd24fdbe Re-order helpers 2024-08-05 16:26:25 -07:00
Marcus Moore
59b7d5db4b Remove comment 2024-08-05 16:25:14 -07:00
Marcus Moore
16aa47509b Implement test for assets 2024-08-05 16:24:52 -07:00
Marcus Moore
d1bb3ef6bf Scaffold two tests 2024-08-05 16:19:09 -07:00
Marcus Moore
5cd9dd4a67 Add assertion to ensure user cannot perform bulk actions on self 2024-08-05 16:17:24 -07:00
Marcus Moore
fc405d9d73 Assert redirected to correct place 2024-08-05 16:14:01 -07:00
Marcus Moore
5786ff5035 Add assertion for success message 2024-08-05 16:11:07 -07:00
Marcus Moore
8a206a6d92 Add assertion 2024-08-05 16:10:12 -07:00
Marcus Moore
67b3ab820f Add todo comments 2024-08-05 16:10:08 -07:00
Marcus Moore
b06501dd02 Add assertions 2024-08-05 16:02:59 -07:00
Marcus Moore
e3049fffd4 Remove comment 2024-08-05 15:50:53 -07:00
Marcus Moore
5ecdb7e07c Add validation test 2024-08-05 15:50:09 -07:00
Marcus Moore
4ed3347f52 Add permission check 2024-08-05 15:43:38 -07:00
Marcus Moore
364775dcfe Improve readability 2024-08-05 15:42:03 -07:00
Marcus Moore
bfebcdc7ed Improve variable name 2024-08-05 15:22:35 -07:00
Marcus Moore
480e4f3a69 Improve readability 2024-08-05 15:16:40 -07:00
Marcus Moore
78a0417ee9 Add another user into the mix 2024-08-05 15:11:18 -07:00
snipe
b83d148b37 Merge pull request #15217 from TelecomsSansFrontieres/feature_extend-search-by-tag
Feature: Extend search capabilities to other assets attributes
2024-08-05 15:38:51 +01:00
Florent Bervas
ad794248fe add a warning message if asset tag not found 2024-08-05 13:54:33 +00:00
Florent Bervas
b804791ff6 feature: extend search capabilities to other assets attributes 2024-08-05 12:26:29 +00:00
snipe
c45bf870b7 Merge pull request #15211 from snipe/feaures/15205_copy_asset_tag
Fixed #15205 - adds copy to asset tag
2024-08-02 20:59:53 +01:00
snipe
a0bd8b6049 Fixed #15205 - adds copy to asset tag
Signed-off-by: snipe <snipe@snipe.net>
2024-08-02 20:56:31 +01:00
akemidx
0f0baa207d note field optional 2024-08-01 17:02:35 -04:00
akemidx
3ff1745f56 setting created 2024-08-01 16:44:02 -04:00
akemidx
552f90ae2c required, but not optional 2024-08-01 16:06:47 -04:00
Godfrey M
ae4f278df1 edited terenaries on notifs 2024-08-01 11:13:20 -07:00
Godfrey M
bc0ff706b0 fixes dashboard box overflow 2024-08-01 10:31:39 -07:00
snipe
28abb8d8cc Hotfix for 405 update asset
Signed-off-by: snipe <snipe@snipe.net>
2024-08-01 12:30:35 +01:00
snipe
24d948a3f6 Merge pull request #15204 from snipe/fixes/405_on_api_asset_update
Fixed (temp) put route
2024-08-01 12:28:23 +01:00
snipe
c1c9c3554e Fixed (temp) put route
Signed-off-by: snipe <snipe@snipe.net>
2024-08-01 12:27:02 +01:00
snipe
fcea564afa Fixed button label
Signed-off-by: snipe <snipe@snipe.net>
2024-07-31 21:44:27 +01:00
snipe
f44abd0b28 Fixed button label
Signed-off-by: snipe <snipe@snipe.net>
2024-07-31 21:43:09 +01:00
Godfrey M
854903805b one more spot 2024-07-31 12:16:41 -07:00
Godfrey M
868f117b67 Merge branch 'status_labels_check_emails' of github.com:Godmartinz/snipe-it into status_labels_check_emails 2024-07-31 12:03:56 -07:00
Godfrey M
b6cac4baae corrects ? usage 2024-07-31 12:03:36 -07:00
snipe
4fcb3df1d9 Merge pull request #15199 from Godmartinz/fix-signature-pad
adds closing brackets to signature pad
2024-07-31 19:23:33 +01:00
Godfrey M
b60e22bcb4 adds closing brackets to signature pad 2024-07-31 11:10:33 -07:00
spencerrlongg
61312c2eec oops, mysql 2024-07-31 12:07:50 -05:00
spencerrlongg
b0063b1d4a test written 2024-07-31 11:57:35 -05:00
akemidx
fffcbdc44d Merge remote-tracking branch 'upstream/develop' into upstream/dev 2024-07-31 07:14:06 -04:00
akemidx
8d1fa362f7 restoring code 2024-07-31 07:13:42 -04:00
snipe
31a2765b30 Merge pull request #15145 from Godmartinz/purge-storage
Added user storage files to purge command
2024-07-31 10:16:08 +01:00
snipe
e79a5b7efe Merge pull request #15193 from Godmartinz/admin-settings
Fixed admin boxes alignment
2024-07-31 08:54:44 +01:00
snipe
ca531e85f3 Merge pull request #15194 from spencerrlongg/bug/sc-26247
Fixed A Translation Issue With Auth
2024-07-31 08:54:09 +01:00
spencerrlongg
0941c0944a ok, found issue, but need to test some things now... 2024-07-30 22:55:15 -05:00
spencerrlongg
9b80843c77 tests a little broken, added some nullchecks 2024-07-30 21:44:22 -05:00
spencerrlongg
8684a3efc3 delete note, add trait to other request 2024-07-30 21:22:46 -05:00
akemidx
fccfce2ae8 first thought 2024-07-30 19:27:37 -04:00
Godfrey M
935d2ce29a fixes admin box alignment 2024-07-30 15:05:09 -07:00
spencerrlongg
437ddc01b4 removed extraneous $request->validate() arguments 2024-07-30 16:26:24 -05:00
Godfrey Martinez
f19e58b352 Merge pull request #21 from Godmartinz/status_labels_check_emails_checkout
adds Status labels to check in and out emails
2024-07-30 09:41:05 -07:00
Godfrey M
eb6f330e67 adds status to check in and out 2024-07-30 09:38:39 -07:00
Godfrey M
f19899543d changed error to info 2024-07-30 09:18:17 -07:00
snipe
3a2611f8e1 Merge pull request #14565 from spencerrlongg/bug/sc-23936
Checks that custom fields exist before saving
2024-07-30 11:36:55 +01:00
Godfrey M
53ad312700 added missing closing bracket 2024-07-29 15:17:32 -07:00
Godfrey M
89d375daad add indents 2024-07-29 15:15:41 -07:00
Godfrey M
d46f9776fe remove text 2024-07-29 15:14:58 -07:00
Godfrey M
f9a47c8a9f adds a try catch 2024-07-29 15:12:48 -07:00
Godfrey M
e395ee1878 adds a try catch 2024-07-29 15:12:32 -07:00
snipe
4971c54b05 Fixed seeder
Signed-off-by: snipe <snipe@snipe.net>
2024-07-29 20:17:25 +01:00
snipe
4c5b82ae37 Merge pull request #15188 from Godmartinz/1d_barcode_select_bug
Fixed 1d barcode targeting.
2024-07-29 20:00:21 +01:00
Spencer Long
fd7082c30f Merge branch 'develop' into bug/sc-23936 2024-07-29 14:00:00 -05:00
snipe
8d0b72293f Merge branch 'develop' of https://github.com/snipe/snipe-it into develop 2024-07-29 18:51:19 +01:00
snipe
f3d98f90c0 Add @arne-kroeger as a contributor 2024-07-29 18:51:12 +01:00
snipe
4eccb5ffc6 Merge pull request #15185 from arne-kroeger/feat/accesspories-checkout-to-location-or-asset
Added #14979: add checkout to location and assets functionality to accessories
2024-07-29 18:50:48 +01:00
Godfrey M
86049624c7 retargeted new label engine to correct 1d column 2024-07-29 10:42:26 -07:00
snipe
3972782033 Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	config/version.php
2024-07-29 18:27:56 +01:00
snipe
33b86057d1 Version bump
Signed-off-by: snipe <snipe@snipe.net>
2024-07-29 18:27:01 +01:00
arne-kroeger
3c3b922eae Adjusted newly added tests to new checkout form 2024-07-29 19:15:01 +02:00
arne-kroeger
e8d0147075 Adjusted missing down on migration and code smells 2024-07-29 19:04:10 +02:00
snipe
c2bcc2e2d9 Merge remote-tracking branch 'origin/develop' 2024-07-29 14:39:13 +01:00
snipe
55f9886412 Merge pull request #15187 from snipe/feature/sc-26458
Use the `pwd_secure_min` value (plus 5) for generated password
2024-07-29 14:38:39 +01:00
snipe
a77ece01a6 Fixed test name
Signed-off-by: snipe <snipe@snipe.net>
2024-07-29 14:34:10 +01:00
snipe
1c1101aeac Use the pwd_secure_min value (plus 5) for generated password
Signed-off-by: snipe <snipe@snipe.net>
2024-07-29 14:26:18 +01:00
snipe
de04ead55d Merge remote-tracking branch 'origin/develop' 2024-07-29 10:11:39 +01:00
snipe
bc18fac97e Fixed missing div
Signed-off-by: snipe <snipe@snipe.net>
2024-07-29 10:11:11 +01:00
arne-kroeger
3a0b03348e added additional tests 2024-07-29 11:06:36 +02:00
arne-kroeger
b18baf74d2 added options to checkout accessoires to locations and assets
Added #14979: add checkout functionality to accessoires
2024-07-29 10:54:53 +02:00
snipe
28c7355697 Fixed missing div
Signed-off-by: snipe <snipe@snipe.net>
2024-07-29 09:52:38 +01:00
snipe
0dd0baa511 Merge remote-tracking branch 'origin/develop' 2024-07-27 10:12:23 +01:00
snipe
c3a296c19f Added qr code back
Signed-off-by: snipe <snipe@snipe.net>
2024-07-27 10:12:13 +01:00
snipe
f6cc923e01 Merge remote-tracking branch 'origin/develop' 2024-07-26 17:29:46 +01:00
snipe
aab29fbb6b Use translated string for restore
Signed-off-by: snipe <snipe@snipe.net>
2024-07-26 16:47:40 +01:00
snipe
d9d3ff27ae Merge remote-tracking branch 'origin/develop' 2024-07-26 15:31:52 +01:00
snipe
614d05acb5 Merge pull request #15170 from uberbrady/simplify_css_skin_building
Dynamically iterate through the skin listing to build skins
2024-07-26 15:14:24 +01:00
snipe
e4a82edd3f Merge pull request #15172 from snipe/features/blade_component_for_submit
Use blade component for submit redirect on asset edit/create
2024-07-26 15:13:30 +01:00
snipe
eceaa72781 And more tests
Signed-off-by: snipe <snipe@snipe.net>
2024-07-26 15:07:43 +01:00
snipe
ddf45c5ee9 Renamed test
Signed-off-by: snipe <snipe@snipe.net>
2024-07-26 15:00:16 +01:00
snipe
ff100c0b9f Added more tests
Signed-off-by: snipe <snipe@snipe.net>
2024-07-26 14:58:10 +01:00
snipe
037cc4d098 More tests
Signed-off-by: snipe <snipe@snipe.net>
2024-07-26 14:27:07 +01:00
snipe
ff6e6ef88c Added more tests
Signed-off-by: snipe <snipe@snipe.net>
2024-07-26 13:43:10 +01:00
snipe
e8ec11652f Very basic checkin tests
Signed-off-by: snipe <snipe@snipe.net>
2024-07-26 13:16:31 +01:00
snipe
cd7f276c40 Fixed logging for component
Signed-off-by: snipe <snipe@snipe.net>
2024-07-26 13:09:21 +01:00
snipe
fc8bb82a02 Made dropdown wider
Signed-off-by: snipe <snipe@snipe.net>
2024-07-26 12:48:18 +01:00
snipe
5d7f1f77a3 Added redirect to checkin/checkout controllers
Signed-off-by: snipe <snipe@snipe.net>
2024-07-26 12:48:07 +01:00
snipe
5dea3f4495 Added blade component to checkin/checkout pages
Signed-off-by: snipe <snipe@snipe.net>
2024-07-26 12:47:33 +01:00
snipe
c6e709cd36 Added parameters
Signed-off-by: snipe <snipe@snipe.net>
2024-07-26 12:45:06 +01:00
Brady Wetherington
daf5a80081 Use a similar loop for the minification step for CSS 2024-07-26 12:03:03 +01:00
snipe
759ab78f80 Added more redirects
Signed-off-by: snipe <snipe@snipe.net>
2024-07-26 11:27:36 +01:00
snipe
b6d9f736e3 Pulled use session
Signed-off-by: snipe <snipe@snipe.net>
2024-07-26 10:41:28 +01:00
snipe
243ab51def Fixed back button
Signed-off-by: snipe <snipe@snipe.net>
2024-07-26 10:40:48 +01:00
snipe
c5603a0e10 Merge remote-tracking branch 'origin/develop' 2024-07-26 10:26:23 +01:00
snipe
57f6ecb1da Added created_by to license view
Signed-off-by: snipe <snipe@snipe.net>
2024-07-26 10:24:13 +01:00
snipe
64082ada1e Updated test
Signed-off-by: snipe <snipe@snipe.net>
2024-07-25 22:08:51 +01:00
snipe
068535a80c Removed logging
Signed-off-by: snipe <snipe@snipe.net>
2024-07-25 22:08:46 +01:00
snipe
08f4fe5f35 Add status messages to redirect
Signed-off-by: snipe <snipe@snipe.net>
2024-07-25 22:02:34 +01:00
snipe
018b5684fc Refactor helper method for redirection
Signed-off-by: snipe <snipe@snipe.net>
2024-07-25 22:02:03 +01:00
snipe
73a80a5fbc Use blade component for redirect option
Signed-off-by: snipe <snipe@snipe.net>
2024-07-25 21:35:13 +01:00
Brady Wetherington
4c8bf9ae19 Dynamically iterate through the skin listing to build skins 2024-07-25 21:20:06 +01:00
snipe
f77d300549 Merge pull request #15169 from uberbrady/create_directories_when_needed_on_restore
Create intermediate directories on restore if needed - Fixes [SC-25950]
2024-07-25 18:45:54 +01:00
snipe
62655be2d0 Fixed BYOD label
Signed-off-by: snipe <snipe@snipe.net>
2024-07-25 18:41:37 +01:00
Brady Wetherington
eb938bdba3 Create intermediate directories on restore if needed 2024-07-25 18:40:26 +01:00
snipe
129d3b35fb Merge pull request #15168 from uberbrady/improve_restore_sanitization
Improve restore sanitization - Fixes [sc-24840]
2024-07-25 18:20:05 +01:00
Brady Wetherington
84df23e1f6 Better handle older SQL dumps that got created in Windows format 2024-07-25 18:07:25 +01:00
snipe
a439d8abe8 Use fully qualified use statements
Signed-off-by: snipe <snipe@snipe.net>
2024-07-25 16:08:46 +01:00
snipe
24b7659c23 Merge pull request #15150 from marcusmoore/chore/sc-26113
Registered custom anonymous blade component directory
2024-07-25 16:08:01 +01:00
Marcus Moore
44dbbeb608 Add accessory and consumable specific checkin methods 2024-07-24 14:17:49 -07:00
Marcus Moore
7161b6416e Add failing test for accessories and consumables checkin 2024-07-24 14:16:42 -07:00
snipe
1331bffaca Merge remote-tracking branch 'origin/develop' 2024-07-24 21:42:41 +01:00
snipe
9b422e5c97 Baremetrics BMPay breaks with CSP turned [sc-25011]
Signed-off-by: snipe <snipe@snipe.net>
2024-07-24 21:42:20 +01:00
snipe
0c86855392 Merge remote-tracking branch 'origin/develop' 2024-07-24 21:04:20 +01:00
snipe
962ae5231d Merge pull request #15162 from snipe/fixes/added_location_assets_endpoint
Added assets endpoint for locations
2024-07-24 21:03:43 +01:00
snipe
590d13061a One more test
Signed-off-by: snipe <snipe@snipe.net>
2024-07-24 20:57:26 +01:00
snipe
c3a2cdeee9 Added assets endpoint for locations
Signed-off-by: snipe <snipe@snipe.net>
2024-07-24 20:53:58 +01:00
snipe
ef77fb91c0 Merge remote-tracking branch 'origin/develop' 2024-07-24 20:20:37 +01:00
snipe
02bd8d7ea1 Merge pull request #15161 from snipe/fixes/500_when_depreciation_is_active_but_no_purchase_date
Fixes 500 when depreciation is active but no purchase date
2024-07-24 20:20:10 +01:00
snipe
da4ec145d7 Removed test no longer needed due to validation
Signed-off-by: snipe <snipe@snipe.net>
2024-07-24 20:17:30 +01:00
snipe
ef145e47b4 Added tests
Signed-off-by: snipe <snipe@snipe.net>
2024-07-24 20:13:15 +01:00
snipe
adf58a06da Added check for purchase date
Signed-off-by: snipe <snipe@snipe.net>
2024-07-24 20:13:11 +01:00
snipe
63f0b5279d Added check for purchase_date
Signed-off-by: snipe <snipe@snipe.net>
2024-07-24 20:13:01 +01:00
Godfrey Martinez
c96ccbb6cb Merge branch 'develop' into depreciation_percentage 2024-07-24 12:12:28 -07:00
Godfrey M
950fff31ed fix conflicts 2024-07-24 12:12:04 -07:00
Godfrey M
f05d8281f3 fixes alignment for error msg 2024-07-24 12:06:56 -07:00
Godfrey M
d5c9fa823e adds translations 2024-07-24 11:39:33 -07:00
Godfrey M
99741db645 adds status labels to confirmation emails 2024-07-24 11:24:30 -07:00
snipe
90d5a6d8ab Merge remote-tracking branch 'origin/develop' 2024-07-24 19:16:56 +01:00
snipe
5b8529bc83 Fixed pluralization
Signed-off-by: snipe <snipe@snipe.net>
2024-07-24 19:16:08 +01:00
snipe
f76c68f0ed Merge remote-tracking branch 'origin/develop' 2024-07-24 18:10:23 +01:00
snipe
8368fb5c41 Merge pull request #15160 from snipe/fixes/allow_cloning_of_deleted_assets
Allow cloning of deleted assets
2024-07-24 18:09:55 +01:00
snipe
d1c39a737f Fixed double semicolon
Signed-off-by: snipe <snipe@snipe.net>
2024-07-24 18:09:32 +01:00
snipe
425bfa4318 Added test
Signed-off-by: snipe <snipe@snipe.net>
2024-07-24 18:06:21 +01:00
snipe
293abbd1d0 Allow cloning of deleted assets
Signed-off-by: snipe <snipe@snipe.net>
2024-07-24 17:49:38 +01:00
snipe
b64b774bd5 Use route model binding on clone, removed unneeded route
Signed-off-by: snipe <snipe@snipe.net>
2024-07-24 17:49:21 +01:00
snipe
466ab1e3c0 Removed the banner since we already warn
Signed-off-by: snipe <snipe@snipe.net>
2024-07-24 17:40:24 +01:00
snipe
daa9e7810e Merge pull request #15158 from snipe/fixes/ui_cleanup_for_asset_view
Cleaned up UI on asset view
2024-07-24 17:34:17 +01:00
snipe
95a0f3dbe5 Cleaned up UI on asset view
Signed-off-by: snipe <snipe@snipe.net>
2024-07-24 17:26:55 +01:00
Brady Wetherington
bb465dbfaa Cut down run number to 100 from 1000 2024-07-24 15:09:23 +01:00
snipe
e5ab12496f Merge pull request #15151 from snipe/snyk-fix-067da5564c4d29b025cd356b125e6ad9
[Snyk] Security upgrade alpine from 3.18.6 to 3.19
2024-07-24 14:22:57 +01:00
snipe
4b906e39be Merge pull request #15155 from snipe/fix_new_alpine
Switch dockerfile to using php8.2 instead of 8.1 due to Alpine changes
2024-07-24 14:00:21 +01:00
Brady Wetherington
0dc8f27240 Switch dockerfile to using php8.2 instead of 8.1 due to Alpine changes 2024-07-24 13:56:27 +01:00
Brady Wetherington
8cbcc237c0 Cleanup of Stale workflow for GH - set to debug-mode to start 2024-07-24 13:27:31 +01:00
snipe
c4135c71d4 Merge remote-tracking branch 'origin/develop' 2024-07-24 13:05:16 +01:00
snipe
172da4d655 Merge pull request #15154 from snipe/fixes/15103_show_eol_to_users
Fixes #15103 - Added EOL and audit into to user profile assets
2024-07-24 13:03:50 +01:00
snipe
6f8ccd4e10 Fixes #15103 - Added EOL and audit into to user profile assets
Signed-off-by: snipe <snipe@snipe.net>
2024-07-24 12:54:33 +01:00
snipe
8d36a75342 Merge remote-tracking branch 'origin/develop' 2024-07-24 12:41:20 +01:00
snipe
9457e5b890 Merge pull request #15153 from snipe/fixes/mail_backup_config
Fixed env var for backup config - related to #14964
2024-07-24 12:40:46 +01:00
snipe
bce7a278ae Fixed env var for backup config - related to #14964
Signed-off-by: snipe <snipe@snipe.net>
2024-07-24 12:38:58 +01:00
Brady Wetherington
97e3af8fc9 WIP on new GitHub-backed stalebot settings 2024-07-24 12:33:26 +01:00
Brady Wetherington
914e29210a Initial rough stab at re-implementing stalebot 2024-07-24 12:33:26 +01:00
snipe
a6041ae525 Merge remote-tracking branch 'origin/develop' 2024-07-24 10:41:36 +01:00
snipe
ab1e097b7c Early return for requiredness
Signed-off-by: snipe <snipe@snipe.net>
2024-07-24 10:41:14 +01:00
snipe
a781f84aea Merge remote-tracking branch 'origin/develop' 2024-07-24 10:36:23 +01:00
snipe
90a2a808d6 Merge pull request #15149 from spencerrlongg/bug/check_requiredness
Fixed: Requiredness Check Bug
2024-07-24 10:33:45 +01:00
snipe
73e2d8e305 Merge remote-tracking branch 'origin/develop' 2024-07-24 10:32:54 +01:00
snyk-bot
0e1e13f54a fix: Dockerfile.alpine to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-ALPINE318-BUSYBOX-6913411
- https://snyk.io/vuln/SNYK-ALPINE318-BUSYBOX-7249236
- https://snyk.io/vuln/SNYK-ALPINE318-BUSYBOX-7249265
- https://snyk.io/vuln/SNYK-ALPINE318-BUSYBOX-7249419
- https://snyk.io/vuln/SNYK-ALPINE318-BUSYBOX-7249419
2024-07-24 09:11:01 +00:00
Marcus Moore
869c06f454 Register anonymous blade component namespace 2024-07-23 15:41:58 -07:00
spencerrlongg
b61ab423ca ok NOW it should be fine 2024-07-23 17:35:48 -05:00
spencerrlongg
090a595c99 conflict 2024-07-23 17:34:17 -05:00
Spencer Long
bc417308c7 Merge branch 'develop' into bug/check_requiredness 2024-07-23 17:32:43 -05:00
spencerrlongg
e77e16b9aa this works 2024-07-23 17:22:20 -05:00
spencerrlongg
0ae297634e ugh 2024-07-23 16:59:58 -05:00
spencerrlongg
0f2f559d7a test works, helper still needs work. pushing to check something 2024-07-23 16:46:29 -05:00
snipe
57b5b12952 Merge pull request #15148 from marcusmoore/fixes/dates-in-user-import
Fixed start_date and end_date in user importer
2024-07-23 22:37:19 +01:00
snipe
9baaaae1a3 Merge remote-tracking branch 'origin/develop' 2024-07-23 22:15:57 +01:00
snipe
1f4118a146 Fixed rule
Signed-off-by: snipe <snipe@snipe.net>
2024-07-23 22:15:37 +01:00
Marcus Moore
f4a3823d88 Handle empty strings for dates by converting them to null 2024-07-23 13:57:28 -07:00
snipe
b2a69efc9d Merge remote-tracking branch 'origin/develop' 2024-07-23 21:42:12 +01:00
snipe
00ebc8b64d Merge pull request #15136 from snipe/fixes/cookie_serialization
Remove cookie serialization
2024-07-23 21:41:44 +01:00
snipe
effd273245 Merge pull request #14458 from spencerrlongg/bug/sc-24884
Add Form Request and Tests for Update Asset API Method
2024-07-23 20:57:47 +01:00
snipe
7858c72b98 Fixed string
Signed-off-by: snipe <snipe@snipe.net>
2024-07-23 20:45:12 +01:00
snipe
09e2c0beab Merge pull request #15147 from uberbrady/fix_setup_ssl_check
Fix setup ssl check
2024-07-23 20:32:13 +01:00
spencerrlongg
e8864ffb01 test added, permission fixed 2024-07-23 14:29:17 -05:00
Brady Wetherington
d893de2b7e Merge branch 'develop' into fix_setup_ssl_check 2024-07-23 20:24:38 +01:00
Brady Wetherington
7f7cfef81b Mark test as Incomplete, and downgrade error back to debug for tests 2024-07-23 20:24:05 +01:00
Godfrey M
d01972bbe5 adds tests for amount and percent 2024-07-23 11:53:59 -07:00
spencerrlongg
b9fdb5880a quick push 2024-07-23 13:48:43 -05:00
spencerrlongg
1139ed676a $id to $asset->id (thanks tests) 2024-07-23 13:03:25 -05:00
Spencer Long
64be353156 Merge branch 'develop' into bug/sc-24884 2024-07-23 12:55:19 -05:00
Godfrey M
750015684d purges user storage files 2024-07-23 10:42:50 -07:00
snipe
992d16664d Merge remote-tracking branch 'origin/develop' 2024-07-23 18:26:54 +01:00
snipe
900c19b76d Merge pull request #15143 from snipe/fixes/no-NO-language
Switch to nb-NO from no-NO for Norwegian
2024-07-23 18:25:27 +01:00
snipe
effd2bce24 Fixed test to use nb-NO
Signed-off-by: snipe <snipe@snipe.net>
2024-07-23 18:22:13 +01:00
snipe
de8816d837 Merge pull request #15144 from snipe/localization/updated_strings_2024_07_23
Updated translations
2024-07-23 18:17:45 +01:00
snipe
593554daed Updated translations
Signed-off-by: snipe <snipe@snipe.net>
2024-07-23 18:14:19 +01:00
snipe
fecd877e8b Migration
Signed-off-by: snipe <snipe@snipe.net>
2024-07-23 17:35:06 +01:00
snipe
ba6d8ae8c7 Switch to nb-NO from no-NO
Signed-off-by: snipe <snipe@snipe.net>
2024-07-23 17:15:44 +01:00
snipe
175862d3c9 Added route param to message
Signed-off-by: snipe <snipe@snipe.net>
2024-07-23 16:37:01 +01:00
Brady Wetherington
5eea08088d Improve .env file checking to not validate SSL certificates 2024-07-23 16:03:02 +01:00
snipe
c752c2a125 Make the passport cookie name configurable
Signed-off-by: snipe <snipe@snipe.net>
2024-07-22 14:22:19 +01:00
snipe
4ac4f9b0a9 Customize cookie name
Signed-off-by: snipe <snipe@snipe.net>
2024-07-22 14:17:16 +01:00
snipe
09abcb44bb Remove cookie serialization
Signed-off-by: snipe <snipe@snipe.net>
2024-07-22 13:49:47 +01:00
snipe
7f566b9152 Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	public/css/dist/all.css
#	public/css/dist/bootstrap-table.css
#	public/js/dist/bootstrap-table.js
#	public/mix-manifest.json
2024-07-22 10:56:37 +01:00
snipe
30835fe9ba Merge pull request #15134 from snipe/upgrade_bs_table
[Snyk] Upgrade bootstrap-table from 1.22.5 to 1.23.0 #15131
2024-07-22 10:50:53 +01:00
snipe
910e98b573 [Snyk] Upgrade bootstrap-table from 1.22.5 to 1.23.0 #15131
Signed-off-by: snipe <snipe@snipe.net>
2024-07-22 10:45:35 +01:00
snipe
4623e40077 Merge pull request #15133 from snipe/fixes/load_english_separately_for_table_locale
Load the english file again in case BS table doesn’t have a translation
2024-07-22 10:40:01 +01:00
snipe
20868b9ede Load the english file again in case BS table doesn’t have a translation
Signed-off-by: snipe <snipe@snipe.net>
2024-07-22 10:30:42 +01:00
snipe
efc84efabf Merge pull request #15132 from snipe/fixes/disable_remote_login_force_via_env
Hides the “Disable Other Login Mechanisms” option via env
2024-07-22 10:20:34 +01:00
snipe
7c7fa96334 Pulled from the app.php as well
Signed-off-by: snipe <snipe@snipe.net>
2024-07-22 10:19:55 +01:00
snipe
e08acb851c Removed env part, just check for the remote user login
Signed-off-by: snipe <snipe@snipe.net>
2024-07-22 10:18:33 +01:00
snipe
bbad84c6cc Hides the “Disable Other Login Mechanisms” option via env
Signed-off-by: snipe <snipe@snipe.net>
2024-07-22 10:13:59 +01:00
snipe
f2acb98afa Merge pull request #15128 from snipe/fixes/nicer_consumables_layout
Nicer consumables layout
2024-07-20 17:01:15 +01:00
snipe
38affea3f3 More updates
Signed-off-by: snipe <snipe@snipe.net>
2024-07-20 16:57:10 +01:00
snipe
cea31c5b11 Added more generic buttons with variables
Signed-off-by: snipe <snipe@snipe.net>
2024-07-20 16:53:01 +01:00
snipe
254e2f120b Added clone to consumables
Signed-off-by: snipe <snipe@snipe.net>
2024-07-20 16:40:32 +01:00
snipe
2bfee0c29a Few more tweaks
Signed-off-by: snipe <snipe@snipe.net>
2024-07-20 16:21:11 +01:00
snipe
c08bd8f88b Nicer consumables layout
Signed-off-by: snipe <snipe@snipe.net>
2024-07-20 16:11:45 +01:00
snipe
9818c2f033 Merge remote-tracking branch 'origin/develop' 2024-07-20 08:08:51 +01:00
snipe
f63fd25ce0 Fixed default
Signed-off-by: snipe <snipe@snipe.net>
2024-07-20 08:08:29 +01:00
snipe
57ecdd6765 Merge remote-tracking branch 'origin/develop' 2024-07-20 07:43:37 +01:00
snipe
9d890b35c6 Merge pull request #15127 from snipe/fixes/small_default_avatar_tweaks
Fixes #15076 - Removes ability to remove the default avatar from disk
2024-07-20 07:42:39 +01:00
snipe
8fc5c0b5be Use other default avatar, not in the avatars directory
Signed-off-by: snipe <snipe@snipe.net>
2024-07-20 07:34:40 +01:00
snipe
c4e7448d31 Updated strings
Signed-off-by: snipe <snipe@snipe.net>
2024-07-20 07:25:56 +01:00
snipe
ffd2687734 Updated language
Signed-off-by: snipe <snipe@snipe.net>
2024-07-20 07:25:46 +01:00
snipe
6f3eedf5e6 Removed restoreDefaultAvatar method
Signed-off-by: snipe <snipe@snipe.net>
2024-07-20 07:25:27 +01:00
snipe
241eb7b031 One more bad sig
Signed-off-by: snipe <snipe@snipe.net>
2024-07-20 06:06:27 +01:00
snipe
ca399794c3 Fixed incorrect signature
Signed-off-by: snipe <snipe@snipe.net>
2024-07-20 06:05:01 +01:00
snipe
736d4cc59a Use new deleting method in ImageUploadRequest
Signed-off-by: snipe <snipe@snipe.net>
2024-07-20 05:55:34 +01:00
snipe
ad85f8be2f Cleaned up
Signed-off-by: snipe <snipe@snipe.net>
2024-07-20 05:55:12 +01:00
snipe
be17ef4047 Added option to restore from default demo
Signed-off-by: snipe <snipe@snipe.net>
2024-07-20 05:55:06 +01:00
snipe
c6c006f143 Added restore from demo method
Signed-off-by: snipe <snipe@snipe.net>
2024-07-20 05:54:40 +01:00
snipe
10856516ac Split out the image deletion into a separate method
Signed-off-by: snipe <snipe@snipe.net>
2024-07-20 03:40:16 +01:00
snipe
beac4c8b8a Updated tests
Signed-off-by: snipe <snipe@snipe.net>
2024-07-20 03:39:54 +01:00
snipe
b39b39bc8a Ignore the test uploads directory
Signed-off-by: snipe <snipe@snipe.net>
2024-07-20 03:39:05 +01:00
snipe
e373be7dde Skip deleting default avatar from disk on delete
Signed-off-by: snipe <snipe@snipe.net>
2024-07-20 01:01:27 +01:00
snipe
ca7c0aa47c Added default avatar to seeder
Signed-off-by: snipe <snipe@snipe.net>
2024-07-20 00:59:25 +01:00
snipe
48a8cf6b70 Removed unused default avatar
Signed-off-by: snipe <snipe@snipe.net>
2024-07-20 00:58:57 +01:00
snipe
7ba1646703 Remove unusued default avatar
Signed-off-by: snipe <snipe@snipe.net>
2024-07-20 00:58:42 +01:00
snipe
daa550cc82 Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	config/version.php
2024-07-20 00:31:08 +01:00
snipe
e9f9d3c259 Bumped hash
Signed-off-by: snipe <snipe@snipe.net>
2024-07-20 00:30:03 +01:00
snipe
63377853b8 Merge pull request #15125 from snipe/fixes/display_avatar_on_user_edit
Show existing images on user edit page
2024-07-20 00:29:28 +01:00
snipe
fc86eefeac Show existing images on user edit page
Signed-off-by: snipe <snipe@snipe.net>
2024-07-20 00:27:28 +01:00
snipe
a98ad76c6a Merge remote-tracking branch 'origin/develop' 2024-07-19 22:55:09 +01:00
snipe
32c768792a Merge pull request #15124 from snipe/fixes/path_for_crypt_in_importer
Fixed use statement for Crypt in the importer, removed unused statements
2024-07-19 22:54:18 +01:00
snipe
793cf27318 Fixed use statement
Signed-off-by: snipe <snipe@snipe.net>
2024-07-19 22:50:24 +01:00
snipe
ba568b7975 Merge pull request #15123 from snipe/tests/added_bulk_delete_assets
Added tests for bulk asset deletion and restore
2024-07-19 22:36:09 +01:00
snipe
4b5bd76225 Fixed notification use statement
Signed-off-by: snipe <snipe@snipe.net>
2024-07-19 22:27:03 +01:00
snipe
a54403ef01 Added bulk asset delete test
Signed-off-by: snipe <snipe@snipe.net>
2024-07-19 22:26:52 +01:00
snipe
13262c5125 Merge remote-tracking branch 'origin/develop' 2024-07-19 20:05:47 +01:00
snipe
9ea38fbb3a Merge pull request #15122 from snipe/fixes/15121_bulk_delete_and_restore
Fixed #15121 - bulk delete restore logging
2024-07-19 20:03:32 +01:00
snipe
94619e3284 Fixed #15121 - bulk delete restore logging
Signed-off-by: snipe <snipe@snipe.net>
2024-07-19 19:56:58 +01:00
snipe
8b05ef6db4 Updated url checks
Signed-off-by: snipe <snipe@snipe.net>
2024-07-19 19:48:03 +01:00
snipe
8e03083b83 Merge branch 'develop' of https://github.com/snipe/snipe-it into develop 2024-07-19 19:07:53 +01:00
snipe
dc2debcd83 Add @DrekiDegga as a contributor 2024-07-19 19:07:41 +01:00
snipe
b7ab8b9e8f Merge pull request #14530 from DrekiDegga/develop
Added #14426: Makes all Manufacturer links dynamic, not just warranty lookup
2024-07-19 19:07:25 +01:00
snipe
c50ab1af67 Merge branch 'develop' into develop 2024-07-19 19:00:56 +01:00
snipe
7773d334ba Merge pull request #15120 from snipe/updated_localizations
Updated strings
2024-07-19 17:54:30 +01:00
snipe
2a0697022e Updated strings
Signed-off-by: snipe <snipe@snipe.net>
2024-07-19 17:47:22 +01:00
Marcus Moore
8d1cc22c58 Turn on legacy binding since other components still use it 2024-07-18 12:00:01 -07:00
snipe
e1eb963962 Updated prod assets
Signed-off-by: snipe <snipe@snipe.net>
2024-07-18 19:11:51 +01:00
snipe
87c2dc5bb5 Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	public/js/build/app.js
#	public/js/dist/all.js
#	public/mix-manifest.json
2024-07-18 19:11:41 +01:00
snipe
06efcd3c46 Merge branch 'develop' of https://github.com/snipe/snipe-it into develop 2024-07-18 18:55:18 +01:00
snipe
faa791e94c Merge pull request #15101 from snipe/localizations/more_strings
More localizations
2024-07-18 18:51:35 +01:00
snipe
e328dec9f9 Merge branch 'develop' into localizations/more_strings 2024-07-18 18:51:17 +01:00
snipe
8e60a7b22b Merge pull request #15110 from marcusmoore/fixes/test-namespace-fixes
Fixed a coupled test namespaces
2024-07-18 18:50:27 +01:00
snipe
958b6035e1 Add @r-xyz as a contributor 2024-07-18 18:49:59 +01:00
snipe
94e0739a74 Merge pull request #15115 from r-xyz/alpine-upload-limit
Improved Docker environment settings: implement `PHP_UPLOAD_LIMIT` for Alpine images
2024-07-18 18:49:00 +01:00
snipe
4465aef991 Merge pull request #15114 from snipe/checkout_multiple_accessories
Checkout multiple of an accessory in one checkout
2024-07-18 17:38:19 +01:00
snipe
822bc6f085 Removed response in form request
Signed-off-by: snipe <snipe@snipe.net>
2024-07-18 17:37:45 +01:00
snipe
19bd99d159 Updated count
Signed-off-by: snipe <snipe@snipe.net>
2024-07-18 17:33:24 +01:00
r-xyz
5c17fefb08 Implement PHP_UPLOAD_LIMIT in Alpine images. 2024-07-18 11:54:58 +02:00
snipe
f984b45de2 Merge branch 'develop' into checkout_multiple_accessories 2024-07-18 05:11:51 +01:00
snipe
d56252c6b3 Added more back :(
Signed-off-by: snipe <snipe@snipe.net>
2024-07-18 05:10:45 +01:00
snipe
44b950cb8e Added back in missing validation
Signed-off-by: snipe <snipe@snipe.net>
2024-07-18 05:07:50 +01:00
snipe
985714d504 Test passing now - I hope
Signed-off-by: snipe <snipe@snipe.net>
2024-07-18 05:04:17 +01:00
snipe
97ead7120e Use from routes for posting
Signed-off-by: snipe <snipe@snipe.net>
2024-07-18 04:54:07 +01:00
snipe
670021a482 Apply the optimize fix
Signed-off-by: snipe <snipe@snipe.net>
2024-07-18 04:43:46 +01:00
snipe
9858cc5baf Removed debugging
Signed-off-by: snipe <snipe@snipe.net>
2024-07-18 04:43:30 +01:00
snipe
fa5b59cf21 Added qty
Signed-off-by: snipe <snipe@snipe.net>
2024-07-18 04:29:49 +01:00
snipe
0ef58a9aef Added translation
Signed-off-by: snipe <snipe@snipe.net>
2024-07-18 03:48:42 +01:00
snipe
0c4e498df3 Removed debugging
Signed-off-by: snipe <snipe@snipe.net>
2024-07-18 03:48:35 +01:00
snipe
b5b60f22d5 Removed int
Signed-off-by: snipe <snipe@snipe.net>
2024-07-18 03:48:21 +01:00
snipe
2f0c74aef0 Updated tests
Signed-off-by: snipe <snipe@snipe.net>
2024-07-18 03:48:06 +01:00
snipe
f56006fb6b More refactoring
Signed-off-by: snipe <snipe@snipe.net>
2024-07-18 01:46:53 +01:00
Marcus Moore
7685de45f2 Turn off legacy binding 2024-07-17 17:12:14 -07:00
Marcus Moore
199e68ff29 Simplify computed propery 2024-07-17 17:10:12 -07:00
Marcus Moore
81bffccf01 Use better error message 2024-07-17 16:28:26 -07:00
snipe
79a13e3618 Added numCheckedOut method
Signed-off-by: snipe <snipe@snipe.net>
2024-07-18 00:26:58 +01:00
snipe
d9b7df5b85 Added form requests
Signed-off-by: snipe <snipe@snipe.net>
2024-07-18 00:26:42 +01:00
snipe
0c933bcc5d Cleaned up controllers, use form requests
Signed-off-by: snipe <snipe@snipe.net>
2024-07-18 00:25:42 +01:00
snipe
4c4b0f722a Added qty to email notification
Signed-off-by: snipe <snipe@snipe.net>
2024-07-18 00:25:29 +01:00
snipe
6c3cafa72f Added tests
Signed-off-by: snipe <snipe@snipe.net>
2024-07-18 00:25:07 +01:00
snipe
16ae23dbeb Updated validation strings
Signed-off-by: snipe <snipe@snipe.net>
2024-07-18 00:25:00 +01:00
snipe
4f3064bdb1 Added store accesstory form request
Signed-off-by: snipe <snipe@snipe.net>
2024-07-18 00:24:51 +01:00
snipe
2b0627c1f6 Added accessory checkout request
Signed-off-by: snipe <snipe@snipe.net>
2024-07-18 00:24:28 +01:00
Marcus Moore
cfca1514c0 Swap file_id for activeFileId 2024-07-17 16:22:44 -07:00
snipe
345a4306e8 Added SubstituteBindings
Signed-off-by: snipe <snipe@snipe.net>
2024-07-17 23:02:10 +01:00
snipe
beb0836d69 Updated route
Signed-off-by: snipe <snipe@snipe.net>
2024-07-17 23:01:44 +01:00
Marcus Moore
b4ed01243b Add more details 2024-07-17 13:40:41 -07:00
Marcus Moore
3772a21a51 Move comment up 2024-07-17 13:37:24 -07:00
snipe
05e278d08b Added qty to email
Signed-off-by: snipe <snipe@snipe.net>
2024-07-17 20:58:21 +01:00
snipe
c21821a864 Added new form fields
Signed-off-by: snipe <snipe@snipe.net>
2024-07-17 20:58:12 +01:00
Marcus Moore
ba13b9924b Fix test namespaces 2024-07-17 11:04:35 -07:00
Marcus Moore
04b6cb763f Add todo 2024-07-17 10:58:48 -07:00
snipe
2f8306cba8 Merge remote-tracking branch 'origin/develop' 2024-07-17 16:27:16 +01:00
Godfrey M
baa7e7d561 clean up 2024-07-16 20:27:38 -07:00
Godfrey M
ffaacc04ef cleaned up calculateDepreciation method 2024-07-16 20:24:18 -07:00
Marcus Moore
dd32341502 Display message if attempting to delete non-existent file 2024-07-16 17:21:18 -07:00
Marcus Moore
f58e3114a2 Simplify destroy method and update list 2024-07-16 17:17:45 -07:00
Marcus Moore
eba494ad8c Make $activeFile a computed property 2024-07-16 17:03:42 -07:00
Marcus Moore
7e89b58746 Move files to computed property 2024-07-16 16:08:42 -07:00
Marcus Moore
b7744105a0 Migrate import type to component 2024-07-16 14:20:41 -07:00
snipe
d5e1dc54c6 Use translated strings for action log meta
This is only partially complete and I mostly hate it

Signed-off-by: snipe <snipe@snipe.net>
2024-07-16 21:35:45 +01:00
Marcus Moore
69263f0e5b Migrate header row to component 2024-07-16 13:30:29 -07:00
snipe
a3b2912e89 Updated string
Signed-off-by: snipe <snipe@snipe.net>
2024-07-16 21:16:23 +01:00
snipe
7f412ec3f5 Missing string
Signed-off-by: snipe <snipe@snipe.net>
2024-07-16 21:14:41 +01:00
snipe
94e881e5f0 Cleared up language
Signed-off-by: snipe <snipe@snipe.net>
2024-07-16 21:11:03 +01:00
Godfrey M
5bb47e290f validates percentage on store and new depreciations 2024-07-16 13:07:12 -07:00
snipe
d53a032402 More consistent UI for indented checkboxes
Signed-off-by: snipe <snipe@snipe.net>
2024-07-16 21:07:03 +01:00
snipe
70d95877d8 Translations for license checkout errors
Signed-off-by: snipe <snipe@snipe.net>
2024-07-16 21:02:58 +01:00
Godfrey M
48821f8391 updates transformer, api controller 2024-07-16 12:58:23 -07:00
snipe
bb00edda4e Added basic jquery validation translations
Signed-off-by: snipe <snipe@snipe.net>
2024-07-16 20:54:48 +01:00
Godfrey M
aaa2858337 battling with handling depreciation percentage and amount 2024-07-16 12:25:19 -07:00
Marcus Moore
017530ba4b Make updating hook more specific 2024-07-16 12:02:50 -07:00
snipe
4895023f3b Translate import button
Signed-off-by: snipe <snipe@snipe.net>
2024-07-16 19:56:02 +01:00
snipe
0ed637f0ce Translate importer header
Signed-off-by: snipe <snipe@snipe.net>
2024-07-16 19:41:47 +01:00
snipe
45bf428092 Translated “seat” for license seat view
Signed-off-by: snipe <snipe@snipe.net>
2024-07-16 19:04:51 +01:00
snipe
e6f2c457a8 Handle localization better, clearer indenting on addresses
Signed-off-by: snipe <snipe@snipe.net>
2024-07-16 19:01:50 +01:00
snipe
04f723327e Fixed translation
Signed-off-by: snipe <snipe@snipe.net>
2024-07-16 19:01:23 +01:00
snipe
4a9bd95ed3 Added language support for select2
Signed-off-by: snipe <snipe@snipe.net>
2024-07-16 18:40:10 +01:00
snipe
78bd950daa Added select2 language files
Signed-off-by: snipe <snipe@snipe.net>
2024-07-16 18:39:42 +01:00
snipe
d3070a0be1 Merge remote-tracking branch 'origin/develop' 2024-07-16 17:24:16 +01:00
snipe
0a70bcc0a9 Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	.all-contributorsrc
#	CONTRIBUTORS.md
2024-07-16 16:12:26 +01:00
Marcus Moore
c8dad528a8 Migrate a couple items out of mount 2024-07-15 16:15:58 -07:00
Marcus Moore
256e989ba1 Add test for importer 2024-07-15 15:49:18 -07:00
snipe
39810f9ba5 Merge remote-tracking branch 'origin/develop' 2024-07-12 11:05:10 +01:00
Marcus Moore
9793016603 Remove unneeded AuthorizesRequests 2024-07-11 13:32:16 -07:00
Marcus Moore
9e06f2d17f Remove commented code 2024-07-11 13:22:10 -07:00
snipe
7464c3622e Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	config/version.php
2024-07-11 19:07:54 +01:00
Godfrey M
d4d19569ee adds execution timer 2024-07-11 10:52:47 -07:00
snipe
1a541ce220 Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	.all-contributorsrc
#	CONTRIBUTORS.md
2024-07-11 18:38:57 +01:00
Godfrey M
43c7504f89 adds an all option, adds help context for all, seperates logic 2024-07-11 10:03:51 -07:00
snipe
c1937b6ea8 Merge remote-tracking branch 'origin/develop' 2024-07-11 12:01:28 +01:00
snipe
7584c30722 Merge remote-tracking branch 'origin/develop' 2024-07-11 12:00:25 +01:00
snipe
62f4b75156 Merge remote-tracking branch 'origin/develop' 2024-07-11 10:08:25 +01:00
Godfrey M
1fa6a763bc updated description 2024-07-10 11:09:57 -07:00
Godfrey M
726308bfd5 removed typo 2024-07-10 10:58:45 -07:00
Godfrey M
22ddb695f2 better description 2024-07-10 10:57:47 -07:00
Godfrey M
09b2feac54 updates assets with selected model to inherit asset model eol 2024-07-10 10:56:44 -07:00
Godfrey M
57e1df86c8 finds model and collects assets with such model 2024-07-10 10:21:24 -07:00
snipe
3d5b1b6c6d Merge remote-tracking branch 'origin/develop' 2024-07-10 17:09:56 +01:00
snipe
5f4ee39f2b Merge remote-tracking branch 'origin/develop' 2024-07-10 16:13:00 +01:00
snipe
45d7e2dc42 Merge remote-tracking branch 'origin/develop' 2024-07-10 08:56:29 +01:00
snipe
18f7ca860d Merge remote-tracking branch 'origin/develop' 2024-07-09 19:52:20 +01:00
snipe
ea881ff95e Merge remote-tracking branch 'origin/develop' 2024-07-09 13:42:03 +01:00
snipe
c1916d6fe4 Merge remote-tracking branch 'origin/develop' 2024-07-09 13:39:07 +01:00
snipe
da9932d147 Merge remote-tracking branch 'origin/develop' 2024-07-09 13:36:06 +01:00
snipe
da42127a7c Merge remote-tracking branch 'origin/develop' 2024-07-09 11:54:17 +01:00
snipe
090410edb5 Merge remote-tracking branch 'origin/develop' 2024-07-09 11:48:30 +01:00
snipe
43d4bc8dc4 Merge remote-tracking branch 'origin/develop' 2024-07-08 22:13:19 +01:00
snipe
ebcc48ec80 Merge remote-tracking branch 'origin/develop' 2024-07-08 22:02:25 +01:00
snipe
5ca62f3ef8 Merge remote-tracking branch 'origin/develop' 2024-07-08 21:39:31 +01:00
snipe
3ae16ff8ca Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	config/version.php
#	public/js/build/vendor.js
#	public/js/dist/all.js
#	public/mix-manifest.json
2024-07-08 15:53:42 +01:00
snipe
2e2f59b290 Updated production assets
Signed-off-by: snipe <snipe@snipe.net>
2024-07-08 15:29:36 +01:00
snipe
c16db436d3 Merge remote-tracking branch 'origin/develop' 2024-07-08 13:21:38 +01:00
snipe
8eb68d3901 Merge remote-tracking branch 'origin/develop' 2024-07-04 17:10:43 +01:00
snipe
fc7809192d Merge remote-tracking branch 'origin/develop' 2024-07-03 23:20:24 +01:00
spencerrlongg
e79111fed5 fix test :( 2024-07-02 16:01:18 -05:00
spencerrlongg
423b48279b merge 2024-07-02 15:53:28 -05:00
spencerrlongg
6f29c0a7cf Merge branch 'refs/heads/develop' into bug/sc-24884
# Conflicts:
#	routes/api.php
2024-07-02 15:48:39 -05:00
snipe
27bc16604b Add @Galaxy102 as a contributor 2024-07-02 09:48:32 +01:00
snipe
86ae4a3513 Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	config/version.php
2024-07-02 09:37:40 +01:00
spencerrlongg
0b60cbc531 remove $rules2 2024-07-01 19:37:49 -05:00
snipe
e502968707 Prod assets
Signed-off-by: snipe <snipe@snipe.net>
2024-07-01 10:00:28 +01:00
snipe
12dcac4994 Merge remote-tracking branch 'origin/develop'
Signed-off-by: snipe <snipe@snipe.net>

# Conflicts:
#	public/css/dist/all.css
#	public/css/dist/bootstrap-table.css
#	public/js/build/app.js
#	public/js/dist/all.js
#	public/js/dist/bootstrap-table.js
#	public/mix-manifest.json
2024-07-01 10:00:15 +01:00
snipe
1837da4508 Merge branch 'develop' 2024-06-26 13:46:40 +01:00
snipe
e1a6b441d7 Merge remote-tracking branch 'origin/develop' 2024-06-26 12:53:18 +01:00
snipe
23c1d664fe Prod assets
Signed-off-by: snipe <snipe@snipe.net>
2024-06-24 22:07:01 +01:00
snipe
c891342fdb Bumoed version
Signed-off-by: snipe <snipe@snipe.net>
2024-06-24 22:06:52 +01:00
spencerrlongg
8ce577db37 adds @snipe's rules for undeleted assigned targets 2024-05-23 15:51:26 -05:00
Spencer Long
cdb1140f10 Merge branch 'develop' into bug/sc-24884 2024-05-23 13:53:00 -05:00
Robert-Azelis
3ea5d4ee40 Update BulkAssetsController.php
Fix for bulk updarte of purchase date to calculate new EOL
2024-05-02 12:55:17 +02:00
Godfrey M
5fa0c87ab0 null debugbar 2024-04-30 12:02:11 -07:00
Godfrey M
75aa01791a adds location select to the create new user vice asset checkout 2024-04-30 11:54:33 -07:00
spencerrlongg
97a6152ea9 update comment per @uberbrady 2024-04-25 17:47:55 -05:00
spencerrlongg
03f091a77f ammended note, got real rule in there 2024-04-25 17:17:42 -05:00
spencerrlongg
8696a423b0 another option 2024-04-23 17:38:40 -05:00
spencerrlongg
107f8db9bc another option 2024-04-23 17:35:33 -05:00
spencerrlongg
b11c900a4c fix bracket, + overwrite required rulesets 2024-04-23 16:29:07 -05:00
Spencer Long
53ccd196d7 Merge branch 'develop' into bug/sc-24884 2024-04-23 13:57:59 -05:00
spencerrlongg
99d7155729 translation strings 2024-04-07 19:50:53 -05:00
spencerrlongg
f30439a544 small refactor, pretty much good to go now though 2024-04-07 17:07:46 -05:00
spencerrlongg
997eddfed1 cleanup + notes for monday 2024-04-04 18:23:03 -05:00
spencerrlongg
52340aca78 just about wrapped up 2024-04-04 17:41:10 -05:00
spencerrlongg
e1fb446888 this is a pretty good start, need to know about other PR 2024-04-04 14:20:03 -05:00
steve@degga.net
83443ad2b5 Sometimes I should just slow down. 2024-04-04 11:36:21 -04:00
steve@degga.net
3fcc067481 Removes accidental changes on two lines 2024-04-04 10:27:44 -04:00
steve@degga.net
3e564eaf19 fixed accidentally forgot update a call to the old dynamicWarrantyUrl() method in hardware/view.blade.php 2024-04-03 20:09:37 -04:00
spencerrlongg
0a90df2b14 alright conflicts resolved 2024-04-03 14:40:14 -05:00
Spencer Long
4ab75c1c03 Merge branch 'develop' into bug/sc-24884 2024-04-03 14:08:41 -05:00
steve@degga.net
bf10fd0cf0 Rename dynamicUrl() method 2024-03-31 22:37:41 -04:00
steve@degga.net
83ce04dc8d Fixes syntax error. 2024-03-31 22:31:06 -04:00
steve@degga.net
f7bbec6be4 Makes all manufacturer URLs dynamic, not just warranty lookup. 2024-03-31 22:18:44 -04:00
spencerrlongg
cec84b857b fixed last audit date + test 2024-03-27 14:39:23 -05:00
spencerrlongg
1d4a7a7b02 added audit dates 2024-03-27 14:05:30 -05:00
spencerrlongg
701411c1b9 get rid of a couple unnecessary changes 2024-03-27 13:53:57 -05:00
Spencer Long
013463aafc Merge branch 'develop' into bug/sc-24884 2024-03-27 12:45:45 -05:00
spencerrlongg
39c15b2868 reformat array 2024-03-27 10:35:25 -05:00
Godfrey M
c62a022252 replaced for loop with eloquent query update 2024-03-21 14:34:47 -07:00
spencerrlongg
60ca634eff remove interactswithsettings 2024-03-21 12:04:53 -05:00
spencerrlongg
be282dd038 resolve a couple issues 2024-03-21 09:26:45 -05:00
spencerrlongg
8cc1397ace rm a couple unnecessary 2024-03-20 15:36:53 -05:00
spencerrlongg
e7b9903341 delete some extra lines 2024-03-20 15:29:06 -05:00
spencerrlongg
e3e01e07b1 final cleanup 2024-03-20 15:23:45 -05:00
spencerrlongg
d18aa1db98 some more cleanup + tests 2024-03-20 15:18:15 -05:00
spencerrlongg
c155e4a7c9 new test for not found assets 2024-03-20 13:52:22 -05:00
spencerrlongg
fdf0be09db all tests passing 2024-03-20 13:43:01 -05:00
spencerrlongg
e1addc5aef oops, typo from conflict resolve 2024-03-20 13:16:36 -05:00
Spencer Long
b4b4927370 Merge branch 'develop' into bug/sc-24884 2024-03-20 12:36:39 -05:00
spencerrlongg
0ffceb9691 some notes and a little progress 2024-03-20 00:07:52 -05:00
spencerrlongg
1e810d2426 most tests now passing, still one broken 2024-03-19 19:47:26 -05:00
spencerrlongg
c0110e7f29 some more tests and refinement 2024-03-19 19:27:35 -05:00
spencerrlongg
86ab880c90 buncha progress 2024-03-19 15:34:59 -05:00
Godfrey M
866f0a9f56 syncs assets location to users location 2024-03-19 11:58:49 -07:00
Godfrey M
05a8d3030b correct column name 2024-03-16 19:54:48 -07:00
Godfrey M
595dad0f18 updates all assets assigned to user with new location 2024-03-16 19:51:40 -07:00
spencerrlongg
f6ab0f8f46 lots of cleanup to do, but this DOES work 2024-03-13 15:57:10 -05:00
spencerrlongg
f01b205486 some changes 2024-03-13 15:10:51 -05:00
spencerrlongg
8962ced038 push to switch branches 2024-03-13 10:40:50 -05:00
spencerrlongg
04d7884af8 some more testing stuff 2024-03-12 23:17:40 -05:00
spencerrlongg
6732b6601e some cool progress, but something with unique not working 2024-03-12 18:33:59 -05:00
spencerrlongg
eb8f1dd553 some cleanup 2024-03-09 12:29:26 -06:00
spencerrlongg
c8341d9dc4 aha, got it working. 2024-03-08 19:48:47 -06:00
spencerrlongg
b239b3a4db some good progress, lots of testing needs to be done on the new inclusion of SubstituteBindings 2024-03-08 18:24:41 -06:00
spencerrlongg
eac01868ca not all working, but pushing to work on something else 2024-03-05 11:02:55 -06:00
spencerrlongg
c025e25839 just the basics and notes, pushing to keep track 2024-02-26 14:32:50 -06:00
Marcus Moore
d65c0c8bea Remove comma 2024-01-23 15:22:00 -08:00
Marcus Moore
2d5631284b Indent 2024-01-23 15:19:36 -08:00
Marcus Moore
3952fc10a6 Re-render order number properly 2024-01-23 15:18:02 -08:00
Marcus Moore
0881301b6d Fix language strings 2024-01-23 13:55:20 -08:00
Marcus Moore
530ea474d1 Merge branch 'develop' into saving_custom_report_template
# Conflicts:
#	resources/lang/en/admin/reports/general.php
#	resources/views/reports/custom.blade.php
2024-01-23 13:55:07 -08:00
Marcus Moore
219540281f Add trailing commas 2024-01-22 12:42:01 -08:00
Marcus Moore
b74115b604 Add docblocks 2024-01-18 15:42:52 -08:00
Marcus Moore
1630392953 Uncheck a couple boxes by default to match existing behavior 2024-01-18 13:30:51 -08:00
Marcus Moore
861ef6312e Use is_iterable for checks instead of is_array 2024-01-18 13:04:41 -08:00
Marcus Moore
f64aa4dfd4 Improve variable name 2024-01-18 11:58:34 -08:00
Marcus Moore
786c41ad79 Add some type hints 2024-01-17 17:41:03 -08:00
Marcus Moore
b24d80680e Add clarifying comments 2024-01-17 17:32:35 -08:00
Marcus Moore
1a1f417633 Change variable name to keep foreach scoped 2024-01-17 17:00:03 -08:00
Marcus Moore
bbfee27fd3 Implement test 2024-01-17 16:40:05 -08:00
Marcus Moore
691e81d827 Implement some tests 2024-01-17 16:25:28 -08:00
Marcus Moore
0ac1dd314a Organize tests 2024-01-17 13:19:54 -08:00
Marcus Moore
82f4cc799b Improve variable name 2024-01-17 11:54:37 -08:00
Marcus Moore
4d8d069bbc Update placeholder 2024-01-17 11:43:34 -08:00
Marcus Moore
5a396cc997 Add assertion 2024-01-17 11:24:50 -08:00
Marcus Moore
0883321d9e Only limit template creator scope when authenticated 2024-01-17 11:24:38 -08:00
akemidx
2768f19b7c code cleanup 2024-01-16 18:56:29 -05:00
akemidx
20bd83232e standardizing naming to use Template 2024-01-11 19:41:19 -05:00
Marcus Moore
d72970b5b6 Add global scope to limit template to current user 2024-01-11 13:59:51 -08:00
Marcus Moore
9c1bea00ad Add failing test 2024-01-11 13:51:18 -08:00
Marcus Moore
8d8bf73c1b Scaffold additional tests 2024-01-11 13:51:10 -08:00
Marcus Moore
e5fb888d67 Implement test 2024-01-11 13:34:20 -08:00
Marcus Moore
82df7a66ec Add form label and remove info box from show and edit pages 2024-01-11 13:19:36 -08:00
Marcus Moore
0202a97e97 Add missing tag 2024-01-11 13:08:08 -08:00
Marcus Moore
b34886ead6 Move box header into box 2024-01-11 13:04:46 -08:00
akemidx
6f6341bc09 about saved reports box 2024-01-10 16:33:35 -05:00
akemidx
5f8e91455f clarifying name box 2024-01-10 15:39:32 -05:00
akemidx
a5099b5163 translations/messages on report template controller 2024-01-10 15:23:42 -05:00
akemidx
27103124bf messages/translations 2024-01-09 16:49:56 -05:00
Marcus Moore
f2d34b2c03 Remove inline javascript 2024-01-02 18:23:57 -08:00
Marcus Moore
25cba65c6e Remove marker test case 2024-01-02 18:14:50 -08:00
Marcus Moore
a756d2b765 Implement test 2024-01-02 18:14:17 -08:00
Marcus Moore
740d46a50e Repopulate report after validation error 2024-01-02 17:59:30 -08:00
Marcus Moore
d8d92a6d2c Scaffold test case 2024-01-02 17:47:52 -08:00
Marcus Moore
137193ab12 Remove duplicate test 2024-01-02 17:44:22 -08:00
Marcus Moore
fcef60445c Implement radioValue properly 2023-12-21 18:07:46 -08:00
Marcus Moore
9e0897b2cb Remove old comments 2023-12-21 17:40:26 -08:00
Marcus Moore
a23a3b95d6 Partially implement test 2023-12-21 17:15:36 -08:00
Marcus Moore
1ac0be50a7 Remove test case 2023-12-21 17:06:40 -08:00
Marcus Moore
618bbc4bda Mark test as incomplete 2023-12-21 17:03:10 -08:00
Marcus Moore
8c434c7862 Implement and scaffold tests 2023-12-21 17:02:44 -08:00
Marcus Moore
7f153b32e4 Always return an array from selectValues method 2023-12-21 16:38:51 -08:00
Marcus Moore
4fc8e8dd61 Add todo 2023-12-21 14:27:31 -08:00
Marcus Moore
48e5ee2310 Add filtering to remaining selects 2023-12-21 14:19:16 -08:00
Marcus Moore
92e3a1e69e Update variable names 2023-12-21 13:46:27 -08:00
Marcus Moore
7f0e3e288e Scaffold additional test 2023-12-21 13:43:44 -08:00
Marcus Moore
dc27e67b19 Remove edit and delete buttons from edit template view 2023-12-21 13:13:28 -08:00
Marcus Moore
4c62e8ade9 Add guard against attempting to access property on unsaved template 2023-12-21 13:11:44 -08:00
Marcus Moore
87853921c3 Formatting 2023-12-21 13:07:11 -08:00
Marcus Moore
8a496ccebc Formatting 2023-12-21 13:05:56 -08:00
Marcus Moore
3e5f804791 Display "Save" on the update template page button 2023-12-21 13:05:49 -08:00
Marcus Moore
62f8353bd7 Implement model filtering for selectValue method 2023-12-21 13:03:43 -08:00
Marcus Moore
1dd9273f70 Improve readability 2023-12-21 12:50:21 -08:00
Marcus Moore
2eeaef00e1 Improve readability 2023-12-21 12:15:00 -08:00
Marcus Moore
5c0c60a5b9 Formatting 2023-12-21 12:02:54 -08:00
Marcus Moore
6fcbb108c6 Implement test for filtering out invalid models from selectValues 2023-12-21 12:02:48 -08:00
Marcus Moore
71761a48ad A few more small clean ups 2023-12-20 17:50:55 -08:00
Marcus Moore
495d74f7c9 Formatting 2023-12-20 17:11:03 -08:00
Marcus Moore
fda77179a3 Simplify url 2023-12-20 16:48:25 -08:00
Marcus Moore
578495bab6 Update tests 2023-12-20 16:37:27 -08:00
Marcus Moore
9a5c8c4ce6 Formatting and clean ups 2023-12-20 16:24:48 -08:00
Marcus Moore
0504c09a9a Implement ability to delete templates 2023-12-20 16:19:04 -08:00
Marcus Moore
9d062f9849 Make control statements more explicit 2023-12-20 16:08:25 -08:00
Marcus Moore
0527201ae5 Allow templates to be updated 2023-12-20 14:41:23 -08:00
Marcus Moore
cf5c78029c Only show template name input on default screen 2023-12-20 14:12:42 -08:00
Marcus Moore
26cc4497eb Use dedicated show route for report templates 2023-12-20 14:01:46 -08:00
Marcus Moore
c35179b098 Use existing class in place of inline styling 2023-12-20 13:48:31 -08:00
Marcus Moore
b2d0cbb264 Display validation error for report name 2023-12-20 13:44:47 -08:00
akemidx
ebf760a477 translations, UI fixes 2023-12-19 18:01:19 -05:00
Marcus Moore
9fcb1a2d0e Rename SavedReport to ReportTemplate 2023-12-18 12:55:48 -08:00
Marcus Moore
27bb938d9e WIP: add dedicated edit report page 2023-12-13 18:09:42 -08:00
Marcus Moore
75bd056bbe Display saved template name in header 2023-12-13 14:49:38 -08:00
akemidx
ad202be374 update method (WIP ver) 2023-12-13 17:31:58 -05:00
akemidx
ca35b66597 frontys 2023-12-12 19:03:09 -05:00
akemidx
e9e68171bb frontend stuff 2023-12-12 18:56:21 -05:00
Marcus Moore
e791ebbe76 Display report name in input 2023-12-11 16:36:32 -08:00
Marcus Moore
d92893b2c7 Remove old javascript 2023-12-11 16:30:44 -08:00
Marcus Moore
c68a2a36fa Add test case for saving custom reports 2023-12-11 16:25:36 -08:00
Marcus Moore
89c47c1879 Add validation for saving reports 2023-12-11 16:20:36 -08:00
Marcus Moore
b9cda88363 Alphabetize saved reports list 2023-12-11 16:20:17 -08:00
Marcus Moore
52028ddef2 Add authorization to saving saved reports route 2023-12-11 15:34:17 -08:00
Marcus Moore
c3845f4393 Add tests around loading saved reports 2023-12-11 14:29:33 -08:00
Marcus Moore
c9157dc55d Update docblock 2023-12-11 14:20:33 -08:00
Marcus Moore
c3b53b28e3 Allow saving custom reports 2023-12-11 14:19:03 -08:00
akemidx
e636d7b9d5 multiple saved reports, beginning of dynamic dropdown listing/queried url 2023-12-11 15:28:34 -05:00
Marcus Moore
bd86c5430c Add a few typehints 2023-12-11 11:27:56 -08:00
Marcus Moore
4a0bb31866 Scaffold two more test cases 2023-12-07 11:00:26 -08:00
akemidx
b7f6c7df06 html work, code comments for tomorrow's tasks 2023-12-06 18:05:58 -05:00
Marcus Moore
327d27591f Merge branch 'saved-custom-reports' into saving_custom_report_template 2023-11-30 18:15:35 -08:00
Marcus Moore
5041c07c7e WIP: implement restoring checkbox inputs 2023-11-30 18:15:04 -08:00
Marcus Moore
505d601488 Implement restoring date ranges 2023-11-30 17:07:39 -08:00
Marcus Moore
bca7f208a6 Implement restoring select values 2023-11-30 16:57:21 -08:00
Marcus Moore
4f031149e8 Scaffold a couple test cases 2023-11-30 12:12:57 -08:00
akemidx
697595d963 Merge branch 'develop' into eol_date_range_for_reports 2023-11-21 16:07:26 -05:00
Marcus Moore
b7011d853a WIP: add methods to restore settings from saved report 2023-11-02 17:10:50 -07:00
Marcus Moore
06186c9b12 WIP: Simply post the form to a different controller 2023-10-30 16:30:53 -07:00
Marcus Moore
7a5faa9619 Adjust margin on custom report page 2023-10-30 12:03:50 -07:00
akemidx
e5792fd415 api/savereports controller 2023-10-25 14:42:23 -04:00
akemidx
45dbc02868 save commit 2023-09-05 15:01:20 -04:00
akemidx
f1cc2c8d8b submitting form after capturing/formatting fixes 2023-08-29 16:55:21 -04:00
akemidx
734af87f2f template structuring 2023-08-28 19:26:31 -04:00
akemidx
78d589fe78 beginning of migrations 2023-08-24 14:32:37 -04:00
akemidx
c9fcc906fb create saved reports migration 2023-08-23 19:32:19 -04:00
akemidx
f9fc2a44cd alphatyping for layout 2023-08-22 15:19:12 -04:00
akemidx
0bdd8a5917 fixing key names 2023-08-02 16:40:38 -04:00
akemidx
e35dd2daa1 asset_eol_date stuff 2023-07-26 17:45:18 -04:00
akemidx
f71b69a739 adding eol fields 2023-07-26 17:31:06 -04:00
akemidx
499a3debcd this WILL break. i'm back to site not found which is something missing. otherwise the columns are either blank or another value like expected checkin i was using to test a bit 2023-07-11 14:08:55 -04:00
3178 changed files with 73140 additions and 288341 deletions

View File

@@ -3154,6 +3154,123 @@
"contributions": [
"code"
]
},
{
"login": "r-xyz",
"name": "r-xyz",
"avatar_url": "https://avatars.githubusercontent.com/u/100710244?v=4",
"profile": "https://github.com/r-xyz",
"contributions": [
"code"
]
},
{
"login": "DrekiDegga",
"name": "Steven Mainor",
"avatar_url": "https://avatars.githubusercontent.com/u/47491036?v=4",
"profile": "https://github.com/DrekiDegga",
"contributions": [
"code"
]
},
{
"login": "arne-kroeger",
"name": "arne-kroeger",
"avatar_url": "https://avatars.githubusercontent.com/u/65785975?v=4",
"profile": "https://github.com/arne-kroeger",
"contributions": [
"code"
]
},
{
"login": "Glukose1",
"name": "Glukose1",
"avatar_url": "https://avatars.githubusercontent.com/u/167117705?v=4",
"profile": "https://github.com/Glukose1",
"contributions": [
"code"
]
},
{
"login": "Scarzy",
"name": "Scarzy",
"avatar_url": "https://avatars.githubusercontent.com/u/1197791?v=4",
"profile": "https://github.com/Scarzy",
"contributions": [
"code"
]
},
{
"login": "setpill",
"name": "setpill",
"avatar_url": "https://avatars.githubusercontent.com/u/37372069?v=4",
"profile": "https://github.com/setpill",
"contributions": [
"code"
]
},
{
"login": "swift2512",
"name": "swift2512",
"avatar_url": "https://avatars.githubusercontent.com/u/3755203?v=4",
"profile": "https://github.com/swift2512",
"contributions": [
"bug"
]
},
{
"login": "DarrenRainey",
"name": "Darren Rainey",
"avatar_url": "https://avatars.githubusercontent.com/u/6136439?v=4",
"profile": "https://darrenraineys.co.uk",
"contributions": [
"code"
]
},
{
"login": "maciej-poleszczyk",
"name": "maciej-poleszczyk",
"avatar_url": "https://avatars.githubusercontent.com/u/133033121?v=4",
"profile": "https://github.com/maciej-poleszczyk",
"contributions": [
"code"
]
},
{
"login": "sgross-emlix",
"name": "Sebastian Groß",
"avatar_url": "https://avatars.githubusercontent.com/u/143394709?v=4",
"profile": "https://github.com/sgross-emlix",
"contributions": [
"code"
]
},
{
"login": "AnouarTouati",
"name": "Anouar Touati",
"avatar_url": "https://avatars.githubusercontent.com/u/41107778?v=4",
"profile": "https://github.com/AnouarTouati",
"contributions": [
"code"
]
},
{
"login": "aHVzY2g",
"name": "aHVzY2g",
"avatar_url": "https://avatars.githubusercontent.com/u/25596663?v=4",
"profile": "https://github.com/aHVzY2g",
"contributions": [
"code"
]
},
{
"login": "brlin-tw",
"name": "林博仁 Buo-ren Lin",
"avatar_url": "https://avatars.githubusercontent.com/u/13408130?v=4",
"profile": "https://brlin.me",
"contributions": [
"code"
]
}
]
}

View File

@@ -1,6 +1,8 @@
# --------------------------------------------
# REQUIRED: DB SETUP
# --------------------------------------------
# https://mariadb.com/kb/en/mariadb-server-docker-official-image-environment-variables/
MYSQL_DATABASE=snipeit
MYSQL_USER=snipeit
MYSQL_PASSWORD=changeme1234
@@ -9,7 +11,7 @@ MYSQL_ROOT_PASSWORD=changeme1234
# REQUIRED: BASIC APP SETTINGS
# --------------------------------------------
APP_ENV=develop
APP_DEBUG=false
APP_DEBUG=true
# please regenerate the APP_KEY value by calling `docker-compose run --rm snipeit bash` and then `php artisan key:generate --show` and then copy paste the value here
APP_KEY=base64:3ilviXqB9u6DX1NRcyWGJ+sjySF+H18CPDGb3+IVwMQ=
APP_URL=http://localhost:8000
@@ -156,7 +158,7 @@ RESET_PASSWORD_LINK_EXPIRES=900
# --------------------------------------------
# OPTIONAL: MISC
# --------------------------------------------
LOG_CHANNEL=stderr
LOG_CHANNEL=single
LOG_MAX_DAYS=10
APP_LOCKED=false
APP_CIPHER=AES-256-CBC

View File

@@ -1,7 +1,7 @@
# --------------------------------------------
# REQUIRED: DOCKER SPECIFIC SETTINGS
# --------------------------------------------
APP_VERSION=v6.4.1
APP_VERSION=
APP_PORT=8000
# --------------------------------------------
@@ -9,12 +9,12 @@ APP_PORT=8000
# --------------------------------------------
APP_ENV=production
APP_DEBUG=false
# Please regenerate the APP_KEY value by calling `docker compose run --rm snipeit php artisan key:generate --show`. Copy paste the value here
# Please regenerate the APP_KEY value by calling `docker compose run --rm app php artisan key:generate --show`. Copy paste the value here
APP_KEY=base64:3ilviXqB9u6DX1NRcyWGJ+sjySF+H18CPDGb3+IVwMQ=
APP_URL=http://localhost:8000
# https://en.wikipedia.org/wiki/List_of_tz_database_time_zones - TZ identifier
APP_TIMEZONE='UTC'
APP_LOCALE=en
APP_LOCALE=en-US
MAX_RESULTS=500
# --------------------------------------------
@@ -97,7 +97,7 @@ API_TOKEN_EXPIRATION_YEARS=40
# --------------------------------------------
# OPTIONAL: SECURITY HEADER SETTINGS
# --------------------------------------------
APP_TRUSTED_PROXIES=192.168.1.1,10.0.0.1,172.0.0.0/8
APP_TRUSTED_PROXIES=192.168.1.1,10.0.0.1,172.16.0.0/12
ALLOW_IFRAMING=false
REFERRER_POLICY=same-origin
ENABLE_CSP=false

View File

@@ -6,7 +6,7 @@ APP_DEBUG=false
APP_KEY=base64:hTUIUh9CP6dQx+6EjSlfWTgbaMaaRvlpEwk45vp+xmk=
APP_URL=http://127.0.0.1:8000
APP_TIMEZONE='US/Eastern'
APP_LOCALE=en
APP_LOCALE=en-US
APP_LOCKED=false
MAX_RESULTS=200

View File

@@ -32,6 +32,8 @@ DB_PREFIX=null
DB_DUMP_PATH='/usr/bin'
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci
DB_SANITIZE_BY_DEFAULT=false
# --------------------------------------------
# OPTIONAL: SSL DATABASE SETTINGS
@@ -78,6 +80,12 @@ MAIL_BACKUP_NOTIFICATION_ADDRESS=null
BACKUP_ENV=true
ALLOW_BACKUP_DELETE=false
ALLOW_DATA_PURGE=false
ALL_BACKUP_KEEP_DAYS=7
DAILY_BACKUP_KEEP_DAYS=16
WEEKLY_BACKUP_KEEP_WEEKS=8
MONTHLY_BACKUP_KEEP_MONTHS=4
YEARLY_BACKUP_KEEP_YEARS=2
BACKUP_PURGE_OLDEST_AT_MEGS=5000
# --------------------------------------------
# OPTIONAL: SESSION SETTINGS
@@ -87,6 +95,7 @@ SESSION_LIFETIME=12000
EXPIRE_ON_CLOSE=false
ENCRYPT=false
COOKIE_NAME=snipeit_session
PASSPORT_COOKIE_NAME='snipeit_passport_token'
COOKIE_DOMAIN=null
SECURE_COOKIES=false
API_TOKEN_EXPIRATION_YEARS=15

View File

@@ -1,38 +0,0 @@
#### Expected Behavior (or desired behavior if a feature request)
(what you expect to happen goes here)
-----
#### Actual Behavior
(what actually happens goes here)
-----
#### Please confirm you have done the following before posting your bug report:
- [ ] I have enabled debug mode
- [ ] I have read [checked the Common Issues page](https://snipe-it.readme.io/docs/common-issues)
-----
#### Provide answers to these questions:
- Is this a fresh install or an upgrade?
- Version of Snipe-IT you're running
- Version of PHP you're running
- Version of MySQL/MariaDB you're running
- What OS and web server you're running Snipe-IT on
- What method you used to install Snipe-IT (install.sh, manual installation, docker, etc)
- WITH DEBUG TURNED ON, if you're getting an error in your browser, include that error
- What specific Snipe-IT page you're on, and what specific element you're interacting with to trigger the error
- If a stacktrace is provided in the error, include that too.
- Any errors that appear in your browser's error console.
- Confirm whether the error is reproducible on the demo: https://snipeitapp.com/demo.
- Include any additional information you can find in `storage/logs` and your webserver's logs.
- Include what you've done so far in the installation, and if you got any error messages along the way.
- Indicate whether or not you've manually edited any data directly in the database
Please do not post an issue without answering the related questions above. If you have opened a different issue and already answered these questions, answer them again, once for every ticket. It will be next to impossible for us to help you.
https://snipe-it.readme.io/docs/getting-help

View File

@@ -1,129 +0,0 @@
name: Bug Report
description: Create a report to help us improve
body:
- type: checkboxes
attributes:
label: Debug mode
description: Please confirm you have done the following before posting your bug report
options:
- label: I have enabled debug mode
required: true
- label: I have read [checked the Common Issues page](https://snipe-it.readme.io/docs/common-issues)
required: true
- type: textarea
attributes:
label: Describe the bug
description: A clear and concise description of what the bug is.
validations:
required: true
- type: textarea
attributes:
label: Reproduction steps
description: Steps to reproduce the behavior.
value: |
1.
2.
3.
...
validations:
required: true
- type: textarea
attributes:
label: Expected behavior
description: A clear and concise description of what you expected to happen.
validations:
required: true
- type: textarea
attributes:
label: Screenshots
description: 'If applicable, add screenshots to help explain your problem.'
- type: markdown
attributes:
value: "### Server"
- type: input
attributes:
label: Snipe-IT Version
validations:
required: true
- type: input
id: server_operatingSystem
attributes:
label: Operating System
description: 'e.g. Ubuntu, Windows'
validations:
required: true
- type: input
attributes:
label: Web Server
description: 'e.g. Apache, IIS'
validations:
required: true
- type: input
attributes:
label: PHP Version
validations:
required: true
- type: markdown
attributes:
value: "### Desktop"
- type: input
id: desktop_operatingSystem
attributes:
label: Operating System
description: 'e.g. Ubuntu, Windows'
- type: input
id: desktop_browser
attributes:
label: Browser
description: 'e.g. Google Chrome, Safari'
- type: input
id: desktop_version
attributes:
label: Version
description: 'e.g. 93'
- type: markdown
attributes:
value: "### Mobile"
- type: input
attributes:
label: Device
description: 'e.g. iPhone 6, Pixel 4a'
- type: input
id: mobile_operatingSystem
attributes:
label: Operating System
description: 'e.g. iOS 8.1, Android 9'
- type: input
id: mobile_browser
attributes:
label: Browser
description: 'e.g. Google Chrome, Safari'
- type: input
id: mobile_version
attributes:
label: Version
description: 'e.g. 93'
- type: textarea
attributes:
label: Error messages
description: |
WITH DEBUG TURNED ON, if you're getting an error in your browser, include that error
If a stacktrace is provided in the error, include that too.
Any errors that appear in your browser's error console.
Confirm whether the error is reproducible on the demo: https://snipeitapp.com/demo.
Include any additional information you can find in `storage/logs` and your webserver's logs.
Include the output from `php -m` (this should display what modules you have enabled.)
render: shell
- type: textarea
attributes:
label: Additional context
description: |
Is this a fresh install or an upgrade?
What OS and web server you're running Snipe-IT on
What method you used to install Snipe-IT (install.sh, manual installation, docker, etc)
Include what you've done so far in the installation, and if you got any error messages along the way.
Indicate whether or not you've manually edited any data directly in the database
Add any other context about the problem here.
- type: markdown
attributes:
value: Please do not post an issue without answering the related questions above. If you have opened a different issue and already answered these questions, answer them again, once for every ticket. It will be next to impossible for us to help you.

View File

@@ -1 +0,0 @@
blank_issues_enabled: false

View File

@@ -1,25 +0,0 @@
name: Feature Request
description: Suggest an idea for this project
title: "[Feature Request]: "
labels: ["feature request"]
body:
- type: textarea
attributes:
label: Is your feature request related to a problem? Please describe.
description: A clear and concise description of what the problem is. The more information you can provide about your use-case, the more liklely we are to consider your feature.
validations:
required: true
- type: textarea
attributes:
label: Describe the solution you'd like
description: A clear and concise description of what you want to happen.
validations:
required: true
- type: textarea
attributes:
label: Describe alternatives you've considered
description: A clear and concise description of any alternative solutions or features you've considered.
- type: textarea
attributes:
label: Additional context
description: Add any other context or screenshots about the feature request here.

View File

@@ -1,40 +0,0 @@
# Description
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context, providing screenshots where practical. List any dependencies that are required for this change.
Fixes # (issue)
## Type of change
Please delete options that are not relevant.
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] This change requires a documentation update
# How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration
- [ ] Test A
- [ ] Test B
**Test Configuration**:
* PHP version:
* MySQL version
* Webserver version
* OS version
# Checklist:
- [ ] I have read the Contributing documentation available here: https://snipe-it.readme.io/docs/contributing-overview
- [ ] I have formatted this PR according to the project guidelines: https://snipe-it.readme.io/docs/contributing-overview#pull-request-guidelines
- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my feature works
- [ ] New and existing unit tests pass locally with my changes

43
.github/stale.yml vendored
View File

@@ -1,43 +0,0 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 60
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- pinned
- security
- :woman_technologist: ready for dev
- :moneybag: bounty
- :hand: bug
- "🔐 security"
- "👩‍💻 ready for dev"
- "💰 bounty"
- "✋ bug"
exemptMilestones: true
# Label to use when marking an issue as stale
staleLabel: stale
only: issues
# Comment to post when removing the stale label.
unmarkComment: >
Okay, it looks like this issue or feature request might still be important. We'll re-open
it for now. Thank you for letting us know!
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
Is this still relevant? We haven't heard from anyone in a bit. If so,
please comment with any updates or additional detail.
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Don't
take it personally, we just need to keep a handle on things. Thank you
for your contributions!
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: >
This issue has been automatically closed because it has not had
recent activity. If you believe this is still an issue, please confirm that
this issue is still happening in the most recent version of Snipe-IT and reply
to this thread to re-open it.

View File

@@ -1 +0,0 @@
memory_limit= 2048M

View File

@@ -1,7 +0,0 @@
# Configuration for weekly-digest - https://github.com/apps/weekly-digest
publishDay: sun
canPublishIssues: true
canPublishPullRequests: true
canPublishContributors: true
canPublishStargazers: true
canPublishCommits: true

40
.github/workflows/stale.yml vendored Normal file
View File

@@ -0,0 +1,40 @@
name: 'Close stale issues'
on:
schedule:
- cron: '30 1 * * *'
jobs:
stale:
runs-on: ubuntu-latest
permissions:
# contents: write # only for delete-branch option
issues: write
# pull-requests: write
steps:
- uses: actions/stale@v9
with:
debug-only: true
ascending: true
operations-per-run: 1000 # just while we're debugging
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 60
days-before-close: 7
exempt-all-milestones: true
stale-issue-message: >
Is this still relevant? We haven't heard from anyone in a bit. If so,
please comment with any updates or additional detail.
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Don't
take it personally, we just need to keep a handle on things. Thank you
for your contributions!
close-issue-message: >
This issue has been automatically closed because it has not had
recent activity. If you believe this is still an issue, please confirm that
this issue is still happening in the most recent version of Snipe-IT and reply
to this thread to re-open it.
# There doesn't seem to be a 'reopen issue message'?
# Since there is no 'stale-pr-message' - PR's should not be stale'd
stale-issue-label: stale
exempt-issue-labels: >
pinned,security,:woman_technologist: ready for dev,:moneybag: bounty,:hand: bug,🔐 security,👩‍💻 ready for dev,💰 bounty,✋ bug

View File

@@ -76,4 +76,4 @@ jobs:
DB_DATABASE: snipeit
DB_PORT: ${{ job.services.mysql.ports[3306] }}
DB_USERNAME: root
run: php artisan test --parallel
run: php artisan test

View File

@@ -74,4 +74,4 @@ jobs:
DB_PORT: ${{ job.services.postgresql.ports[5432] }}
DB_USERNAME: snipeit
DB_PASSWORD: password
run: php artisan test --parallel
run: php artisan test

View File

@@ -43,6 +43,9 @@ jobs:
cp -v .env.testing.example .env
cp -v .env.testing.example .env.testing
- name: Create database file
run: touch database/database.sqlite
- name: Install Dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
@@ -57,5 +60,5 @@ jobs:
- name: Execute tests (Unit and Feature tests) via PHPUnit
env:
DB_CONNECTION: sqlite_testing
run: php artisan test --parallel
DB_CONNECTION: sqlite
run: php artisan test

4
.gitignore vendored
View File

@@ -47,6 +47,7 @@ storage/private_uploads/users/*
tests/_data/scenarios
tests/_output/*
tests/_support/_generated/*
tests/coverage/*
/npm-debug.log
/storage/oauth-private.key
/storage/oauth-public.key
@@ -67,3 +68,6 @@ _ide_helper_models.php
/.phplint-cache
storage/ldap_client_tls.cert
storage/ldap_client_tls.key
/storage/framework/testing
/.phpunit.cache

View File

@@ -51,7 +51,9 @@ Thanks goes to all of these wonderful people ([emoji key](https://github.com/ken
| [<img src="https://avatars.githubusercontent.com/u/111287779?v=4" width="110px;"/><br /><sub>NojoudAlshehri</sub>](https://github.com/NojoudAlshehri)<br />[💻](https://github.com/snipe/snipe-it/commits?author=NojoudAlshehri "Code") | [<img src="https://avatars.githubusercontent.com/u/54367449?v=4" width="110px;"/><br /><sub>Stefan Stidl</sub>](https://github.com/stefanstidlffg)<br />[💻](https://github.com/snipe/snipe-it/commits?author=stefanstidlffg "Code") | [<img src="https://avatars.githubusercontent.com/u/87803479?v=4" width="110px;"/><br /><sub>Quentin Aymard</sub>](https://github.com/qay21)<br />[💻](https://github.com/snipe/snipe-it/commits?author=qay21 "Code") | [<img src="https://avatars.githubusercontent.com/u/5396871?v=4" width="110px;"/><br /><sub>Grant Le Roux</sub>](https://github.com/cram42)<br />[💻](https://github.com/snipe/snipe-it/commits?author=cram42 "Code") | [<img src="https://avatars.githubusercontent.com/u/58479551?v=4" width="110px;"/><br /><sub>Bogdan</sub>](http://@singrity)<br />[💻](https://github.com/snipe/snipe-it/commits?author=Singrity "Code") | [<img src="https://avatars.githubusercontent.com/u/3483684?v=4" width="110px;"/><br /><sub>mmanjos</sub>](https://github.com/mmanjos)<br />[💻](https://github.com/snipe/snipe-it/commits?author=mmanjos "Code") | [<img src="https://avatars.githubusercontent.com/u/7429229?v=4" width="110px;"/><br /><sub>Abdelaziz Faki</sub>](https://azooz2014.github.io/)<br />[💻](https://github.com/snipe/snipe-it/commits?author=Azooz2014 "Code") |
| [<img src="https://avatars.githubusercontent.com/u/47315739?v=4" width="110px;"/><br /><sub>bilias</sub>](https://github.com/bilias)<br />[💻](https://github.com/snipe/snipe-it/commits?author=bilias "Code") | [<img src="https://avatars.githubusercontent.com/u/2565989?v=4" width="110px;"/><br /><sub>coach1988</sub>](https://github.com/coach1988)<br />[💻](https://github.com/snipe/snipe-it/commits?author=coach1988 "Code") | [<img src="https://avatars.githubusercontent.com/u/11910225?v=4" width="110px;"/><br /><sub>MrM</sub>](https://github.com/mauro-miatello)<br />[💻](https://github.com/snipe/snipe-it/commits?author=mauro-miatello "Code") | [<img src="https://avatars.githubusercontent.com/u/60405354?v=4" width="110px;"/><br /><sub>koiakoia</sub>](https://github.com/koiakoia)<br />[💻](https://github.com/snipe/snipe-it/commits?author=koiakoia "Code") | [<img src="https://avatars.githubusercontent.com/u/5323832?v=4" width="110px;"/><br /><sub>Mustafa Online</sub>](https://github.com/mustafa-online)<br />[💻](https://github.com/snipe/snipe-it/commits?author=mustafa-online "Code") | [<img src="https://avatars.githubusercontent.com/u/104601439?v=4" width="110px;"/><br /><sub>franceslui</sub>](https://github.com/franceslui)<br />[💻](https://github.com/snipe/snipe-it/commits?author=franceslui "Code") | [<img src="https://avatars.githubusercontent.com/u/125313163?v=4" width="110px;"/><br /><sub>Q4kK</sub>](https://github.com/Q4kK)<br />[💻](https://github.com/snipe/snipe-it/commits?author=Q4kK "Code") |
| [<img src="https://avatars.githubusercontent.com/u/55590532?v=4" width="110px;"/><br /><sub>squintfox</sub>](https://github.com/squintfox)<br />[💻](https://github.com/snipe/snipe-it/commits?author=squintfox "Code") | [<img src="https://avatars.githubusercontent.com/u/1380084?v=4" width="110px;"/><br /><sub>Jeff Clay</sub>](https://github.com/jeffclay)<br />[💻](https://github.com/snipe/snipe-it/commits?author=jeffclay "Code") | [<img src="https://avatars.githubusercontent.com/u/52716446?v=4" width="110px;"/><br /><sub>Phil J R</sub>](https://github.com/PP-JN-RL)<br />[💻](https://github.com/snipe/snipe-it/commits?author=PP-JN-RL "Code") | [<img src="https://avatars.githubusercontent.com/u/1496725?v=4" width="110px;"/><br /><sub>i_virus</sub>](https://www.corelight.com/)<br />[💻](https://github.com/snipe/snipe-it/commits?author=chandanchowdhury "Code") | [<img src="https://avatars.githubusercontent.com/u/1020541?v=4" width="110px;"/><br /><sub>Paul Grime</sub>](https://github.com/gitgrimbo)<br />[💻](https://github.com/snipe/snipe-it/commits?author=gitgrimbo "Code") | [<img src="https://avatars.githubusercontent.com/u/922815?v=4" width="110px;"/><br /><sub>Lee Porte</sub>](https://leeporte.co.uk)<br />[💻](https://github.com/snipe/snipe-it/commits?author=LeePorte "Code") | [<img src="https://avatars.githubusercontent.com/u/23613427?v=4" width="110px;"/><br /><sub>BRYAN </sub>](https://github.com/bryanlopezinc)<br />[💻](https://github.com/snipe/snipe-it/commits?author=bryanlopezinc "Code") [⚠️](https://github.com/snipe/snipe-it/commits?author=bryanlopezinc "Tests") |
| [<img src="https://avatars.githubusercontent.com/u/64061710?v=4" width="110px;"/><br /><sub>U-H-T</sub>](https://github.com/U-H-T)<br />[💻](https://github.com/snipe/snipe-it/commits?author=U-H-T "Code") | [<img src="https://avatars.githubusercontent.com/u/5395363?v=4" width="110px;"/><br /><sub>Matt Tyree</sub>](https://github.com/Tyree)<br />[📖](https://github.com/snipe/snipe-it/commits?author=Tyree "Documentation") | [<img src="https://avatars.githubusercontent.com/u/292081?v=4" width="110px;"/><br /><sub>Florent Bervas</sub>](http://spoontux.net)<br />[💻](https://github.com/snipe/snipe-it/commits?author=FlorentDotMe "Code") | [<img src="https://avatars.githubusercontent.com/u/4498077?v=4" width="110px;"/><br /><sub>Daniel Albertsen</sub>](https://ditscheri.com)<br />[💻](https://github.com/snipe/snipe-it/commits?author=dbakan "Code") |
| [<img src="https://avatars.githubusercontent.com/u/64061710?v=4" width="110px;"/><br /><sub>U-H-T</sub>](https://github.com/U-H-T)<br />[💻](https://github.com/snipe/snipe-it/commits?author=U-H-T "Code") | [<img src="https://avatars.githubusercontent.com/u/5395363?v=4" width="110px;"/><br /><sub>Matt Tyree</sub>](https://github.com/Tyree)<br />[📖](https://github.com/snipe/snipe-it/commits?author=Tyree "Documentation") | [<img src="https://avatars.githubusercontent.com/u/292081?v=4" width="110px;"/><br /><sub>Florent Bervas</sub>](http://spoontux.net)<br />[💻](https://github.com/snipe/snipe-it/commits?author=FlorentDotMe "Code") | [<img src="https://avatars.githubusercontent.com/u/4498077?v=4" width="110px;"/><br /><sub>Daniel Albertsen</sub>](https://ditscheri.com)<br />[💻](https://github.com/snipe/snipe-it/commits?author=dbakan "Code") | [<img src="https://avatars.githubusercontent.com/u/100710244?v=4" width="110px;"/><br /><sub>r-xyz</sub>](https://github.com/r-xyz)<br />[💻](https://github.com/snipe/snipe-it/commits?author=r-xyz "Code") | [<img src="https://avatars.githubusercontent.com/u/47491036?v=4" width="110px;"/><br /><sub>Steven Mainor</sub>](https://github.com/DrekiDegga)<br />[💻](https://github.com/snipe/snipe-it/commits?author=DrekiDegga "Code") | [<img src="https://avatars.githubusercontent.com/u/65785975?v=4" width="110px;"/><br /><sub>arne-kroeger</sub>](https://github.com/arne-kroeger)<br />[💻](https://github.com/snipe/snipe-it/commits?author=arne-kroeger "Code") |
| [<img src="https://avatars.githubusercontent.com/u/167117705?v=4" width="110px;"/><br /><sub>Glukose1</sub>](https://github.com/Glukose1)<br />[💻](https://github.com/snipe/snipe-it/commits?author=Glukose1 "Code") | [<img src="https://avatars.githubusercontent.com/u/1197791?v=4" width="110px;"/><br /><sub>Scarzy</sub>](https://github.com/Scarzy)<br />[💻](https://github.com/snipe/snipe-it/commits?author=Scarzy "Code") | [<img src="https://avatars.githubusercontent.com/u/37372069?v=4" width="110px;"/><br /><sub>setpill</sub>](https://github.com/setpill)<br />[💻](https://github.com/snipe/snipe-it/commits?author=setpill "Code") | [<img src="https://avatars.githubusercontent.com/u/3755203?v=4" width="110px;"/><br /><sub>swift2512</sub>](https://github.com/swift2512)<br />[🐛](https://github.com/snipe/snipe-it/issues?q=author%3Aswift2512 "Bug reports") | [<img src="https://avatars.githubusercontent.com/u/6136439?v=4" width="110px;"/><br /><sub>Darren Rainey</sub>](https://darrenraineys.co.uk)<br />[💻](https://github.com/snipe/snipe-it/commits?author=DarrenRainey "Code") | [<img src="https://avatars.githubusercontent.com/u/133033121?v=4" width="110px;"/><br /><sub>maciej-poleszczyk</sub>](https://github.com/maciej-poleszczyk)<br />[💻](https://github.com/snipe/snipe-it/commits?author=maciej-poleszczyk "Code") | [<img src="https://avatars.githubusercontent.com/u/143394709?v=4" width="110px;"/><br /><sub>Sebastian Groß</sub>](https://github.com/sgross-emlix)<br />[💻](https://github.com/snipe/snipe-it/commits?author=sgross-emlix "Code") |
| [<img src="https://avatars.githubusercontent.com/u/41107778?v=4" width="110px;"/><br /><sub>Anouar Touati</sub>](https://github.com/AnouarTouati)<br />[💻](https://github.com/snipe/snipe-it/commits?author=AnouarTouati "Code") | [<img src="https://avatars.githubusercontent.com/u/25596663?v=4" width="110px;"/><br /><sub>aHVzY2g</sub>](https://github.com/aHVzY2g)<br />[💻](https://github.com/snipe/snipe-it/commits?author=aHVzY2g "Code") | [<img src="https://avatars.githubusercontent.com/u/13408130?v=4" width="110px;"/><br /><sub>林博仁 Buo-ren Lin</sub>](https://brlin.me)<br />[💻](https://github.com/snipe/snipe-it/commits?author=brlin-tw "Code") |
<!-- ALL-CONTRIBUTORS-LIST:END -->
This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!

View File

@@ -1,35 +1,35 @@
FROM alpine:3.18.6
FROM alpine:3.19
# Apache + PHP
RUN apk add --no-cache \
apache2 \
php81 \
php81-common \
php81-apache2 \
php81-curl \
php81-ldap \
php81-mysqli \
php81-gd \
php81-xml \
php81-mbstring \
php81-zip \
php81-ctype \
php81-tokenizer \
php81-pdo_mysql \
php81-openssl \
php81-bcmath \
php81-phar \
php81-json \
php81-iconv \
php81-fileinfo \
php81-simplexml \
php81-session \
php81-dom \
php81-xmlwriter \
php81-xmlreader \
php81-sodium \
php81-redis \
php81-pecl-memcached \
php81-exif \
php82 \
php82-common \
php82-apache2 \
php82-curl \
php82-ldap \
php82-mysqli \
php82-gd \
php82-xml \
php82-mbstring \
php82-zip \
php82-ctype \
php82-tokenizer \
php82-pdo_mysql \
php82-openssl \
php82-bcmath \
php82-phar \
php82-json \
php82-iconv \
php82-fileinfo \
php82-simplexml \
php82-session \
php82-dom \
php82-xmlwriter \
php82-xmlreader \
php82-sodium \
php82-redis \
php82-pecl-memcached \
php82-exif \
curl \
wget \
vim \
@@ -42,7 +42,7 @@ COPY docker/column-statistics.cnf /etc/mysql/conf.d/column-statistics.cnf
# Where apache's PID lives
RUN mkdir -p /run/apache2 && chown apache:apache /run/apache2
RUN sed -i 's/variables_order = .*/variables_order = "EGPCS"/' /etc/php81/php.ini
RUN sed -i 's/variables_order = .*/variables_order = "EGPCS"/' /etc/php82/php.ini
COPY docker/000-default-2.4.conf /etc/apache2/conf.d/default.conf
# Enable mod_rewrite
@@ -73,18 +73,18 @@ RUN mkdir -p /var/www/.composer && chown apache /var/www/.composer
# Install dependencies
USER apache
RUN COMPOSER_CACHE_DIR=/dev/null composer install --no-dev --working-dir=/var/www/html
RUN COMPOSER_CACHE_DIR=/dev/null composer install --working-dir=/var/www/html
USER root
VOLUME ["/var/lib/snipeit"]
# Entrypoints
COPY docker/entrypoint_alpine.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
# Startup script
COPY docker/startup_alpine.sh /startup.sh
RUN chmod +x /startup.sh
ENTRYPOINT ["/sbin/tini", "--"]
CMD ["/entrypoint.sh"]
CMD ["/startup.sh"]
EXPOSE 80

View File

@@ -97,7 +97,7 @@ RUN set -eux; \
VOLUME [ "/var/lib/snipeit" ]
COPY --chown=www-data:www-data docker/docker-secrets.env /var/www/html/.env
COPY --chmod=655 docker/docker-entrypoint.sh /usr/local/bin/docker-snipeit-entrypoint
COPY --chmod=655 docker/startup_alpine_fpm.sh /startup.sh
COPY docker/column-statistics.cnf /etc/mysql/conf.d/column-statistics.cnf
ENTRYPOINT [ "/usr/local/bin/docker-snipeit-entrypoint" ]
CMD [ "/usr/local/bin/docker-php-entrypoint", "php-fpm" ]
ENTRYPOINT [ "/startup.sh" ]
CMD [ "/startup.sh", "php-fpm" ]

View File

@@ -1,6 +1,6 @@
![snipe-it-by-grok](https://github.com/snipe/snipe-it/assets/197404/b515673b-c7c8-4d9a-80f5-9fa58829a602)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/snipe-it/localized.svg)](https://crowdin.com/project/snipe-it) [![Docker Pulls](https://img.shields.io/docker/pulls/snipe/snipe-it.svg)](https://hub.docker.com/r/snipe/snipe-it/) [![Twitter Follow](https://img.shields.io/twitter/follow/snipeitapp.svg?style=social)](https://twitter.com/snipeitapp) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/553ce52037fc43ea99149785afcfe641)](https://app.codacy.com/gh/snipe/snipe-it/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade) [![Tests](https://github.com/snipe/snipe-it/actions/workflows/tests.yml/badge.svg)](https://github.com/snipe/snipe-it/actions/workflows/tests.yml)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/snipe-it/localized.svg)](https://crowdin.com/project/snipe-it) [![Docker Pulls](https://img.shields.io/docker/pulls/snipe/snipe-it.svg)](https://hub.docker.com/r/snipe/snipe-it/) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/553ce52037fc43ea99149785afcfe641)](https://app.codacy.com/gh/snipe/snipe-it/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade) [![Tests](https://github.com/snipe/snipe-it/actions/workflows/tests.yml/badge.svg)](https://github.com/snipe/snipe-it/actions/workflows/tests.yml)
[![All Contributors](https://img.shields.io/badge/all_contributors-331-orange.svg?style=flat-square)](#contributing) [![Discord](https://badgen.net/badge/icon/discord?icon=discord&label)](https://discord.gg/yZFtShAcKk)
## Snipe-IT - Open Source Asset Management System
@@ -14,6 +14,21 @@ Snipe-IT is actively developed and we [release quite frequently](https://github.
> [!TIP]
> __This is web-based software__. This means there is no executable file (aka no .exe files), and it must be run on a web server and accessed through a web browser. It runs on any Mac OSX, any flavor of Linux, as well as Windows, and we have a [Docker image](https://snipe-it.readme.io/docs/docker) available if that's what you're into.
-----
### Table of Contents
* [Installation](#installation)
* [User's Manual](#users-manual)
* [Bug Reports & Feature Requests](#bug-reports--feature-requests)
* [Security](#security)
* [Upgrading](#upgrading)
* [Translations!](#translations-)
* [Libraries, Modules & Related Projects](#libraries-modules--related-projects)
* [Join the Community!](#join-the-community)
* [Contributing](#contributing)
* [Announcement List](#announcement-list)
-----
### Installation
@@ -22,8 +37,6 @@ For instructions on installing and configuring Snipe-IT on your server, check ou
If you're having trouble with the installation, please check the [Common Issues](https://snipe-it.readme.io/docs/common-issues) and [Getting Help](https://snipe-it.readme.io/docs/getting-help) documentation, and search this repository's open *and* closed issues for help.
<!-- [![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy) -->
-----
### User's Manual
For help using Snipe-IT, check out the [user's manual](https://snipe-it.readme.io/docs/overview).
@@ -35,20 +48,21 @@ Feel free to check out the [GitHub Issues for this project](https://github.com/s
> [!IMPORTANT]
> **PLEASE see the [Getting Help Guidelines](https://snipe-it.readme.io/docs/getting-help) and [Common Issues](https://snipe-it.readme.io/docs/common-issues) before opening a ticket, and be sure to complete all of the questions in the Github Issue template to help us to help you as quickly as possible.**
>
-----
### Security
> [!IMPORTANT]
> **To report a security vulnerability, please email security@snipeitapp.com instead of using the issue tracker.**
-----
### Upgrading
Please see the [upgrading documentation](https://snipe-it.readme.io/docs/upgrading) for instructions on upgrading Snipe-IT.
------
### Announcement List
To be notified of important news (such as new releases, security advisories, etc), [sign up for our list](http://eepurl.com/XyZKz). We'll never sell or give away your info, and we'll only email you when it's important.
------
### Translations!
Please see the [translations documentation](https://snipe-it.readme.io/docs/translations) for information about available languages and how to add translations to Snipe-IT.
@@ -72,28 +86,43 @@ Since the release of the JSON REST API, several third-party developers have been
- [Snipe-IT plugin for Jira Service Desk](https://marketplace.atlassian.com/apps/1220964/snipe-it-for-jira)
- [Python 3 CSV importer](https://github.com/gastamper/snipeit-csvimporter) - allows importing assets into Snipe-IT based on Item Name rather than Asset Tag.
- [Snipe-IT Kubernetes Helm Chart](https://github.com/t3n/helm-charts/tree/master/snipeit) - For more information, [click here](https://hub.helm.sh/charts/t3n/snipeit).
- [Snipe-IT Bulk Edit](https://github.com/bricelabelle/snipe-it-bulkedit) - Google Script files to use Google Sheets as a bulk checkout/checkin/edit tool for Snipe-it.
- [MosyleSnipeSync](https://github.com/RodneyLeeBrands/MosyleSnipeSync) by [@Karpadiem](https://github.com/Karpadiem) - Python script to synchronize information between Mosyle and Snipe-IT
- [Snipe-IT Bulk Edit](https://github.com/bricelabelle/snipe-it-bulkedit) - Google Script files to use Google Sheets as a bulk checkout/checkin/edit tool for Snipe-IT.
- [MosyleSnipeSync](https://github.com/RodneyLeeBrands/MosyleSnipeSync) by [@Karpadiem](https://github.com/Karpadiem) - Python script to synchronize information between Mosyle and Snipe-IT.
- [WWW::SnipeIT](https://github.com/SEDC/perl-www-snipeit) by [@SEDC](https://github.com/SEDC) - perl module for accessing the API
- [UniFi to Snipe-IT](https://github.com/RodneyLeeBrands/UnifiSnipeSync) by [@karpadiem](https://github.com/karpadiem) - Python script that synchronizes UniFi devices with Snipe-IT.
- [Kandji2Snipe](https://github.com/grokability/kandji2snipe) by [@briangoldstein](https://github.com/briangoldstein) - Python script that synchronizes Kandji with Snipe-IT.
- [SnipeAgent](https://github.com/ReticentRobot/SnipeAgent) by @ReticentRobot - Windows agent for Snipe-IT
- [SnipeAgent](https://github.com/ReticentRobot/SnipeAgent) by [@ReticentRobot](https://github.com/ReticentRobot) - Windows agent for Snipe-IT.
- [Gate Pass Generator](https://github.com/cha7uraAE/snipe-it-gate-pass-system) by [@cha7uraAE](https://github.com/cha7uraAE) - A Streamlit application for generating gate passes based on hardware data from a Snipe-IT API.
-----
### Join the Community!
- **[Join our Discord](https://discord.gg/yZFtShAcKk)!** Its full of great people. We even wrote about it [here](https://grokstar.dev/culture/2024/06/the-unlikely-rise-of-discord-as-a-support-channel/)!
- **Follow us on Bluesky** at [@snipeitapp.com](https://bsky.app/profile/snipeitapp.com)
- **Follow us on Mastodon** at [hachyderm.io/@grokability](https://hachyderm.io/@grokability)
- **Follow our blog** at [Grokstar.Dev](https://grokstar.dev)
- **Subscribe here** on Github for notifications about new releases. (We recommend selecting "Releases" only for most users - this repo can get noisy.)
-----
### Contributing
Please see the documentation on [contributing and developing for Snipe-IT](https://snipe-it.readme.io/docs/contributing-overview).
**Please refrain from submitting issues or pull requests generated by fully-automated tools. Maintainers reserve the right, at their sole discretion, to close such submissions and to block any account responsible for them.**
Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms.
Contributions should follow from a human-to-human discussion in the form of an issue for the best chances of being merged into the core project. (Sometimes we might already be working on that feature, sometimes we've decided against )
Please see the complete documentation on [contributing and developing for Snipe-IT](https://snipe-it.readme.io/docs/contributing-overview).
This project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms.
The ERD is available [online here](https://drawsql.app/templates/snipe-it).
[Here is a list](CONTRIBUTORS.md) of the wonderful people that have contributed to the Snipe-IT.
Be sure to check out all of the [amazing people](CONTRIBUTORS.md) that have contributed to Snipe-IT over the years!
-----
------
### Announcement List
To be notified of important news (such as new releases, security advisories, etc), [sign up for our list](http://eepurl.com/XyZKz). We'll never sell or give away your info, and we'll only email you when it's important.
### Security
> [!IMPORTANT]
> **To report a security vulnerability, please email security@snipeitapp.com instead of using the issue tracker.**

View File

@@ -10,10 +10,12 @@ however there are times when library dependencies and/or PHP/MySQL dependencies
make it impossible to backport security fixes on older versions.
| Version | Supported |
| ------- | ------------------ |
| 5.1.x | :white_check_mark: |
|---------| ------------------ |
| 7.x | :white_check_mark: |
| 6.x | :x: |
| 5.1.x | :x: |
| 5.0.x | :x: |
| 4.0.x | :white_check_mark: |
| 4.0.x | :x: |
| < 4.0 | :x: |
## Reporting a Vulnerability

View File

@@ -20,7 +20,7 @@ APP_DEBUG=true
APP_KEY=base64:glJpcM7BYwWiBggp3SQ/+NlRkqsBQMaGEOjemXqJzOU=
APP_URL=http://localhost:8000
APP_TIMEZONE='UTC'
APP_LOCALE=en
APP_LOCALE=en-US
# --------------------------------------------
# REQUIRED: DATABASE SETTINGS

View File

@@ -0,0 +1,66 @@
<?php
namespace App\Console\Commands;
use App\Models\Asset;
use Illuminate\Console\Command;
class FixupAssignedToWithoutAssignedType extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'snipeit:assigned-to-fixup
{--debug : Display debugging output}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Fixes up assets that have an assigned_to but no assigned_type';
/**
* Execute the console command.
*/
public function handle()
{
$assets = Asset::whereNull("assigned_type")->whereNotNull("assigned_to")->withTrashed();
$this->withProgressBar($assets->get(), function (Asset $asset) {
//now check each action log, from the most recent backwards, to find the last checkin or checkout
foreach($asset->log()->orderBy("id","desc")->get() as $action_log) {
if($this->option("debug")) {
$this->info("Asset id: " . $asset->id . " action log, action type is: " . $action_log->action_type);
}
switch($action_log->action_type) {
case 'checkin from':
if($this->option("debug")) {
$this->info("Doing a checkin for ".$asset->id);
}
$asset->assigned_to = null;
// if you have a required custom field, we still want to save, and we *don't* want an action_log
$asset->saveQuietly();
return;
case 'checkout':
if($this->option("debug")) {
$this->info("Doing a checkout for " . $asset->id . " picking target type: " . $action_log->target_type);
}
if($asset->assigned_to != $action_log->target_id) {
$this->error("Asset's assigned_to does *NOT* match Action Log's target_id. \$asset->assigned_to=".$asset->assigned_to." vs. \$action_log->target_id=".$action_log->target_id);
//FIXME - do we abort here? Do we try to keep looking? I don't know, this means your data is *really* messed up...
}
$asset->assigned_type = $action_log->target_type;
$asset->saveQuietly(); // see above
return;
}
}
$asset->assigned_to = null; //asset was never checked in or out in its lifetime - it stays 'checked in'
$asset->saveQuietly(); //see above
});
$this->newLine();
$this->info("Assets assigned_type are fixed");
}
}

312
app/Console/Commands/LdapSync.php Executable file → Normal file
View File

@@ -2,6 +2,7 @@
namespace App\Console\Commands;
use App\Models\Asset;
use App\Models\Department;
use App\Models\Group;
use Illuminate\Console\Command;
@@ -53,18 +54,22 @@ class LdapSync extends Command
ini_set('max_execution_time', env('LDAP_TIME_LIM', 600)); //600 seconds = 10 minutes
ini_set('memory_limit', env('LDAP_MEM_LIM', '500M'));
$ldap_result_username = Setting::getSettings()->ldap_username_field;
$ldap_result_last_name = Setting::getSettings()->ldap_lname_field;
$ldap_result_first_name = Setting::getSettings()->ldap_fname_field;
$ldap_result_active_flag = Setting::getSettings()->ldap_active_flag;
$ldap_result_emp_num = Setting::getSettings()->ldap_emp_num;
$ldap_result_email = Setting::getSettings()->ldap_email;
$ldap_result_phone = Setting::getSettings()->ldap_phone_field;
$ldap_result_jobtitle = Setting::getSettings()->ldap_jobtitle;
$ldap_result_country = Setting::getSettings()->ldap_country;
$ldap_result_location = Setting::getSettings()->ldap_location;
$ldap_result_dept = Setting::getSettings()->ldap_dept;
$ldap_result_manager = Setting::getSettings()->ldap_manager;
$ldap_map = [
"username" => Setting::getSettings()->ldap_username_field,
"last_name" => Setting::getSettings()->ldap_lname_field,
"first_name" => Setting::getSettings()->ldap_fname_field,
"active_flag" => Setting::getSettings()->ldap_active_flag,
"emp_num" => Setting::getSettings()->ldap_emp_num,
"email" => Setting::getSettings()->ldap_email,
"phone" => Setting::getSettings()->ldap_phone_field,
"jobtitle" => Setting::getSettings()->ldap_jobtitle,
"country" => Setting::getSettings()->ldap_country,
"location" => Setting::getSettings()->ldap_location,
"dept" => Setting::getSettings()->ldap_dept,
"manager" => Setting::getSettings()->ldap_manager,
];
$ldap_default_group = Setting::getSettings()->ldap_default_group;
$search_base = Setting::getSettings()->ldap_base_dn;
@@ -107,14 +112,21 @@ class LdapSync extends Command
}
/**
* If a filter has been specified, use that
* If a filter has been specified, use that, otherwise default to null
*/
if ($this->option('filter') != '') {
$results = Ldap::findLdapUsers($search_base, -1, $this->option('filter'));
$filter = $this->option('filter');
} else {
$results = Ldap::findLdapUsers($search_base);
$filter = null;
}
/**
* We only need to request the LDAP attributes that we process
*/
$attributes = array_values(array_filter($ldap_map));
$results = Ldap::findLdapUsers($search_base, -1, $filter, $attributes);
} catch (\Exception $e) {
if ($this->option('json_summary')) {
$json_summary = ['error' => true, 'error_message' => $e->getMessage(), 'summary' => []];
@@ -126,23 +138,24 @@ class LdapSync extends Command
}
/* Determine which location to assign users to by default. */
$location = null; // TODO - this would be better called "$default_location", which is more explicit about its purpose
$default_location = null;
if ($this->option('location') != '') {
if ($location = Location::where('name', '=', $this->option('location'))->first()) {
if ($default_location = Location::where('name', '=', $this->option('location'))->first()) {
Log::debug('Location name ' . $this->option('location') . ' passed');
Log::debug('Importing to ' . $location->name . ' (' . $location->id . ')');
Log::debug('Importing to '.$default_location->name.' ('.$default_location->id.')');
}
} elseif ($this->option('location_id')) {
//TODO - figure out how or why this is an array?
foreach($this->option('location_id') as $location_id) {
if ($location = Location::where('id', '=', $location_id)->first()) {
if ($default_location = Location::where('id', '=', $location_id)->first()) {
Log::debug('Location ID ' . $location_id . ' passed');
Log::debug('Importing to ' . $location->name . ' (' . $location->id . ')');
Log::debug('Importing to '.$default_location->name.' ('.$default_location->id.')');
}
}
}
if (! isset($location)) {
if (!isset($default_location)) {
Log::debug('That location is invalid or a location was not provided, so no location will be assigned by default.');
}
@@ -183,17 +196,17 @@ class LdapSync extends Command
}
$usernames = [];
for ($i = 0; $i < $location_users['count']; $i++) {
if (array_key_exists($ldap_result_username, $location_users[$i])) {
if (array_key_exists($ldap_map["username"], $location_users[$i])) {
$location_users[$i]['ldap_location_override'] = true;
$location_users[$i]['location_id'] = $ldap_loc['id'];
$usernames[] = $location_users[$i][$ldap_result_username][0];
$usernames[] = $location_users[$i][$ldap_map["username"]][0];
}
}
// Delete located users from the general group.
foreach ($results as $key => $generic_entry) {
if ((is_array($generic_entry)) && (array_key_exists($ldap_result_username, $generic_entry))) {
if (in_array($generic_entry[$ldap_result_username][0], $usernames)) {
if ((is_array($generic_entry)) && (array_key_exists($ldap_map["username"], $generic_entry))) {
if (in_array($generic_entry[$ldap_map["username"]][0], $usernames)) {
unset($results[$key]);
}
}
@@ -218,77 +231,78 @@ class LdapSync extends Command
for ($i = 0; $i < $results['count']; $i++) {
$item = [];
$item['username'] = $results[$i][$ldap_result_username][0] ?? '';
$item['employee_number'] = $results[$i][$ldap_result_emp_num][0] ?? '';
$item['lastname'] = $results[$i][$ldap_result_last_name][0] ?? '';
$item['firstname'] = $results[$i][$ldap_result_first_name][0] ?? '';
$item['email'] = $results[$i][$ldap_result_email][0] ?? '';
$item['ldap_location_override'] = $results[$i]['ldap_location_override'] ?? '';
$item['location_id'] = $results[$i]['location_id'] ?? '';
$item['telephone'] = $results[$i][$ldap_result_phone][0] ?? '';
$item['jobtitle'] = $results[$i][$ldap_result_jobtitle][0] ?? '';
$item['country'] = $results[$i][$ldap_result_country][0] ?? '';
$item['department'] = $results[$i][$ldap_result_dept][0] ?? '';
$item['manager'] = $results[$i][$ldap_result_manager][0] ?? '';
$item['location'] = $results[$i][$ldap_result_location][0] ?? '';
$item = [];
$item['username'] = $results[$i][$ldap_map["username"]][0] ?? '';
$item['employee_number'] = $results[$i][$ldap_map["emp_num"]][0] ?? '';
$item['lastname'] = $results[$i][$ldap_map["last_name"]][0] ?? '';
$item['firstname'] = $results[$i][$ldap_map["first_name"]][0] ?? '';
$item['email'] = $results[$i][$ldap_map["email"]][0] ?? '';
$item['ldap_location_override'] = $results[$i]['ldap_location_override'] ?? '';
$item['location_id'] = $results[$i]['location_id'] ?? '';
$item['telephone'] = $results[$i][$ldap_map["phone"]][0] ?? '';
$item['jobtitle'] = $results[$i][$ldap_map["jobtitle"]][0] ?? '';
$item['country'] = $results[$i][$ldap_map["country"]][0] ?? '';
$item['department'] = $results[$i][$ldap_map["dept"]][0] ?? '';
$item['manager'] = $results[$i][$ldap_map["manager"]][0] ?? '';
$item['location'] = $results[$i][$ldap_map["location"]][0] ?? '';
$location = $default_location; //initially, set '$location' to the default_location (which may just be `null`)
// ONLY if you are using the "ldap_location" option *AND* you have an actual result
if ($ldap_result_location && $item['location']) {
$location = Location::firstOrCreate([
'name' => $item['location'],
]);
}
$department = Department::firstOrCreate([
'name' => $item['department'],
// ONLY if you are using the "ldap_location" option *AND* you have an actual result
if ($ldap_map["location"] && $item['location']) {
$location = Location::firstOrCreate([
'name' => $item['location'],
]);
}
$department = Department::firstOrCreate([
'name' => $item['department'],
]);
$user = User::where('username', $item['username'])->first();
if ($user) {
// Updating an existing user.
$item['createorupdate'] = 'updated';
} else {
// Creating a new user.
$user = new User;
$user->password = $user->noPassword();
$user->locale = app()->getLocale();
$user->activated = 1; // newly created users can log in by default, unless AD's UAC is in use, or an active flag is set (below)
$item['createorupdate'] = 'created';
}
$user = User::where('username', $item['username'])->first();
if ($user) {
// Updating an existing user.
$item['createorupdate'] = 'updated';
} else {
// Creating a new user.
$user = new User;
$user->password = $user->noPassword();
$user->locale = app()->getLocale();
$user->activated = 1; // newly created users can log in by default, unless AD's UAC is in use, or an active flag is set (below)
$item['createorupdate'] = 'created';
}
//If a sync option is not filled in on the LDAP settings don't populate the user field
if($ldap_result_username != null){
if($ldap_map["username"] != null){
$user->username = $item['username'];
}
if($ldap_result_last_name != null){
if($ldap_map["last_name"] != null){
$user->last_name = $item['lastname'];
}
if($ldap_result_first_name != null){
if($ldap_map["first_name"] != null){
$user->first_name = $item['firstname'];
}
if($ldap_result_emp_num != null){
if($ldap_map["emp_num"] != null){
$user->employee_num = e($item['employee_number']);
}
if($ldap_result_email != null){
if($ldap_map["email"] != null){
$user->email = $item['email'];
}
if($ldap_result_phone != null){
if($ldap_map["phone"] != null){
$user->phone = $item['telephone'];
}
if($ldap_result_jobtitle != null){
if($ldap_map["jobtitle"] != null){
$user->jobtitle = $item['jobtitle'];
}
if($ldap_result_country != null){
if($ldap_map["country"] != null){
$user->country = $item['country'];
}
if($ldap_result_dept != null){
if($ldap_map["dept"] != null){
$user->department_id = $department->id;
}
if($ldap_result_location != null){
$user->location_id = $location ? $location->id : null;
if($ldap_map["location"] != null){
$user->location_id = $location?->id;
}
if($ldap_result_manager != null){
if($ldap_map["manager"] != null){
if($item['manager'] != null) {
// Check Cache first
if (isset($manager_cache[$item['manager']])) {
@@ -305,63 +319,70 @@ class LdapSync extends Command
$ldap_manager = [
"count" => 1,
0 => [
$ldap_result_username => [$item['manager']]
$ldap_map["username"] => [$item['manager']]
]
];
}
$add_manager_to_cache = true;
if ($ldap_manager["count"] > 0) {
try {
// Get the Manager's username
// PHP LDAP returns every LDAP attribute as an array, and 90% of the time it's an array of just one item. But, hey, it's an array.
$ldapManagerUsername = $ldap_manager[0][$ldap_map["username"]][0];
// Get the Manager's username
// PHP LDAP returns every LDAP attribute as an array, and 90% of the time it's an array of just one item. But, hey, it's an array.
$ldapManagerUsername = $ldap_manager[0][$ldap_result_username][0];
// Get User from Manager username.
$ldap_manager = User::where('username', $ldapManagerUsername)->first();
// Get User from Manager username.
$ldap_manager = User::where('username', $ldapManagerUsername)->first();
if ($ldap_manager && isset($ldap_manager->id)) {
// Link user to manager id.
$user->manager_id = $ldap_manager->id;
if ($ldap_manager && isset($ldap_manager->id)) {
// Link user to manager id.
$user->manager_id = $ldap_manager->id;
}
} catch (\Exception $e) {
$add_manager_to_cache = false;
\Log::warning('Handling ldap manager ' . $item['manager'] . ' caused an exception: ' . $e->getMessage() . '. Continuing synchronization.');
}
}
$manager_cache[$item['manager']] = $ldap_manager && isset($ldap_manager->id) ? $ldap_manager->id : null; // Store results in cache, even if 'failed'
if ($add_manager_to_cache) {
$manager_cache[$item['manager']] = $ldap_manager && isset($ldap_manager->id) ? $ldap_manager->id : null; // Store results in cache, even if 'failed'
}
}
}
}
// Sync activated state for Active Directory.
if ( !empty($ldap_result_active_flag)) { // IF we have an 'active' flag set....
// ....then *most* things that are truthy will activate the user. Anything falsey will deactivate them.
// (Specifically, we don't handle a value of '0.0' correctly)
$raw_value = @$results[$i][$ldap_result_active_flag][0];
$filter_var = filter_var($raw_value, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
$boolean_cast = (bool)$raw_value;
// Sync activated state for Active Directory.
if (!empty($ldap_map["active_flag"])) { // IF we have an 'active' flag set....
// ....then *most* things that are truthy will activate the user. Anything falsey will deactivate them.
// (Specifically, we don't handle a value of '0.0' correctly)
$raw_value = @$results[$i][$ldap_map["active_flag"]][0];
$filter_var = filter_var($raw_value, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
$boolean_cast = (bool) $raw_value;
$user->activated = $filter_var ?? $boolean_cast; // if filter_var() was true or false, use that. If it's null, use the $boolean_cast
$user->activated = $filter_var ?? $boolean_cast; // if filter_var() was true or false, use that. If it's null, use the $boolean_cast
} elseif (array_key_exists('useraccountcontrol', $results[$i]) ) {
// ....otherwise, (ie if no 'active' LDAP flag is defined), IF the UAC setting exists,
// ....then use the UAC setting on the account to determine can-log-in vs. cannot-log-in
} elseif (array_key_exists('useraccountcontrol', $results[$i])) {
// ....otherwise, (ie if no 'active' LDAP flag is defined), IF the UAC setting exists,
// ....then use the UAC setting on the account to determine can-log-in vs. cannot-log-in
/* The following is _probably_ the correct logic, but we can't use it because
some users may have been dependent upon the previous behavior, and this
could cause additional access to be available to users they don't want
to allow to log in.
/* The following is _probably_ the correct logic, but we can't use it because
some users may have been dependent upon the previous behavior, and this
could cause additional access to be available to users they don't want
to allow to log in.
$useraccountcontrol = $results[$i]['useraccountcontrol'][0];
if(
// based on MS docs at: https://support.microsoft.com/en-us/help/305144/how-to-use-useraccountcontrol-to-manipulate-user-account-properties
($useraccountcontrol & 0x200) && // is a NORMAL_ACCOUNT
!($useraccountcontrol & 0x02) && // *and* _not_ ACCOUNTDISABLE
!($useraccountcontrol & 0x10) // *and* _not_ LOCKOUT
) {
$user->activated = 1;
} else {
$user->activated = 0;
} */
$enabled_accounts = [
$useraccountcontrol = $results[$i]['useraccountcontrol'][0];
if(
// based on MS docs at: https://support.microsoft.com/en-us/help/305144/how-to-use-useraccountcontrol-to-manipulate-user-account-properties
($useraccountcontrol & 0x200) && // is a NORMAL_ACCOUNT
!($useraccountcontrol & 0x02) && // *and* _not_ ACCOUNTDISABLE
!($useraccountcontrol & 0x10) // *and* _not_ LOCKOUT
) {
$user->activated = 1;
} else {
$user->activated = 0;
} */
$enabled_accounts = [
'512', // 0x200 NORMAL_ACCOUNT
'544', // 0x220 NORMAL_ACCOUNT, PASSWD_NOTREQD
'66048', // 0x10200 NORMAL_ACCOUNT, DONT_EXPIRE_PASSWORD
@@ -374,44 +395,55 @@ class LdapSync extends Command
'4260352', // 0x410200 NORMAL_ACCOUNT, DONT_EXPIRE_PASSWORD, DONT_REQ_PREAUTH
'1049088', // 0x100200 NORMAL_ACCOUNT, NOT_DELEGATED
'1114624', // 0x110200 NORMAL_ACCOUNT, DONT_EXPIRE_PASSWORD, NOT_DELEGATED,
];
$user->activated = (in_array($results[$i]['useraccountcontrol'][0], $enabled_accounts)) ? 1 : 0;
];
$user->activated = (in_array($results[$i]['useraccountcontrol'][0], $enabled_accounts)) ? 1 : 0;
// If we're not using AD, and there isn't an activated flag set, activate all users
} /* implied 'else' here - leave the $user->activated flag alone. Newly-created accounts will be active.
already-existing accounts will be however the administrator has set them */
} /* implied 'else' here - leave the $user->activated flag alone. Newly-created accounts will be active.
already-existing accounts will be however the administrator has set them */
if ($item['ldap_location_override'] == true) {
$user->location_id = $item['location_id'];
} elseif ((isset($location)) && (! empty($location))) {
if ((is_array($location)) && (array_key_exists('id', $location))) {
$user->location_id = $location['id'];
} elseif (is_object($location)) {
$user->location_id = $location->id;
if ($item['ldap_location_override'] == true) {
$user->location_id = $item['location_id'];
} elseif ((isset($location)) && (!empty($location))) {
if ((is_array($location)) && (array_key_exists('id', $location))) {
$user->location_id = $location['id'];
} elseif (is_object($location)) {
$user->location_id = $location->id; //THIS is the magic line, this should do it.
}
}
// TODO - should we be NULLING locations if $location is really `null`, and that's what we came up with?
// will that conflict with any overriding setting that the user set? Like, if they moved someone from
// the 'null' location to somewhere, we wouldn't want to try to override that, right?
$location = null;
$user->ldap_import = 1;
$errors = '';
if ($user->save()) {
$item['note'] = $item['createorupdate'];
$item['status'] = 'success';
if ($item['createorupdate'] === 'created' && $ldap_default_group) {
$user->groups()->attach($ldap_default_group);
}
//updates assets location based on user's location
if ($user->wasChanged('location_id')) {
foreach ($user->assets as $asset) {
$asset->location_id = $user->location_id;
// TODO: somehow add note? "Asset Location Changed because of thing"
$asset->save();
}
}
$location = null;
$user->ldap_import = 1;
$errors = '';
if ($user->save()) {
$item['note'] = $item['createorupdate'];
$item['status'] = 'success';
if ( $item['createorupdate'] === 'created' && $ldap_default_group) {
$user->groups()->attach($ldap_default_group);
}
} else {
foreach ($user->getErrors()->getMessages() as $key => $err) {
$errors .= $err[0];
}
$item['note'] = $errors;
$item['status'] = 'error';
} else {
foreach ($user->getErrors()->getMessages() as $key => $err) {
$errors .= $err[0];
}
$item['note'] = $errors;
$item['status'] = 'error';
}
array_push($summary, $item);
array_push($summary, $item);
}
if ($this->option('summary')) {

View File

@@ -6,6 +6,7 @@ use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputOption;
use Illuminate\Support\Facades\Log;
use Symfony\Component\Console\Helper\ProgressIndicator;
ini_set('max_execution_time', env('IMPORT_TIME_LIMIT', 600)); //600 seconds = 10 minutes
ini_set('memory_limit', env('IMPORT_MEMORY_LIMIT', '500M'));
@@ -29,6 +30,11 @@ class ObjectImportCommand extends Command
*/
protected $description = 'Import Items from CSV';
/**
* The progress indicator instance.
*/
protected ProgressIndicator $progressIndicator;
/**
* Create a new command instance.
*
@@ -39,8 +45,6 @@ class ObjectImportCommand extends Command
parent::__construct();
}
private $bar;
/**
* Execute the console command.
*
@@ -48,12 +52,14 @@ class ObjectImportCommand extends Command
*/
public function handle()
{
$this->progressIndicator = new ProgressIndicator($this->output);
$filename = $this->argument('filename');
$class = title_case($this->option('item-type'));
$classString = "App\\Importer\\{$class}Importer";
$importer = new $classString($filename);
$importer->setCallbacks([$this, 'log'], [$this, 'progress'], [$this, 'errorCallback'])
->setUserId($this->option('user_id'))
->setCreatedBy($this->option('user_id'))
->setUpdating($this->option('update'))
->setShouldNotify($this->option('send-welcome'))
->setUsernameFormat($this->option('username_format'));
@@ -61,46 +67,25 @@ class ObjectImportCommand extends Command
// This $logFile/useFiles() bit is currently broken, so commenting it out for now
// $logFile = $this->option('logfile');
// Log::useFiles($logFile);
$this->comment('======= Importing Items from '.$filename.' =========');
$this->progressIndicator->start('======= Importing Items from '.$filename.' =========');
$importer->import();
$this->bar = null;
if (! empty($this->errors)) {
$this->comment('The following Errors were encountered.');
foreach ($this->errors as $asset => $error) {
$this->comment('Error: Item: '.$asset.' failed validation: '.json_encode($error));
}
} else {
$this->comment('All Items imported successfully!');
}
$this->comment('');
$this->progressIndicator->finish('Import finished.');
}
public function errorCallback($item, $field, $errorString)
public function errorCallback($item, $field, $error)
{
$this->errors[$item->name][$field] = $errorString;
$this->output->write("\x0D\x1B[2K");
$this->warn('Error: Item: '.$item->name.' failed validation: '.json_encode($error));
}
public function progress($count)
public function progress($importedItemsCount)
{
if (! $this->bar) {
$this->bar = $this->output->createProgressBar($count);
}
static $index = 0;
$index++;
if ($index < $count) {
$this->bar->advance();
} else {
$this->bar->finish();
}
$this->progressIndicator->advance();
}
// Tracks the current item for error messages
private $updating;
// An array of errors encountered while parsing
private $errors;
/**
* Log a message to file, configurable by the --log-file parameter.
* If a warning message is passed, we'll spit it to the console as well.

View File

@@ -3,6 +3,7 @@
namespace App\Console\Commands;
use App\Models\Accessory;
use App\Models\Actionlog;
use App\Models\Asset;
use App\Models\AssetModel;
use App\Models\Category;
@@ -15,6 +16,8 @@ use App\Models\Statuslabel;
use App\Models\Supplier;
use App\Models\User;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Storage;
class Purge extends Command
{
@@ -141,6 +144,20 @@ class Purge extends Command
$this->info($users->count().' users purged.');
$user_assoc = 0;
foreach ($users as $user) {
$rel_path = 'private_uploads/users';
$filenames = Actionlog::where('action_type', 'uploaded')
->where('item_id', $user->id)
->pluck('filename');
foreach($filenames as $filename) {
try {
if (Storage::exists($rel_path . '/' . $filename)) {
Storage::delete($rel_path . '/' . $filename);
}
} catch (\Exception $e) {
Log::info('An error occurred while deleting files: ' . $e->getMessage());
}
}
$this->info('- User "'.$user->username.'" deleted.');
$user_assoc += $user->userlog()->count();
$user->userlog()->forceDelete();

View File

@@ -0,0 +1,60 @@
<?php
namespace App\Console\Commands;
use App\Models\Asset;
use App\Models\AssetModel;
use Illuminate\Console\Command;
class RemoveExplicitEols extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'snipeit:remove-explicit-eols {--model_name= : The name of the asset model to update (use "all" to update all models)}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Removes explicit EOLs on assets with selected model so they may inherit the asset model EOL';
/**
* Execute the console command.
*/
public function handle()
{
$startTime = microtime(true);
if ($this->option('model_name') == 'all') {
$assets = Asset::all();
$this->updateAssets($assets);
} else {
$assetModel = AssetModel::where('name', '=', $this->option('model_name'))->first();
if ($assetModel) {
$assets = Asset::where('model_id', '=', $assetModel->id)->get();
$this->updateAssets($assets);
} else {
$this->error('Asset model not found');
}
}
$endTime = microtime(true);
$executionTime = ($endTime - $startTime);
$this->info('Command executed in ' . round($executionTime, 2) . ' seconds.');
}
private function updateAssets($assets)
{
foreach ($assets as $asset) {
$asset->eol_explicit = 0;
$asset->asset_eol_date = null;
$asset->save();
}
$this->info($assets->count() . ' Assets updated successfully');
}
}

View File

@@ -50,12 +50,12 @@ class ResetDemoSettings extends Command
$settings->alert_email = 'service@snipe-it.io';
$settings->login_note = 'Use `admin` / `password` to login to the demo.';
$settings->header_color = null;
$settings->barcode_type = 'QRCODE';
$settings->label2_2d_type = 'QRCODE';
$settings->default_currency = 'USD';
$settings->brand = 2;
$settings->ldap_enabled = 0;
$settings->full_multiple_companies_support = 0;
$settings->alt_barcode = 'C128';
$settings->label2_1d_type = 'C128';
$settings->skin = '';
$settings->email_domain = 'snipeitapp.com';
$settings->email_format = 'filastname';
@@ -65,7 +65,7 @@ class ResetDemoSettings extends Command
$settings->thumbnail_max_h = '30';
$settings->locale = 'en-US';
$settings->version_footer = 'on';
$settings->support_footer = null;
$settings->support_footer = 'on';
$settings->saml_enabled = '0';
$settings->saml_sp_x509cert = null;
$settings->saml_idp_metadata = null;
@@ -73,6 +73,7 @@ class ResetDemoSettings extends Command
$settings->saml_forcelogin = '0';
$settings->saml_slo = null;
$settings->saml_custom_settings = null;
$settings->default_avatar = 'default.png';
$settings->save();

View File

@@ -30,8 +30,11 @@ class SQLStreamer {
public function parse_sql(string $line): string {
// take into account the 'start of line or not' setting as an instance variable?
// 'continuation' lines for a permitted statement are PERMITTED.
// remove *only* line-feeds & carriage-returns; helpful for regexes against lines from
// Windows dumps
$line = trim($line, "\r\n");
if($this->statement_is_permitted && $line[0] === ' ') {
return $line;
return $line . "\n"; //re-add the newline
}
$table_regex = '`?([a-zA-Z0-9_]+)`?';
@@ -42,8 +45,14 @@ class SQLStreamer {
"/^(INSERT INTO )$table_regex(.*)$/" => false,
"/^UNLOCK TABLES/" => false,
// "/^\\) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;/" => false, // FIXME not sure what to do here?
"/^\\)[a-zA-Z0-9_= ]*;$/" => false
// ^^^^^^ that bit should *exit* the 'perimitted' black
"/^\\)[a-zA-Z0-9_= ]*;$/" => false,
// ^^^^^^ that bit should *exit* the 'permitted' block
"/^\\(.*\\)[,;]$/" => false, //older MySQL dump style with one set of values per line
/* we *could* have made the ^INSERT INTO blah VALUES$ turn on the capturing state, and closed it with
a ^(blahblah);$ but it's cleaner to not have to manage the state machine. We're just going to
assume that (blahblah), or (blahblah); are values for INSERT and are always acceptable. */
"<^/\*!40101 SET NAMES '?[a-zA-Z0-9_-]+'? \*/;$>" => false, //using weird delimiters (<,>) for readability. allow quoted or unquoted charsets
"<^/\*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' \*/;$>" => false, //same, now handle zero-values
];
foreach($allowed_statements as $statement => $statechange) {
@@ -67,7 +76,7 @@ class SQLStreamer {
}
//how do we *replace* the tablename?
// print "RETURNING LINE: $line";
return $line;
return $line . "\n"; //re-add newline
}
}
// all that is not allowed is denied.
@@ -85,7 +94,7 @@ class SQLStreamer {
$parser->line_aware_piping(); // <----- THIS is doing the heavy lifting!
$check_tables = ['settings' => null, 'migrations' => null /* 'assets' => null */]; //TODO - move to statics?
//can't use 'users' because the 'accessories_users' table?
//can't use 'users' because the 'accessories_checkout' table?
// can't use 'assets' because 'ver1_components_assets'
foreach($check_tables as $check_table => $_ignore) {
foreach ($parser->tablenames as $tablename => $_count) {
@@ -164,7 +173,8 @@ class RestoreFromBackup extends Command
{filename : The zip file to be migrated}
{--no-progress : Don\'t show a progress bar}
{--sanitize-guess-prefix : Guess and output the table-prefix needed to "sanitize" the SQL}
{--sanitize-with-prefix= : "Sanitize" the SQL, using the passed-in table prefix (can be learned from --sanitize-guess-prefix). Pass as just \'--sanitize-with-prefix=\' to use no prefix}';
{--sanitize-with-prefix= : "Sanitize" the SQL, using the passed-in table prefix (can be learned from --sanitize-guess-prefix). Pass as just \'--sanitize-with-prefix=\' to use no prefix}
{--sql-stdout-only : ONLY "Sanitize" the SQL and print it to stdout - useful for debugging - probably requires --sanitize-with-prefix= }';
/**
* The console command description.
@@ -362,7 +372,16 @@ class RestoreFromBackup extends Command
if ($this->option('sanitize-guess-prefix')) {
$prefix = SQLStreamer::guess_prefix($sql_contents);
$this->line($prefix);
return $this->info("Re-run this command with '--sanitize-with-prefix=".$prefix."' to see an attempt to sanitze your SQL.");
return $this->info("Re-run this command with '--sanitize-with-prefix=".$prefix."' to see an attempt to sanitize your SQL.");
}
// If we're doing --sql-stdout-only, handle that now so we don't have to open pipes to mysql and all of that silliness
if ($this->option('sql-stdout-only')) {
$sql_importer = new SQLStreamer($sql_contents, STDOUT, $this->option('sanitize-with-prefix'));
$bytes_read = $sql_importer->line_aware_piping();
return $this->warn("$bytes_read total bytes read");
//TODO - it'd be nice to dump this message to STDERR so that STDOUT is just pure SQL,
// which would be good for redirecting to a file, and not having to trim the last line off of it
}
//how to invoke the restore?
@@ -466,6 +485,9 @@ class RestoreFromBackup extends Command
$ugly_file_name = $za->statIndex($file_details['index'])['name'];
$fp = $za->getStream($ugly_file_name);
//$this->info("Weird problem, here are file details? ".print_r($file_details,true));
if (!is_dir($file_details['dest'])) {
mkdir($file_details['dest'], 0755, true); //0755 is what Laravel uses, so we do that
}
$migrated_file = fopen($file_details['dest'].'/'.basename($pretty_file_name), 'w');
while (($buffer = fgets($fp, SQLStreamer::$buffer_size)) !== false) {
fwrite($migrated_file, $buffer);

View File

@@ -2,15 +2,15 @@
namespace App\Console\Commands;
use App\Mail\UnacceptedAssetReminderMail;
use App\Models\Asset;
use App\Models\CheckoutAcceptance;
use App\Models\Setting;
use App\Models\User;
use App\Notifications\CheckoutAssetNotification;
use App\Notifications\CurrentInventory;
use App\Notifications\UnacceptedAssetReminderNotification;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Notification;
use Illuminate\Support\Facades\Mail;
class SendAcceptanceReminder extends Command
{
@@ -47,7 +47,8 @@ class SendAcceptanceReminder extends Command
{
$pending = CheckoutAcceptance::pending()->where('checkoutable_type', 'App\Models\Asset')
->whereHas('checkoutable', function($query) {
$query->where('archived', 0);
$query->where('accepted_at', null)
->where('declined_at', null);
})
->with(['assignedTo', 'checkoutable.assignedTo', 'checkoutable.model', 'checkoutable.adminuser'])
->get();
@@ -64,42 +65,29 @@ class SendAcceptanceReminder extends Command
return $item['acceptance']->assignedTo ? $item['acceptance']->assignedTo->id : '';
});
$no_mail_address = [];
foreach($unacceptedAssetGroups as $unacceptedAssetGroup) {
// The [0] is weird, but it allows for the item_count to work and grabs the appropriate info for each user.
// Collapsing and flattening the collection doesn't work above.
$acceptance = $unacceptedAssetGroup[0]['acceptance'];
$locale = $acceptance->assignedTo?->locale;
$email = $acceptance->assignedTo?->email;
if(!$email){
$this->info($acceptance->assignedTo?->present()->fullName().' has no email address.');
}
$item_count = $unacceptedAssetGroup->count();
foreach ($unacceptedAssetGroup as $unacceptedAsset) {
// if ($unacceptedAsset['acceptance']->assignedTo->email == ''){
// $no_mail_address[] = $unacceptedAsset['checkoutable']->assignedTo->present()->fullName;
// }
if ($unacceptedAsset['acceptance']->assignedTo) {
if (!$unacceptedAsset['acceptance']->assignedTo->locale) {
Notification::locale(Setting::getSettings()->locale)->send(
$unacceptedAsset['acceptance']->assignedTo,
new UnacceptedAssetReminderNotification($unacceptedAsset['assetItem'], $count)
);
} else {
Notification::send(
$unacceptedAsset['acceptance']->assignedTo,
new UnacceptedAssetReminderNotification($unacceptedAsset, $item_count)
);
}
$count++;
}
if ($locale && $email) {
Mail::to($email)->send((new UnacceptedAssetReminderMail($acceptance, $item_count))->locale($locale));
} elseif ($email) {
Mail::to($email)->send((new UnacceptedAssetReminderMail($acceptance, $item_count)));
}
$count++;
}
if (!empty($no_mail_address)) {
foreach($no_mail_address as $user) {
return $user.' has no email.';
}
}
$this->info($count.' users notified.');
return 0;
}
}

View File

@@ -2,13 +2,13 @@
namespace App\Console\Commands;
use App\Mail\ExpiringAssetsMail;
use App\Mail\ExpiringLicenseMail;
use App\Models\Asset;
use App\Models\License;
use App\Models\Recipients\AlertRecipient;
use App\Models\Setting;
use App\Notifications\ExpiringAssetsNotification;
use App\Notifications\ExpiringLicenseNotification;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Mail;
class SendExpirationAlerts extends Command
{
@@ -47,22 +47,22 @@ class SendExpirationAlerts extends Command
if (($settings->alert_email != '') && ($settings->alerts_enabled == 1)) {
// Send a rollup to the admin, if settings dictate
$recipients = collect(explode(',', $settings->alert_email))->map(function ($item, $key) {
return new AlertRecipient($item);
});
$recipients = collect(explode(',', $settings->alert_email))
->map(fn($item) => trim($item)) // Trim each email
->all();
// Expiring Assets
$assets = Asset::getExpiringWarrantee($threshold);
if ($assets->count() > 0) {
$this->info(trans_choice('mail.assets_warrantee_alert', $assets->count(), ['count' => $assets->count(), 'threshold' => $threshold]));
\Notification::send($recipients, new ExpiringAssetsNotification($assets, $threshold));
Mail::to($recipients)->send(new ExpiringAssetsMail($assets, $threshold));
}
// Expiring licenses
$licenses = License::getExpiringLicenses($threshold);
if ($licenses->count() > 0) {
$this->info(trans_choice('mail.license_expiring_alert', $licenses->count(), ['count' => $licenses->count(), 'threshold' => $threshold]));
\Notification::send($recipients, new ExpiringLicenseNotification($licenses, $threshold));
Mail::to($recipients)->send(new ExpiringLicenseMail($licenses, $threshold));
}
} else {
if ($settings->alert_email == '') {

28
app/Events/NoteAdded.php Normal file
View File

@@ -0,0 +1,28 @@
<?php
namespace App\Events;
use App\Models\User;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class NoteAdded
{
use Dispatchable, SerializesModels;
public $itemNoteAddedOn;
public $note;
public $noteAddedBy;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct($itemNoteAddedOn, User $noteAddedBy, $note)
{
$this->itemNoteAddedOn = $itemNoteAddedOn;
$this->note = $note;
$this->noteAddedBy = $noteAddedBy;
}
}

View File

@@ -16,6 +16,7 @@ use Illuminate\Support\Facades\Crypt;
use Illuminate\Contracts\Encryption\DecryptException;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str;
use Intervention\Image\ImageManagerStatic as Image;
use Illuminate\Support\Facades\Session;
@@ -62,8 +63,9 @@ class Helper
'mn' => 'mn-MN', // Mongolian
'ms' => 'ms-MY', // Malay
'nl' => 'nl-NL', // Dutch
'no' => 'no-NO', // Norwegian
'no' => 'nb-NO', // Norwegian Bokmål
'pl' => 'pl-PL', // Polish
'pt' => 'pt-PT', // Portuguese
'ro' => 'ro-RO', // Romanian
'ru' => 'ru-RU', // Russian
'sk' => 'sk-SK', // Slovak
@@ -707,6 +709,28 @@ class Helper
return $randomString;
}
/**
* A method to be used to handle deprecations notifications, currently handling MS Teams. more can be added when needed.
*
*
* @author [Godfrey Martinez]
* @since [v7.0.14]
* @return array
*/
public static function deprecationCheck() : array {
// The check and message that the user is still using the deprecated version
$deprecations = [
'ms_teams_deprecated' => array(
'check' => !Str::contains(Setting::getSettings()->webhook_endpoint, 'workflows'),
'message' => 'The Microsoft Teams webhook URL being used will be deprecated Jan 31st, 2025. <a class="btn btn-primary" href="' . route('settings.slack.index') . '">Change webhook endpoint</a>'),
];
// if item of concern is being used and its being used with the deprecated values return the notification array.
if(Setting::getSettings()->webhook_selected === 'microsoft' && $deprecations['ms_teams_deprecated']['check']) {
return $deprecations;
}
return [];
}
/**
* This nasty little method gets the low inventory info for the
@@ -720,7 +744,7 @@ class Helper
{
$alert_threshold = \App\Models\Setting::getSettings()->alert_threshold;
$consumables = Consumable::withCount('consumableAssignments as consumable_assignments_count')->whereNotNull('min_amt')->get();
$accessories = Accessory::withCount('users as users_count')->whereNotNull('min_amt')->get();
$accessories = Accessory::withCount('checkouts as checkouts_count')->whereNotNull('min_amt')->get();
$components = Component::whereNotNull('min_amt')->get();
$asset_models = AssetModel::where('min_amt', '>', 0)->get();
$licenses = License::where('min_amt', '>', 0)->get();
@@ -748,7 +772,7 @@ class Helper
}
foreach ($accessories as $accessory) {
$avail = $accessory->qty - $accessory->users_count;
$avail = $accessory->qty - $accessory->checkouts_count;
if ($avail < ($accessory->min_amt) + $alert_threshold) {
if ($accessory->qty > 0) {
$percent = number_format((($avail / $accessory->qty) * 100), 0);
@@ -913,13 +937,22 @@ class Helper
$rules = $class::rules();
foreach ($rules as $rule_name => $rule) {
if ($rule_name == $field) {
if (strpos($rule, 'required') === false) {
return false;
if (is_array($rule)) {
if (in_array('required', $rule)) {
return true;
} else {
return false;
}
} else {
return true;
}
if (strpos($rule, 'required') === false) {
return false;
} else {
return true;
}
}
}
}
return false;
}
/**
@@ -1113,6 +1146,7 @@ class Helper
'png' => 'far fa-image',
'webp' => 'far fa-image',
'avif' => 'far fa-image',
'svg' => 'fas fa-vector-square',
// word
'doc' => 'far fa-file-word',
'docx' => 'far fa-file-word',
@@ -1125,7 +1159,7 @@ class Helper
//Text
'txt' => 'far fa-file-alt',
'rtf' => 'far fa-file-alt',
'xml' => 'far fa-file-alt',
'xml' => 'fas fa-code',
// Misc
'pdf' => 'far fa-file-pdf',
'lic' => 'far fa-save',
@@ -1138,41 +1172,7 @@ class Helper
return 'far fa-file';
}
public static function show_file_inline($filename)
{
$extension = substr(strrchr($filename, '.'), 1);
if ($extension) {
switch ($extension) {
case 'jpg':
case 'jpeg':
case 'gif':
case 'png':
case 'webp':
case 'avif':
return true;
break;
default:
return false;
}
}
return false;
}
/**
* Generate a random encrypted password.
*
* @author Wes Hulette <jwhulette@gmail.com>
*
* @since 5.0.0
*
* @return string
*/
public static function generateEncyrptedPassword(): string
{
return bcrypt(self::generateUnencryptedPassword());
}
/**
* Get a random unencrypted password.
@@ -1440,7 +1440,6 @@ class Helper
foreach (self::$language_map as $legacy => $new) {
if ($language_code == $legacy) {
Log::debug('Current language is '.$legacy.', using '.$new.' instead');
return $new;
}
}
@@ -1451,6 +1450,7 @@ class Helper
public static function mapBackToLegacyLocale($new_locale = null)
{
if (strlen($new_locale) <= 4) {
return $new_locale; //"new locale" apparently wasn't quite so new
}
@@ -1458,42 +1458,73 @@ class Helper
// This does a *reverse* search against our new language map array - given the value, find the *key* for it
$legacy_locale = array_search($new_locale, self::$language_map);
if($legacy_locale !== false) {
if ($legacy_locale !== false) {
return $legacy_locale;
}
return $new_locale; // better that you have some weird locale that doesn't fit into our mappings anywhere than 'void'
}
public static function determineLanguageDirection() {
return in_array(app()->getLocale(),
[
'ar-SA',
'fa-IR',
'he-IL'
]) ? 'rtl' : 'ltr';
}
static public function getRedirectOption($request, $id, $table, $asset_id = null)
static public function getRedirectOption($request, $id, $table, $item_id = null)
{
$redirect_option = Session::get('redirect_option');
$checkout_to_type = Session::get('checkout_to_type');
//return to index
if ($redirect_option == '0') {
// return to index
if ($redirect_option == 'index') {
switch ($table) {
case "Assets":
return redirect()->route('hardware.index')->with('success', trans('admin/hardware/message.checkout.success'));
return route('hardware.index');
case "Users":
return route('users.index');
case "Licenses":
return route('licenses.index');
case "Accessories":
return route('accessories.index');
case "Components":
return route('components.index');
case "Consumables":
return route('consumables.index');
}
}
//return to thing being assigned
if ($redirect_option == '1') {
// return to thing being assigned
if ($redirect_option == 'item') {
switch ($table) {
case "Assets":
return redirect()->route('hardware.show', $id ? $id : $asset_id)->with('success', trans('admin/hardware/message.checkout.success'));
return route('hardware.show', $id ?? $item_id);
case "Users":
return route('users.show', $id ?? $item_id);
case "Licenses":
return route('licenses.show', $id ?? $item_id);
case "Accessories":
return route('accessories.show', $id ?? $item_id);
case "Components":
return route('components.show', $id ?? $item_id);
case "Consumables":
return route('consumables.show', $id ?? $item_id);
}
}
//return to thing being assigned to
if ($redirect_option == '2') {
// return to assignment target
if ($redirect_option == 'target') {
switch ($checkout_to_type) {
case 'user':
return redirect()->route('users.show', $request->assigned_user)->with('success', trans('admin/hardware/message.checkout.success'));
return route('users.show', ['user' => $request->assigned_user]);
case 'location':
return redirect()->route('locations.show', $request->assigned_location)->with('success', trans('admin/hardware/message.checkout.success'));
return route('locations.show', ['location' => $request->assigned_location]);
case 'asset':
return redirect()->route('hardware.show', $request->assigned_asset)->with('success', trans('admin/hardware/message.checkout.success'));
return route('hardware.show', ['hardware' => $request->assigned_asset]);
}
}
return redirect()->back()->with('error', trans('admin/hardware/message.checkout.error'));

192
app/Helpers/IconHelper.php Normal file
View File

@@ -0,0 +1,192 @@
<?php
namespace App\Helpers;
class IconHelper
{
public static function icon($type) {
switch ($type) {
case 'checkout':
return 'fa-solid fa-rotate-left';
case 'checkin':
return 'fa-solid fa-rotate-right';
case 'edit':
return 'fas fa-pencil-alt';
case 'clone':
return 'far fa-clone';
case 'delete':
return 'fas fa-trash';
case 'create':
return 'fa-solid fa-plus';
case 'audit':
return 'fa-solid fa-clipboard-check';
case '2fa reset':
return 'fa-solid fa-mobile-screen';
case 'new-user':
return 'fa-solid fa-user-plus';
case 'merged-user':
return 'fa-solid fa-people-arrows';
case 'delete-user':
return 'fa-solid fa-user-minus';
case 'update-user':
return 'fa-solid fa-user-pen';
case 'user':
return 'fa-solid fa-user';
case 'users':
return 'fas fa-users';
case 'restore':
return 'fa-solid fa-trash-arrow-up';
case 'external-link':
return 'fa fa-external-link';
case 'email':
return 'fa-regular fa-envelope';
case 'phone':
return 'fa-solid fa-phone';
case 'long-arrow-right':
return 'fas fa-long-arrow-alt-right';
case 'download':
return 'fas fa-download';
case 'checkmark':
return 'fas fa-check icon-white';
case 'x':
return 'fas fa-times';
case 'logout':
return 'fa fa-sign-out';
case 'admin-settings':
return 'fas fa-cogs';
case 'settings':
return 'fas fa-cog';
case 'angle-left':
return 'fas fa-angle-left';
case 'warning':
return 'fas fa-exclamation-triangle';
case 'kits':
return 'fas fa-object-group';
case 'assets':
case 'asset':
return 'fas fa-barcode';
case 'accessories':
case 'accessory':
return 'far fa-keyboard';
case 'components':
case 'component':
return 'far fa-hdd';
case 'consumables':
case 'consumable':
return 'fas fa-tint';
case 'licenses':
case 'license':
return 'far fa-save';
case 'requestable':
return 'fas fa-laptop';
case 'reports':
return 'fas fa-chart-bar';
case 'heart':
return 'fas fa-heart';
case 'circle':
return 'fa-regular fa-circle';
case 'circle-solid':
return 'fa-solid fa-circle';
case 'due':
return 'fas fa-history';
case 'import':
return 'fas fa-cloud-upload-alt';
case 'search':
return 'fas fa-search';
case 'alerts':
return 'far fa-flag';
case 'password':
return 'fa-solid fa-key';
case 'api-key':
return 'fa-solid fa-user-secret';
case 'nav-toggle':
return 'fas fa-bars';
case 'dashboard':
return 'fas fa-tachometer-alt';
case 'info-circle':
return 'fas fa-info-circle';
case 'caret-right':
return 'fa fa-caret-right';
case 'caret-up':
return 'fa fa-caret-up';
case 'caret-down':
return 'fa fa-caret-down';
case 'arrow-circle-right':
return 'fa fa-arrow-circle-right';
case 'minus':
return 'fas fa-minus';
case 'spinner':
return 'fas fa-spinner fa-spin';
case 'copy-clipboard':
return 'fa-regular fa-clipboard';
case 'paperclip':
return 'fas fa-paperclip';
case 'files':
return 'fa-regular fa-file';
case 'more-info':
return 'far fa-life-ring';
case 'calendar':
return 'fas fa-calendar';
case 'plus':
return 'fas fa-plus';
case 'history':
return 'fas fa-history';
case 'more-files':
return 'fa-solid fa-laptop-file';
case 'maintenances':
return 'fas fa-wrench';
case 'seats':
return 'far fa-list-alt';
case 'globe-us':
return 'fas fa-globe-americas';
case 'locked':
return 'fas fa-lock';
case 'unlocked':
return 'fas fa-lock';
case 'locations':
return 'fas fa-map-marker-alt';
case 'location':
return 'fas fa-map-marker-alt';
case 'superadmin':
return 'fas fa-crown';
case 'print':
return 'fa-solid fa-print';
case 'checkin-and-delete':
return 'fa-solid fa-user-xmark';
case 'branding':
return 'fas fa-copyright';
case 'general-settings':
return 'fa-solid fa-list-check';
case 'groups':
return 'fa-solid fa-user-group';
case 'bell':
return 'fa-solid fa-bell';
case 'hashtag':
return 'fa-solid fa-hashtag';
case 'asset-tags':
return 'fas fa-list-ol';
case 'labels':
return 'fas fa-tags';
case 'ldap':
return 'fas fa-sitemap';
case 'google':
return 'fa-brands fa-google';
case 'saml':
return 'fas fa-sign-in-alt';
case 'backups':
return 'fas fa-file-archive';
case 'logins':
return 'fas fa-crosshairs';
case 'oauth':
return 'fas fa-user-secret';
case 'employee_num' :
return 'fa-regular fa-id-card';
case 'department' :
return 'fa-solid fa-building-user';
case 'note':
case 'notes':
return 'fas fa-sticky-note';
}
}
}

View File

@@ -7,6 +7,7 @@ use Illuminate\Http\Response;
use Illuminate\Http\RedirectResponse;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\HttpFoundation\StreamedResponse;
use Illuminate\Contracts\Filesystem\FileNotFoundException;
class StorageHelper
{
public static function downloader($filename, $disk = 'default') : BinaryFileResponse | RedirectResponse | StreamedResponse
@@ -25,4 +26,64 @@ class StorageHelper
return Storage::disk($disk)->download($filename);
}
}
/**
* This determines the file types that should be allowed inline and checks their fileinfo extension
* to determine that they are safe to display inline.
*
* @author <A. Gianotto> [<snipe@snipe.net]>
* @since v7.0.14
* @param $file_with_path
* @return bool
*/
public static function allowSafeInline($file_with_path) {
$allowed_inline = [
'pdf',
'svg',
'jpg',
'gif',
'svg',
'avif',
'webp',
'png',
];
// The file exists and is allowed to be displayed inline
if (Storage::exists($file_with_path) && (in_array(pathinfo($file_with_path, PATHINFO_EXTENSION), $allowed_inline))) {
return true;
}
return false;
}
/**
* Decide whether to show the file inline or download it.
*/
public static function showOrDownloadFile($file, $filename) {
$headers = [];
if (request('inline') == 'true') {
$headers = [
'Content-Disposition' => 'inline',
];
// This is NOT allowed as inline - force it to be displayed as text in the browser
if (self::allowSafeInline($file) != true) {
$headers = array_merge($headers, ['Content-Type' => 'text/plain']);
}
}
// Everything else seems okay, but the file doesn't exist on the server.
if (Storage::missing($file)) {
throw new FileNotFoundException();
}
return Storage::download($file, $filename, $headers);
}
}

View File

@@ -31,7 +31,7 @@ class AccessoriesController extends Controller
public function index() : View
{
$this->authorize('index', Accessory::class);
return view('accessories/index');
return view('accessories.index');
}
/**
@@ -73,16 +73,17 @@ class AccessoriesController extends Controller
$accessory->purchase_date = request('purchase_date');
$accessory->purchase_cost = request('purchase_cost');
$accessory->qty = request('qty');
$accessory->user_id = auth()->id();
$accessory->created_by = auth()->id();
$accessory->supplier_id = request('supplier_id');
$accessory->notes = request('notes');
$accessory = $request->handleImages($accessory);
session()->put(['redirect_option' => $request->get('redirect_option')]);
// Was the accessory created?
if ($accessory->save()) {
// Redirect to the new accessory page
return redirect()->route('accessories.index')->with('success', trans('admin/accessories/message.create.success'));
return redirect()->to(Helper::getRedirectOption($request, $accessory->id, 'Accessories'))->with('success', trans('admin/accessories/message.create.success'));
}
return redirect()->back()->withInput()->withErrors($accessory->getErrors());
@@ -99,7 +100,7 @@ class AccessoriesController extends Controller
if ($item = Accessory::find($accessoryId)) {
$this->authorize($item);
return view('accessories/edit', compact('item'))->with('category_type', 'accessory');
return view('accessories.edit', compact('item'))->with('category_type', 'accessory');
}
return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.does_not_exist'));
@@ -143,12 +144,12 @@ class AccessoriesController extends Controller
*/
public function update(ImageUploadRequest $request, $accessoryId = null) : RedirectResponse
{
if ($accessory = Accessory::withCount('users as users_count')->find($accessoryId)) {
if ($accessory = Accessory::withCount('checkouts as checkouts_count')->find($accessoryId)) {
$this->authorize($accessory);
$validator = Validator::make($request->all(), [
"qty" => "required|numeric|min:$accessory->users_count"
"qty" => "required|numeric|min:$accessory->checkouts_count"
]);
if ($validator->fails()) {
@@ -176,9 +177,10 @@ class AccessoriesController extends Controller
$accessory = $request->handleImages($accessory);
// Was the accessory updated?
session()->put(['redirect_option' => $request->get('redirect_option')]);
if ($accessory->save()) {
return redirect()->route('accessories.index')->with('success', trans('admin/accessories/message.update.success'));
return redirect()->to(Helper::getRedirectOption($request, $accessory->id, 'Accessories'))->with('success', trans('admin/accessories/message.update.success'));
}
} else {
return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.does_not_exist'));
@@ -231,10 +233,10 @@ class AccessoriesController extends Controller
*/
public function show($accessoryID = null) : View | RedirectResponse
{
$accessory = Accessory::withCount('users as users_count')->find($accessoryID);
$accessory = Accessory::withCount('checkouts as checkouts_count')->find($accessoryID);
$this->authorize('view', $accessory);
if (isset($accessory->id)) {
return view('accessories/view', compact('accessory'));
return view('accessories.view', compact('accessory'));
}
return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.does_not_exist', ['id' => $accessoryID]));

View File

@@ -51,15 +51,15 @@ class AccessoriesFilesController extends Controller
}
return redirect()->route('accessories.show', $accessory->id)->with('success', trans('general.file_upload_success'));
return redirect()->route('accessories.show', $accessory->id)->withFragment('files')->with('success', trans('general.file_upload_success'));
}
return redirect()->route('accessories.show', $accessory->id)->with('error', trans('general.no_files_uploaded'));
return redirect()->route('accessories.show', $accessory->id)->withFragment('files')->with('error', trans('general.no_files_uploaded'));
}
// Prepare the error message
return redirect()->route('accessories.index')
->with('error', trans('general.file_does_not_exist'));
return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.does_not_exist'));
}
/**
@@ -72,30 +72,27 @@ class AccessoriesFilesController extends Controller
*/
public function destroy($accessoryId = null, $fileId = null) : RedirectResponse
{
$accessory = Accessory::find($accessoryId);
// the asset is valid
if (isset($accessory->id)) {
if ($accessory = Accessory::find($accessoryId)) {
$this->authorize('update', $accessory);
$log = Actionlog::find($fileId);
// Remove the file if one exists
if (Storage::exists('accessories/'.$log->filename)) {
try {
Storage::delete('accessories/'.$log->filename);
} catch (\Exception $e) {
Log::debug($e);
if ($log = Actionlog::find($fileId)) {
if (Storage::exists('private_uploads/accessories/'.$log->filename)) {
try {
Storage::delete('private_uploads/accessories/' . $log->filename);
$log->delete();
return redirect()->back()->withFragment('files')->with('success', trans('admin/hardware/message.deletefile.success'));
} catch (\Exception $e) {
Log::debug($e);
return redirect()->route('accessories.index')->with('error', trans('general.file_does_not_exist'));
}
}
}
$log->delete();
return redirect()->back()
->with('success', trans('admin/hardware/message.deletefile.success'));
return redirect()->route('accessories.show', ['accessory' => $accessory])->withFragment('files')->with('error', trans('general.log_record_not_found'));
}
// Redirect to the licence management page
return redirect()->route('accessories.index')->with('error', trans('general.file_does_not_exist'));
return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.does_not_exist'));
}
/**
@@ -106,50 +103,30 @@ class AccessoriesFilesController extends Controller
* @param int $accessoryId
* @param int $fileId
*/
public function show($accessoryId = null, $fileId = null, $download = true) : View | RedirectResponse | Response | BinaryFileResponse | StreamedResponse
public function show($accessoryId = null, $fileId = null) : View | RedirectResponse | Response | BinaryFileResponse | StreamedResponse
{
Log::debug('Private filesystem is: '.config('filesystems.default'));
$accessory = Accessory::find($accessoryId);
// the accessory is valid
if (isset($accessory->id)) {
if ($accessory = Accessory::find($accessoryId)) {
$this->authorize('view', $accessory);
$this->authorize('accessories.files', $accessory);
if (! $log = Actionlog::whereNotNull('filename')->where('item_id', $accessory->id)->find($fileId)) {
return redirect()->route('accessories.index')->with('error', trans('admin/users/message.log_record_not_found'));
}
if ($log = Actionlog::whereNotNull('filename')->where('item_id', $accessory->id)->find($fileId)) {
$file = 'private_uploads/accessories/'.$log->filename;
$file = 'private_uploads/accessories/'.$log->filename;
if (Storage::missing($file)) {
Log::debug('FILE DOES NOT EXISTS for '.$file);
Log::debug('URL should be '.Storage::url($file));
return response('File '.$file.' ('.Storage::url($file).') not found on server', 404)
->header('Content-Type', 'text/plain');
} else {
// Display the file inline
if (request('inline') == 'true') {
$headers = [
'Content-Disposition' => 'inline',
];
return Storage::download($file, $log->filename, $headers);
}
// We have to override the URL stuff here, since local defaults in Laravel's Flysystem
// won't work, as they're not accessible via the web
if (config('filesystems.default') == 'local') { // TODO - is there any way to fix this at the StorageHelper layer?
return StorageHelper::downloader($file);
try {
return StorageHelper::showOrDownloadFile($file, $log->filename);
} catch (\Exception $e) {
return redirect()->route('accessories.show', ['accessory' => $accessory])->with('error', trans('general.file_not_found'));
}
}
return redirect()->route('accessories.show', ['accessory' => $accessory])->withFragment('files')->with('error', trans('general.log_record_not_found'));
}
return redirect()->route('accessories.index')->with('error', trans('general.file_does_not_exist', ['id' => $fileId]));
return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.does_not_exist'));
}
}

View File

@@ -3,8 +3,10 @@
namespace App\Http\Controllers\Accessories;
use App\Events\CheckoutableCheckedIn;
use App\Helpers\Helper;
use App\Http\Controllers\Controller;
use App\Models\Accessory;
use App\Models\AccessoryCheckout;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
@@ -23,7 +25,7 @@ class AccessoryCheckinController extends Controller
*/
public function create($accessoryUserId = null, $backto = null) : View | RedirectResponse
{
if (is_null($accessory_user = DB::table('accessories_users')->find($accessoryUserId))) {
if (is_null($accessory_user = DB::table('accessories_checkout')->find($accessoryUserId))) {
return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.not_found'));
}
@@ -38,16 +40,16 @@ class AccessoryCheckinController extends Controller
*
* @uses Accessory::checkin_email() to determine if an email can and should be sent
* @author [A. Gianotto] [<snipe@snipe.net>]
* @param null $accessoryUserId
* @param null $accessoryCheckoutId
* @param string $backto
*/
public function store(Request $request, $accessoryUserId = null, $backto = null) : RedirectResponse
public function store(Request $request, $accessoryCheckoutId = null, $backto = null) : RedirectResponse
{
if (is_null($accessory_user = DB::table('accessories_users')->find($accessoryUserId))) {
if (is_null($accessory_checkout = AccessoryCheckout::find($accessoryCheckoutId))) {
return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.does_not_exist'));
}
$accessory = Accessory::find($accessory_user->accessory_id);
$accessory = Accessory::find($accessory_checkout->accessory_id);
$this->authorize('checkin', $accessory);
@@ -58,12 +60,12 @@ class AccessoryCheckinController extends Controller
}
// Was the accessory updated?
if (DB::table('accessories_users')->where('id', '=', $accessory_user->id)->delete()) {
$return_to = e($accessory_user->assigned_to);
if ($accessory_checkout->delete()) {
event(new CheckoutableCheckedIn($accessory, $accessory_checkout->assignedTo, auth()->user(), $request->input('note'), $checkin_at));
event(new CheckoutableCheckedIn($accessory, User::find($return_to), auth()->user(), $request->input('note'), $checkin_at));
session()->put(['redirect_option' => $request->get('redirect_option')]);
return redirect()->route('accessories.show', $accessory->id)->with('success', trans('admin/accessories/message.checkin.success'));
return redirect()->to(Helper::getRedirectOption($request, $accessory->id, 'Accessories'))->with('success', trans('admin/accessories/message.checkin.success'));
}
// Redirect to the accessory management page with error
return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.checkin.error'));

View File

@@ -3,18 +3,24 @@
namespace App\Http\Controllers\Accessories;
use App\Events\CheckoutableCheckedOut;
use App\Helpers\Helper;
use App\Http\Controllers\CheckInOutRequest;
use App\Http\Controllers\Controller;
use App\Http\Requests\AccessoryCheckoutRequest;
use App\Models\Accessory;
use App\Models\AccessoryCheckout;
use App\Models\User;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use \Illuminate\Contracts\View\View;
use \Illuminate\Http\RedirectResponse;
class AccessoryCheckoutController extends Controller
{
use CheckInOutRequest;
/**
* Return the form to checkout an Accessory to a user.
*
@@ -24,7 +30,7 @@ class AccessoryCheckoutController extends Controller
public function create($id) : View | RedirectResponse
{
if ($accessory = Accessory::withCount('users as users_count')->find($id)) {
if ($accessory = Accessory::withCount('checkouts as checkouts_count')->find($id)) {
$this->authorize('checkout', $accessory);
@@ -57,44 +63,41 @@ class AccessoryCheckoutController extends Controller
*
* @author [A. Gianotto] [<snipe@snipe.net>]
* @param Request $request
* @param int $accessoryId
* @param Accessory $accessory
*/
public function store(Request $request, $accessoryId) : RedirectResponse
public function store(AccessoryCheckoutRequest $request, Accessory $accessory) : RedirectResponse
{
// Check if the accessory exists
if (is_null($accessory = Accessory::withCount('users as users_count')->find($accessoryId))) {
// Redirect to the accessory management page with error
return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.user_not_found'));
}
$this->authorize('checkout', $accessory);
if (!$user = User::find($request->input('assigned_to'))) {
return redirect()->route('accessories.checkout.show', $accessory->id)->with('error', trans('admin/accessories/message.checkout.user_does_not_exist'));
$target = $this->determineCheckoutTarget();
$accessory->checkout_qty = $request->input('checkout_qty', 1);
for ($i = 0; $i < $accessory->checkout_qty; $i++) {
$accessory_checkout = new AccessoryCheckout([
'accessory_id' => $accessory->id,
'created_at' => Carbon::now(),
'assigned_to' => $target->id,
'assigned_type' => $target::class,
'note' => $request->input('note'),
]);
$accessory_checkout->created_by = auth()->id();
$accessory_checkout->save();
}
// Make sure there is at least one available to checkout
if ($accessory->numRemaining() <= 0){
return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.checkout.unavailable'));
}
event(new CheckoutableCheckedOut($accessory, $target, auth()->user(), $request->input('note')));
$request->request->add(['checkout_to_type' => request('checkout_to_type')]);
$request->request->add(['assigned_to' => $target->id]);
// Update the accessory data
$accessory->assigned_to = e($request->input('assigned_to'));
session()->put(['redirect_option' => $request->get('redirect_option'), 'checkout_to_type' => $request->get('checkout_to_type')]);
$accessory->users()->attach($accessory->id, [
'accessory_id' => $accessory->id,
'created_at' => Carbon::now(),
'user_id' => Auth::id(),
'assigned_to' => $request->get('assigned_to'),
'note' => $request->input('note'),
]);
DB::table('accessories_users')->where('assigned_to', '=', $accessory->assigned_to)->where('accessory_id', '=', $accessory->id)->first();
event(new CheckoutableCheckedOut($accessory, $user, auth()->user(), $request->input('note')));
// Redirect to the new accessory page
return redirect()->route('accessories.index')->with('success', trans('admin/accessories/message.checkout.success'));
return redirect()->to(Helper::getRedirectOption($request, $accessory->id, 'Accessories'))
->with('success', trans('admin/accessories/message.checkout.success'));
}
}

View File

@@ -218,6 +218,7 @@ class AcceptanceController extends Controller
'item_tag' => $item->asset_tag,
'item_model' => $display_model,
'item_serial' => $item->serial,
'item_status' => $item->assetstatus?->name,
'eula' => $item->getEula(),
'note' => $request->input('note'),
'check_out_date' => Carbon::parse($acceptance->created_at)->format('Y-m-d'),
@@ -236,7 +237,11 @@ class AcceptanceController extends Controller
}
$acceptance->accept($sig_filename, $item->getEula(), $pdf_filename, $request->input('note'));
$acceptance->notify(new AcceptanceAssetAcceptedNotification($data));
try {
$acceptance->notify(new AcceptanceAssetAcceptedNotification($data));
} catch (\Exception $e) {
Log::warning($e);
}
event(new CheckoutAccepted($acceptance));
$return_msg = trans('admin/users/message.accepted');
@@ -308,6 +313,7 @@ class AcceptanceController extends Controller
'item_tag' => $item->asset_tag,
'item_model' => $display_model,
'item_serial' => $item->serial,
'item_status' => $item->assetstatus?->name,
'note' => $request->input('note'),
'declined_date' => Carbon::parse($acceptance->declined_at)->format('Y-m-d'),
'signature' => ($sig_filename) ? storage_path() . '/private_uploads/signatures/' . $sig_filename : null,
@@ -332,4 +338,5 @@ class AcceptanceController extends Controller
return redirect()->to('account/accept')->with('success', $return_msg);
}
}

View File

@@ -37,10 +37,19 @@ class ActionlogController extends Controller
}
}
public function getStoredEula($filename) : Response | BinaryFileResponse
public function getStoredEula($filename) : Response | BinaryFileResponse | RedirectResponse
{
$this->authorize('view', \App\Models\Asset::class);
$file = config('app.private_uploads').'/eula-pdfs/'.$filename;
return response()->download($file);
if (config('filesystems.default') == 's3_private') {
return redirect()->away(Storage::disk('s3_private')->temporaryUrl('private_uploads/eula-pdfs/'.$filename, now()->addMinutes(5)));
}
if (Storage::exists('private_uploads/eula-pdfs/'.$filename)) {
return response()->download(config('app.private_uploads').'/eula-pdfs/'.$filename);
}
return redirect()->back()->with('error', trans('general.file_does_not_exist'));
}
}

View File

@@ -4,21 +4,27 @@ namespace App\Http\Controllers\Api;
use App\Events\CheckoutableCheckedOut;
use App\Helpers\Helper;
use App\Http\Controllers\CheckInOutRequest;
use App\Http\Controllers\Controller;
use App\Http\Requests\AccessoryCheckoutRequest;
use App\Http\Requests\StoreAccessoryRequest;
use App\Http\Transformers\AccessoriesTransformer;
use App\Http\Transformers\SelectlistTransformer;
use App\Models\Accessory;
use App\Models\Company;
use App\Models\User;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Auth;
use Carbon\Carbon;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
use App\Http\Requests\ImageUploadRequest;
use App\Models\AccessoryCheckout;
class AccessoriesController extends Controller
{
use CheckInOutRequest;
/**
* Display a listing of the resource.
*
@@ -46,13 +52,14 @@ class AccessoriesController extends Controller
'min_amt',
'company_id',
'notes',
'users_count',
'checkouts_count',
'qty',
];
$accessories = Accessory::select('accessories.*')->with('category', 'company', 'manufacturer', 'users', 'location', 'supplier')
->withCount('users as users_count');
$accessories = Accessory::select('accessories.*')
->with('category', 'company', 'manufacturer', 'checkouts', 'location', 'supplier', 'adminuser')
->withCount('checkouts as checkouts_count');
if ($request->filled('search')) {
$accessories = $accessories->TextSearch($request->input('search'));
@@ -105,7 +112,10 @@ class AccessoriesController extends Controller
break;
case 'supplier':
$accessories = $accessories->OrderSupplier($order);
break;
break;
case 'created_by':
$accessories = $accessories->OrderByCreatedByName($order);
break;
default:
$accessories = $accessories->orderBy($column_sort, $order);
break;
@@ -121,14 +131,13 @@ class AccessoriesController extends Controller
/**
* Store a newly created resource in storage.
*
* @param \App\Http\Requests\ImageUploadRequest $request
* @return \Illuminate\Http\JsonResponse
* @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v4.0]
* @param \App\Http\Requests\ImageUploadRequest $request
* @return \Illuminate\Http\Response
*/
public function store(ImageUploadRequest $request)
public function store(StoreAccessoryRequest $request)
{
$this->authorize('create', Accessory::class);
$accessory = new Accessory;
$accessory->fill($request->all());
$accessory = $request->handleImages($accessory);
@@ -144,15 +153,15 @@ class AccessoriesController extends Controller
/**
* Display the specified resource.
*
* @param int $id
* @return array
* @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v4.0]
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$this->authorize('view', Accessory::class);
$accessory = Accessory::withCount('users as users_count')->findOrFail($id);
$accessory = Accessory::withCount('checkouts as checkouts_count')->findOrFail($id);
return (new AccessoriesTransformer)->transformAccessory($accessory);
}
@@ -161,10 +170,10 @@ class AccessoriesController extends Controller
/**
* Display the specified resource.
*
* @param int $id
* @return array
* @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v4.0]
* @param int $id
* @return \Illuminate\Http\Response
*/
public function accessory_detail($id)
{
@@ -176,47 +185,33 @@ class AccessoriesController extends Controller
/**
* Display the specified resource.
* Get the list of checkouts for a specific accessory
*
* @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v4.0]
* @param int $id
* @return \Illuminate\Http\Response
* @return | array
*/
public function checkedout($id, Request $request)
public function checkedout(Request $request, $id)
{
$this->authorize('view', Accessory::class);
$accessory = Accessory::with('lastCheckout')->findOrFail($id);
if (! Company::isCurrentUserHasAccess($accessory)) {
return ['total' => 0, 'rows' => []];
}
$offset = request('offset', 0);
$limit = request('limit', 50);
$accessory_users = $accessory->users;
$total = $accessory_users->count();
if ($total < $offset) {
$offset = 0;
}
$accessory_users = $accessory->users()->skip($offset)->take($limit)->get();
// Total count of all checkouts for this asset
$accessory_checkouts = $accessory->checkouts();
// Check for search text in the request
if ($request->filled('search')) {
$accessory_users = $accessory->users()
->where(function ($query) use ($request) {
$search_str = '%' . $request->input('search') . '%';
$query->where('first_name', 'like', $search_str)
->orWhere('last_name', 'like', $search_str)
->orWhere('note', 'like', $search_str);
})
->get();
$total = $accessory_users->count();
$accessory_checkouts = $accessory_checkouts->TextSearch($request->input('search'));
}
return (new AccessoriesTransformer)->transformCheckedoutAccessory($accessory, $accessory_users, $total);
$total = $accessory_checkouts->count();
$accessory_checkouts = $accessory_checkouts->skip($offset)->take($limit)->get();
return (new AccessoriesTransformer)->transformCheckedoutAccessory($accessory_checkouts, $total);
}
@@ -227,7 +222,7 @@ class AccessoriesController extends Controller
* @since [v4.0]
* @param \App\Http\Requests\ImageUploadRequest $request
* @param int $id
* @return \Illuminate\Http\Response
* @return \Illuminate\Http\JsonResponse
*/
public function update(ImageUploadRequest $request, $id)
{
@@ -249,7 +244,7 @@ class AccessoriesController extends Controller
* @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v4.0]
* @param int $id
* @return \Illuminate\Http\Response
* @return \Illuminate\Http\JsonResponse
*/
public function destroy($id)
{
@@ -273,43 +268,34 @@ class AccessoriesController extends Controller
* If Slack is enabled and/or asset acceptance is enabled, it will also
* trigger a Slack message and send an email.
*
* @author [A. Gianotto] [<snipe@snipe.net>]
* @param int $accessoryId
* @return \Illuminate\Http\RedirectResponse
* @return \Illuminate\Http\JsonResponse
* @author [A. Gianotto] [<snipe@snipe.net>]
*/
public function checkout(Request $request, $accessoryId)
public function checkout(AccessoryCheckoutRequest $request, Accessory $accessory)
{
// Check if the accessory exists
if (is_null($accessory = Accessory::withCount('users as users_count')->find($accessoryId))) {
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/accessories/message.does_not_exist')));
}
$this->authorize('checkout', $accessory);
$target = $this->determineCheckoutTarget();
$accessory->checkout_qty = $request->input('checkout_qty', 1);
for ($i = 0; $i < $accessory->checkout_qty; $i++) {
if ($accessory->numRemaining() > 0) {
if (! $user = User::find($request->input('assigned_to'))) {
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/accessories/message.checkout.user_does_not_exist')));
}
// Update the accessory data
$accessory->assigned_to = $request->input('assigned_to');
$accessory->users()->attach($accessory->id, [
$accessory_checkout = new AccessoryCheckout([
'accessory_id' => $accessory->id,
'created_at' => Carbon::now(),
'user_id' => Auth::id(),
'assigned_to' => $request->get('assigned_to'),
'note' => $request->get('note'),
'assigned_to' => $target->id,
'assigned_type' => $target::class,
'note' => $request->input('note'),
]);
event(new CheckoutableCheckedOut($accessory, $user, auth()->user(), $request->input('note')));
return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/accessories/message.checkout.success')));
$accessory_checkout->created_by = auth()->id();
$accessory_checkout->save();
}
return response()->json(Helper::formatStandardApiResponse('error', null, 'No accessories remaining'));
// Set this value to be able to pass the qty through to the event
event(new CheckoutableCheckedOut($accessory, $target, auth()->user(), $request->input('note')));
return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/accessories/message.checkout.success')));
}
@@ -326,29 +312,21 @@ class AccessoriesController extends Controller
*/
public function checkin(Request $request, $accessoryUserId = null)
{
if (is_null($accessory_user = DB::table('accessories_users')->find($accessoryUserId))) {
if (is_null($accessory_checkout = AccessoryCheckout::find($accessoryUserId))) {
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/accessories/message.does_not_exist')));
}
$accessory = Accessory::find($accessory_user->accessory_id);
$accessory = Accessory::find($accessory_checkout->accessory_id);
$this->authorize('checkin', $accessory);
$logaction = $accessory->logCheckin(User::find($accessory_user->assigned_to), $request->input('note'));
$accessory->logCheckin(User::find($accessory_checkout->assigned_to), $request->input('note'));
// Was the accessory updated?
if (DB::table('accessories_users')->where('id', '=', $accessory_user->id)->delete()) {
if (! is_null($accessory_user->assigned_to)) {
$user = User::find($accessory_user->assigned_to);
if ($accessory_checkout->delete()) {
if (! is_null($accessory_checkout->assigned_to)) {
$user = User::find($accessory_checkout->assigned_to);
}
$data['log_id'] = $logaction->id;
$data['first_name'] = $user->first_name;
$data['last_name'] = $user->last_name;
$data['item_name'] = $accessory->name;
$data['checkin_date'] = $logaction->created_at;
$data['item_tag'] = '';
$data['note'] = $logaction->note;
return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/accessories/message.checkin.success')));
}

View File

@@ -34,7 +34,7 @@ class AssetMaintenancesController extends Controller
$this->authorize('view', Asset::class);
$maintenances = AssetMaintenance::select('asset_maintenances.*')
->with('asset', 'asset.model', 'asset.location', 'asset.defaultLoc', 'supplier', 'asset.company', 'asset.assetstatus', 'admin');
->with('asset', 'asset.model', 'asset.location', 'asset.defaultLoc', 'supplier', 'asset.company', 'asset.assetstatus', 'adminuser');
if ($request->filled('search')) {
$maintenances = $maintenances->TextSearch($request->input('search'));
@@ -48,6 +48,10 @@ class AssetMaintenancesController extends Controller
$maintenances->where('asset_maintenances.supplier_id', '=', $request->input('supplier_id'));
}
if ($request->filled('created_by')) {
$maintenances->where('asset_maintenances.created_by', '=', $request->input('created_by'));
}
if ($request->filled('asset_maintenance_type')) {
$maintenances->where('asset_maintenance_type', '=', $request->input('asset_maintenance_type'));
}
@@ -69,7 +73,7 @@ class AssetMaintenancesController extends Controller
'asset_tag',
'asset_name',
'serial',
'user_id',
'created_by',
'supplier',
'is_warranty',
'status_label',
@@ -79,8 +83,8 @@ class AssetMaintenancesController extends Controller
$sort = in_array($request->input('sort'), $allowed_columns) ? e($request->input('sort')) : 'created_at';
switch ($sort) {
case 'user_id':
$maintenances = $maintenances->OrderAdmin($order);
case 'created_by':
$maintenances = $maintenances->OrderByCreatedBy($order);
break;
case 'supplier':
$maintenances = $maintenances->OrderBySupplier($order);
@@ -118,13 +122,13 @@ class AssetMaintenancesController extends Controller
* @version v1.0
* @since [v1.8]
*/
public function store(Request $request) : JsonResponse
public function store(Request $request) : JsonResponse | array
{
$this->authorize('update', Asset::class);
// create a new model instance
$maintenance = new AssetMaintenance();
$maintenance->fill($request->all());
$maintenance->user_id = Auth::id();
$maintenance->created_by = auth()->id();
// Was the asset maintenance created?
if ($maintenance->save()) {
@@ -145,7 +149,7 @@ class AssetMaintenancesController extends Controller
* @version v1.0
* @since [v4.0]
*/
public function update(Request $request, $id) : JsonResponse
public function update(Request $request, $id) : JsonResponse | array
{
$this->authorize('update', Asset::class);
@@ -182,15 +186,12 @@ class AssetMaintenancesController extends Controller
* @version v1.0
* @since [v4.0]
*/
public function destroy($assetMaintenanceId) : JsonResponse
public function destroy($assetMaintenanceId) : JsonResponse | array
{
$this->authorize('update', Asset::class);
// Check if the asset maintenance exists
$assetMaintenance = AssetMaintenance::findOrFail($assetMaintenanceId);
if (! Company::isCurrentUserHasAccess($assetMaintenance->asset)) {
return response()->json(Helper::formatStandardApiResponse('error', null, 'You cannot delete a maintenance for that asset'));
}
$assetMaintenance = AssetMaintenance::findOrFail($assetMaintenanceId);
$assetMaintenance->delete();
@@ -207,7 +208,7 @@ class AssetMaintenancesController extends Controller
* @version v1.0
* @since [v4.0]
*/
public function show($assetMaintenanceId) : JsonResponse
public function show($assetMaintenanceId) : JsonResponse | array
{
$this->authorize('view', Asset::class);
$assetMaintenance = AssetMaintenance::findOrFail($assetMaintenanceId);

View File

@@ -0,0 +1,179 @@
<?php
namespace App\Http\Controllers\Api;
use App\Helpers\StorageHelper;
use Illuminate\Support\Facades\Storage;
use App\Helpers\Helper;
use App\Http\Controllers\Controller;
use App\Models\AssetModel;
use App\Models\Actionlog;
use App\Http\Requests\UploadFileRequest;
use App\Http\Transformers\AssetModelsTransformer;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Log;
use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
/**
* This class controls file related actions related
* to assets for the Snipe-IT Asset Management application.
*
* Based on the Assets/AssetFilesController by A. Gianotto <snipe@snipe.net>
*
* @version v1.0
* @author [T. Scarsbrook] [<snipe@scarzybrook.co.uk>]
*/
class AssetModelFilesController extends Controller
{
/**
* Accepts a POST to upload a file to the server.
*
* @param \App\Http\Requests\UploadFileRequest $request
* @param int $assetModelId
* @since [v7.0.12]
* @author [r-xyz]
*/
public function store(UploadFileRequest $request, $assetModelId = null) : JsonResponse
{
// Start by checking if the asset being acted upon exists
if (! $assetModel = AssetModel::find($assetModelId)) {
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/models/message.does_not_exist')), 404);
}
// Make sure we are allowed to update this asset
$this->authorize('update', $assetModel);
if ($request->hasFile('file')) {
// If the file storage directory doesn't exist; create it
if (! Storage::exists('private_uploads/assetmodels')) {
Storage::makeDirectory('private_uploads/assetmodels', 775);
}
// Loop over the attached files and add them to the asset
foreach ($request->file('file') as $file) {
$file_name = $request->handleFile('private_uploads/assetmodels/','model-'.$assetModel->id, $file);
$assetModel->logUpload($file_name, e($request->get('notes')));
}
// All done - report success
return response()->json(Helper::formatStandardApiResponse('success', $assetModel, trans('admin/models/message.upload.success')));
}
// We only reach here if no files were included in the POST, so tell the user this
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/models/message.upload.nofiles')), 500);
}
/**
* List the files for an asset.
*
* @param int $assetmodel
* @since [v7.0.12]
* @author [r-xyz]
*/
public function list($assetmodel_id) : JsonResponse | array
{
$assetmodel = AssetModel::with('uploads')->find($assetmodel_id);
$this->authorize('view', $assetmodel);
return (new AssetModelsTransformer)->transformAssetModelFiles($assetmodel, $assetmodel->uploads()->count());
}
/**
* Check for permissions and display the file.
*
* @param int $assetModelId
* @param int $fileId
* @return \Illuminate\Http\JsonResponse
* @throws \Illuminate\Auth\Access\AuthorizationException
* @since [v7.0.12]
* @author [r-xyz]
*/
public function show($assetModelId = null, $fileId = null) : JsonResponse | StreamedResponse | Storage | StorageHelper | BinaryFileResponse
{
// Start by checking if the asset being acted upon exists
if (! $assetModel = AssetModel::find($assetModelId)) {
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/models/message.does_not_exist')), 404);
}
// the asset is valid
if (isset($assetModel->id)) {
$this->authorize('view', $assetModel);
// Check that the file being requested exists for the asset
if (! $log = Actionlog::whereNotNull('filename')->where('item_id', $assetModel->id)->find($fileId)) {
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/models/message.download.no_match', ['id' => $fileId])), 404);
}
// Form the full filename with path
$file = 'private_uploads/assetmodels/'.$log->filename;
Log::debug('Checking for '.$file);
if ($log->action_type == 'audit') {
$file = 'private_uploads/audits/'.$log->filename;
}
// Check the file actually exists on the filesystem
if (! Storage::exists($file)) {
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/models/message.download.does_not_exist', ['id' => $fileId])), 404);
}
if (request('inline') == 'true') {
$headers = [
'Content-Disposition' => 'inline',
];
return Storage::download($file, $log->filename, $headers);
}
return StorageHelper::downloader($file);
}
// Send back an error message
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/models/message.download.error', ['id' => $fileId])), 500);
}
/**
* Delete the associated file
*
* @param int $assetModelId
* @param int $fileId
* @since [v7.0.12]
* @author [r-xyz]
*/
public function destroy($assetModelId = null, $fileId = null) : JsonResponse
{
// Start by checking if the asset being acted upon exists
if (! $assetModel = AssetModel::find($assetModelId)) {
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/models/message.does_not_exist')), 404);
}
$rel_path = 'private_uploads/assetmodels';
// the asset is valid
if (isset($assetModel->id)) {
$this->authorize('update', $assetModel);
// Check for the file
$log = Actionlog::find($fileId);
if ($log) {
// Check the file actually exists, and delete it
if (Storage::exists($rel_path.'/'.$log->filename)) {
Storage::delete($rel_path.'/'.$log->filename);
}
// Delete the record of the file
$log->delete();
// All deleting done - notify the user of success
return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/models/message.deletefile.success')), 200);
}
// The file doesn't seem to really exist, so report an error
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/models/message.deletefile.error')), 500);
}
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/models/message.deletefile.error')), 500);
}
}

View File

@@ -48,26 +48,29 @@ class AssetModelsController extends Controller
'assets_count',
'category',
'fieldset',
'deleted_at',
'updated_at',
];
$assetmodels = AssetModel::select([
'models.id',
'models.image',
'models.name',
'model_number',
'min_amt',
'eol',
'requestable',
'models.model_number',
'models.min_amt',
'models.eol',
'models.created_by',
'models.requestable',
'models.notes',
'models.created_at',
'category_id',
'manufacturer_id',
'depreciation_id',
'fieldset_id',
'models.category_id',
'models.manufacturer_id',
'models.depreciation_id',
'models.fieldset_id',
'models.deleted_at',
'models.updated_at',
])
->with('category', 'depreciation', 'manufacturer', 'fieldset.fields.defaultValues')
->with('category', 'depreciation', 'manufacturer', 'fieldset.fields.defaultValues', 'adminuser')
->withCount('assets as assets_count');
if ($request->input('status')=='deleted') {
@@ -78,6 +81,10 @@ class AssetModelsController extends Controller
$assetmodels = $assetmodels->where('models.category_id', '=', $request->input('category_id'));
}
if ($request->filled('depreciation_id')) {
$assetmodels = $assetmodels->where('models.depreciation_id', '=', $request->input('depreciation_id'));
}
if ($request->filled('search')) {
$assetmodels->TextSearch($request->input('search'));
}
@@ -89,7 +96,7 @@ class AssetModelsController extends Controller
$order = $request->input('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'models.created_at';
switch ($sort) {
switch ($request->input('sort')) {
case 'manufacturer':
$assetmodels->OrderManufacturer($order);
break;
@@ -99,6 +106,9 @@ class AssetModelsController extends Controller
case 'fieldset':
$assetmodels->OrderFieldset($order);
break;
case 'created_by':
$assetmodels->OrderByCreatedByName($order);
break;
default:
$assetmodels->orderBy($sort, $order);
break;

View File

@@ -4,7 +4,9 @@ namespace App\Http\Controllers\Api;
use App\Events\CheckoutableCheckedIn;
use App\Http\Requests\StoreAssetRequest;
use App\Http\Requests\UpdateAssetRequest;
use App\Http\Traits\MigratesLegacyAssetLocations;
use App\Models\AccessoryCheckout;
use App\Models\CheckoutAcceptance;
use App\Models\LicenseSeat;
use Illuminate\Database\Eloquent\Builder;
@@ -25,13 +27,13 @@ use App\Models\License;
use App\Models\Location;
use App\Models\Setting;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Carbon\Carbon;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
use App\Http\Requests\ImageUploadRequest;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Route;
use App\View\Label;
use Illuminate\Support\Facades\Storage;
/**
@@ -55,6 +57,11 @@ class AssetsController extends Controller
public function index(Request $request, $action = null, $upcoming_status = null) : JsonResponse | array
{
// This handles the legacy audit endpoints :(
if ($action == 'audit') {
$action = 'audits';
}
$filter_non_deprecable_assets = false;
/**
@@ -74,10 +81,10 @@ class AssetsController extends Controller
$this->authorize('reports.view');
} else {
$transformer = 'App\Http\Transformers\AssetsTransformer';
$this->authorize('index', Asset::class);
$this->authorize('index', Asset::class);
}
$settings = Setting::getSettings();
$allowed_columns = [
@@ -120,8 +127,20 @@ class AssetsController extends Controller
}
$assets = Asset::select('assets.*')
->with('location', 'assetstatus', 'company', 'defaultLoc','assignedTo',
'model.category', 'model.manufacturer', 'model.fieldset','supplier'); //it might be tempting to add 'assetlog' here, but don't. It blows up update-heavy users.
->with(
'model',
'location',
'assetstatus',
'company',
'defaultLoc',
'assignedTo',
'adminuser',
'model.depreciation',
'model.category',
'model.manufacturer',
'model.fieldset',
'supplier'
); // it might be tempting to add 'assetlog' here, but don't. It blows up update-heavy users.
if ($filter_non_deprecable_assets) {
@@ -153,8 +172,8 @@ class AssetsController extends Controller
* Handle due and overdue audits and checkin dates
*/
switch ($action) {
// Audit (singular) is left over from earlier legacy APIs
case 'audits':
switch ($upcoming_status) {
case 'due':
$assets->DueForAudit($settings);
@@ -181,7 +200,7 @@ class AssetsController extends Controller
break;
}
break;
}
}
/**
* End handling due and overdue audits and checkin dates
@@ -259,7 +278,6 @@ class AssetsController extends Controller
$join->on('status_alias.id', '=', 'assets.status_id');
});
}
}
@@ -339,7 +357,7 @@ class AssetsController extends Controller
$column_sort = in_array($sort_override, $allowed_columns) ? $sort_override : 'assets.created_at';
$order = $request->input('order') === 'asc' ? 'asc' : 'desc';
switch ($sort_override) {
case 'model':
$assets->OrderModels($order);
@@ -370,8 +388,32 @@ class AssetsController extends Controller
case 'assigned_to':
$assets->OrderAssigned($order);
break;
case 'created_by':
$assets->OrderByCreatedByName($order);
break;
default:
$assets->orderBy($column_sort, $order);
$numeric_sort = false;
// Search through the custom fields array to see if we're sorting on a custom field
if (array_search($column_sort, $all_custom_fields->pluck('db_column')->toArray()) !== false) {
// Check to see if this is a numeric field type
foreach ($all_custom_fields as $field) {
if (($field->db_column == $sort_override) && ($field->format == 'NUMERIC')) {
$numeric_sort = true;
break;
}
}
// This may not work for all databases, but it works for MySQL
if ($numeric_sort) {
$assets->orderByRaw(DB::getTablePrefix() . 'assets.' . $sort_override . ' * 1 ' . $order);
} else {
$assets->orderBy($sort_override, $order);
}
} else {
$assets->orderBy($column_sort, $order);
}
break;
}
@@ -382,11 +424,11 @@ class AssetsController extends Controller
$total = $assets->count();
$assets = $assets->skip($offset)->take($limit)->get();
/**
* Include additional associated relationships
*/
*/
if ($request->input('components')) {
$assets->loadMissing(['components' => function ($query) {
$query->orderBy('created_at', 'desc');
@@ -410,7 +452,7 @@ class AssetsController extends Controller
* @since [v4.2.1]
* @author [A. Gianotto] [<snipe@snipe.net>]
*/
public function showByTag(Request $request, $tag) : JsonResponse | array
public function showByTag(Request $request, $tag): JsonResponse | array
{
$this->authorize('index', Asset::class);
$assets = Asset::where('asset_tag', $tag)->with('assetstatus')->with('assignedTo');
@@ -432,12 +474,10 @@ class AssetsController extends Controller
} else {
return (new AssetsTransformer)->transformAssets($assets, $assets->count());
}
}
// If there are 0 results, return the "no such asset" response
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/hardware/message.does_not_exist')), 200);
}
/**
@@ -448,7 +488,7 @@ class AssetsController extends Controller
* @since [v4.2.1]
* @return \Illuminate\Http\JsonResponse
*/
public function showBySerial(Request $request, $serial) : JsonResponse | array
public function showBySerial(Request $request, $serial): JsonResponse | array
{
$this->authorize('index', Asset::class);
$assets = Asset::where('serial', $serial)->with('assetstatus')->with('assignedTo');
@@ -457,14 +497,13 @@ class AssetsController extends Controller
if ($request->input('deleted', 'false') == 'true') {
$assets = $assets->withTrashed();
}
if (($assets = $assets->get()) && ($assets->count()) > 0) {
return (new AssetsTransformer)->transformAssets($assets, $assets->count());
return (new AssetsTransformer)->transformAssets($assets, $assets->count());
}
// If there are 0 results, return the "no such asset" response
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/hardware/message.does_not_exist')), 200);
}
/**
@@ -475,20 +514,20 @@ class AssetsController extends Controller
* @since [v4.0]
* @return \Illuminate\Http\JsonResponse
*/
public function show(Request $request, $id) : JsonResponse | array
public function show(Request $request, $id): JsonResponse | array
{
if ($asset = Asset::with('assetstatus')
->with('assignedTo')->withTrashed()
->withCount('checkins as checkins_count', 'checkouts as checkouts_count', 'userRequests as user_requests_count')->find($id)) {
->withCount('checkins as checkins_count', 'checkouts as checkouts_count', 'userRequests as user_requests_count')->find($id)
) {
$this->authorize('view', $asset);
return (new AssetsTransformer)->transformAsset($asset, $request->input('components') );
return (new AssetsTransformer)->transformAsset($asset, $request->input('components'));
}
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/hardware/message.does_not_exist')), 200);
}
public function licenses(Request $request, $id) : array
public function licenses(Request $request, $id): array
{
$this->authorize('view', Asset::class);
$this->authorize('view', License::class);
@@ -496,7 +535,7 @@ class AssetsController extends Controller
$licenses = $asset->licenses()->get();
return (new LicensesTransformer())->transformLicenses($licenses, $licenses->count());
}
}
/**
@@ -506,7 +545,7 @@ class AssetsController extends Controller
* @since [v4.0.16]
* @see \App\Http\Transformers\SelectlistTransformer
*/
public function selectlist(Request $request) : array
public function selectlist(Request $request): array
{
$assets = Asset::select([
@@ -517,7 +556,7 @@ class AssetsController extends Controller
'assets.assigned_to',
'assets.assigned_type',
'assets.status_id',
])->with('model', 'assetstatus', 'assignedTo')->NotArchived();
])->with('model', 'assetstatus', 'assignedTo')->NotArchived();
if ($request->filled('assetStatusType') && $request->input('assetStatusType') === 'RTD') {
$assets = $assets->RTD();
@@ -539,12 +578,12 @@ class AssetsController extends Controller
$asset->use_text = $asset->present()->fullName;
if (($asset->checkedOutToUser()) && ($asset->assigned)) {
$asset->use_text .= ' → '.$asset->assigned->getFullNameAttribute();
$asset->use_text .= ' → ' . $asset->assigned->getFullNameAttribute();
}
if ($asset->assetstatus->getStatuslabelType() == 'pending') {
$asset->use_text .= '('.$asset->assetstatus->getStatuslabelType().')';
$asset->use_text .= '(' . $asset->assetstatus->getStatuslabelType() . ')';
}
$asset->use_image = ($asset->getImageUrl()) ? $asset->getImageUrl() : null;
@@ -567,15 +606,15 @@ class AssetsController extends Controller
$asset->model()->associate(AssetModel::find((int) $request->get('model_id')));
$asset->fill($request->validated());
$asset->user_id = Auth::id();
$asset->created_by = auth()->id();
/**
* this is here just legacy reasons. Api\AssetController
* used image_source once to allow encoded image uploads.
*/
* this is here just legacy reasons. Api\AssetController
* used image_source once to allow encoded image uploads.
*/
if ($request->has('image_source')) {
$request->offsetSet('image', $request->offsetGet('image_source'));
}
}
$asset = $request->handleImages($asset);
@@ -592,16 +631,16 @@ class AssetsController extends Controller
// If input value is null, use custom field's default value
if ($field_val == null) {
Log::debug('Field value for '.$field->db_column.' is null');
Log::debug('Field value for ' . $field->db_column . ' is null');
$field_val = $field->defaultValue($request->get('model_id'));
Log::debug('Use the default fieldset value of '.$field->defaultValue($request->get('model_id')));
Log::debug('Use the default fieldset value of ' . $field->defaultValue($request->get('model_id')));
}
// if the field is set to encrypted, make sure we encrypt the value
if ($field->field_encrypted == '1') {
Log::debug('This model field is encrypted in this fieldset.');
if (Gate::allows('admin')) {
if (Gate::allows('assets.view.encrypted_custom_fields')) {
// If input value is null, use custom field's default value
if (($field_val == null) && ($request->has('model_id') != '')) {
@@ -612,7 +651,7 @@ class AssetsController extends Controller
}
}
if ($field->element == 'checkbox') {
if(is_array($field_val)) {
if (is_array($field_val)) {
$field_val = implode(',', $field_val);
}
}
@@ -651,94 +690,91 @@ class AssetsController extends Controller
* Accepts a POST request to update an asset
*
* @author [A. Gianotto] [<snipe@snipe.net>]
* @param \App\Http\Requests\ImageUploadRequest $request
* @since [v4.0]
*/
public function update(ImageUploadRequest $request, $id) : JsonResponse
public function update(UpdateAssetRequest $request, Asset $asset): JsonResponse
{
$this->authorize('update', Asset::class);
$asset->fill($request->validated());
if ($asset = Asset::find($id)) {
$asset->fill($request->all());
($request->filled('model_id')) ?
$asset->model()->associate(AssetModel::find($request->get('model_id'))) : null;
($request->filled('rtd_location_id')) ?
$asset->location_id = $request->get('rtd_location_id') : '';
($request->filled('company_id')) ?
$asset->company_id = Company::getIdForCurrentUser($request->get('company_id')) : '';
($request->filled('rtd_location_id')) ?
$asset->location_id = $request->get('rtd_location_id') : null;
/**
* this is here just legacy reasons. Api\AssetController
* used image_source once to allow encoded image uploads.
*/
if ($request->has('image_source')) {
$request->offsetSet('image', $request->offsetGet('image_source'));
}
$asset = $request->handleImages($asset);
$model = AssetModel::find($asset->model_id);
// Update custom fields
$problems_updating_encrypted_custom_fields = false;
if (($model) && (isset($model->fieldset))) {
foreach ($model->fieldset->fields as $field) {
$field_val = $request->input($field->db_column, null);
if ($request->has($field->db_column)) {
if ($field->element == 'checkbox') {
if(is_array($field_val)) {
$field_val = implode(',', $field_val);
}
}
if ($field->field_encrypted == '1') {
if (Gate::allows('admin')) {
$field_val = Crypt::encrypt($field_val);
} else {
$problems_updating_encrypted_custom_fields = true;
continue;
}
}
$asset->{$field->db_column} = $field_val;
}
}
}
if ($asset->save()) {
if (($request->filled('assigned_user')) && ($target = User::find($request->get('assigned_user')))) {
$location = $target->location_id;
} elseif (($request->filled('assigned_asset')) && ($target = Asset::find($request->get('assigned_asset')))) {
$location = $target->location_id;
Asset::where('assigned_type', \App\Models\Asset::class)->where('assigned_to', $id)
->update(['location_id' => $target->location_id]);
} elseif (($request->filled('assigned_location')) && ($target = Location::find($request->get('assigned_location')))) {
$location = $target->id;
}
if (isset($target)) {
$asset->checkOut($target, auth()->user(), date('Y-m-d H:i:s'), '', 'Checked out on asset update', e($request->get('name')), $location);
}
if ($asset->image) {
$asset->image = $asset->getImageUrl();
}
if ($problems_updating_encrypted_custom_fields) {
return response()->json(Helper::formatStandardApiResponse('success', $asset, trans('admin/hardware/message.update.encrypted_warning')));
} else {
return response()->json(Helper::formatStandardApiResponse('success', $asset, trans('admin/hardware/message.update.success')));
}
}
return response()->json(Helper::formatStandardApiResponse('error', null, $asset->getErrors()), 200);
if ($request->has('model_id')) {
$asset->model()->associate(AssetModel::find($request->validated()['model_id']));
}
if ($request->has('company_id')) {
$asset->company_id = Company::getIdForCurrentUser($request->validated()['company_id']);
}
if ($request->has('rtd_location_id') && !$request->has('location_id')) {
$asset->location_id = $request->validated()['rtd_location_id'];
}
if ($request->input('last_audit_date')) {
$asset->last_audit_date = Carbon::parse($request->input('last_audit_date'))->startOfDay()->format('Y-m-d H:i:s');
}
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/hardware/message.does_not_exist')), 200);
/**
* this is here just legacy reasons. Api\AssetController
* used image_source once to allow encoded image uploads.
*/
if ($request->has('image_source')) {
$request->offsetSet('image', $request->offsetGet('image_source'));
}
$asset = $request->handleImages($asset);
$model = $asset->model;
// Update custom fields
$problems_updating_encrypted_custom_fields = false;
if (($model) && (isset($model->fieldset))) {
foreach ($model->fieldset->fields as $field) {
$field_val = $request->input($field->db_column, null);
if ($request->has($field->db_column)) {
if ($field->element == 'checkbox') {
if (is_array($field_val)) {
$field_val = implode(',', $field_val);
}
}
if ($field->field_encrypted == '1') {
if (Gate::allows('assets.view.encrypted_custom_fields')) {
$field_val = Crypt::encrypt($field_val);
} else {
$problems_updating_encrypted_custom_fields = true;
continue;
}
}
$asset->{$field->db_column} = $field_val;
}
}
}
if ($asset->save()) {
if (($request->filled('assigned_user')) && ($target = User::find($request->get('assigned_user')))) {
$location = $target->location_id;
} elseif (($request->filled('assigned_asset')) && ($target = Asset::find($request->get('assigned_asset')))) {
$location = $target->location_id;
Asset::where('assigned_type', \App\Models\Asset::class)->where('assigned_to', $asset->id)
->update(['location_id' => $target->location_id]);
} elseif (($request->filled('assigned_location')) && ($target = Location::find($request->get('assigned_location')))) {
$location = $target->id;
}
if (isset($target)) {
$asset->checkOut($target, auth()->user(), date('Y-m-d H:i:s'), '', 'Checked out on asset update', e($request->get('name')), $location);
}
if ($asset->image) {
$asset->image = $asset->getImageUrl();
}
if ($problems_updating_encrypted_custom_fields) {
return response()->json(Helper::formatStandardApiResponse('success', $asset, trans('admin/hardware/message.update.encrypted_warning')));
// Below is the *correct* return since it uses the transformer, but we have to use the old, flat return for now until we can update Jamf2Snipe and Kanji2Snipe
// return response()->json(Helper::formatStandardApiResponse('success', (new AssetsTransformer)->transformAsset($asset), trans('admin/hardware/message.update.encrypted_warning')));
} else {
return response()->json(Helper::formatStandardApiResponse('success', $asset, trans('admin/hardware/message.update.success')));
// Below is the *correct* return since it uses the transformer, but we have to use the old, flat return for now until we can update Jamf2Snipe and Kanji2Snipe
/// return response()->json(Helper::formatStandardApiResponse('success', (new AssetsTransformer)->transformAsset($asset), trans('admin/hardware/message.update.success')));
}
}
return response()->json(Helper::formatStandardApiResponse('error', null, $asset->getErrors()), 200);
}
@@ -749,16 +785,23 @@ class AssetsController extends Controller
* @param int $assetId
* @since [v4.0]
*/
public function destroy($id) : JsonResponse
public function destroy($id): JsonResponse
{
$this->authorize('delete', Asset::class);
if ($asset = Asset::find($id)) {
$this->authorize('delete', $asset);
DB::table('assets')
->where('id', $asset->id)
->update(['assigned_to' => null]);
if ($asset->assignedTo) {
$target = $asset->assignedTo;
$checkin_at = date('Y-m-d H:i:s');
$originalValues = $asset->getRawOriginal();
event(new CheckoutableCheckedIn($asset, $target, auth()->user(), 'Checkin on delete', $checkin_at, $originalValues));
DB::table('assets')
->where('id', $asset->id)
->update(['assigned_to' => null]);
}
$asset->delete();
@@ -768,7 +811,7 @@ class AssetsController extends Controller
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/hardware/message.does_not_exist')), 200);
}
/**
* Restore a soft-deleted asset.
@@ -777,7 +820,7 @@ class AssetsController extends Controller
* @param int $assetId
* @since [v5.1.18]
*/
public function restore(Request $request, $assetId = null) : JsonResponse
public function restore(Request $request, $assetId = null): JsonResponse
{
if ($asset = Asset::withTrashed()->find($assetId)) {
@@ -796,7 +839,6 @@ class AssetsController extends Controller
}
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/hardware/message.does_not_exist')), 200);
}
/**
@@ -806,7 +848,7 @@ class AssetsController extends Controller
* @param string $tag
* @since [v6.0.5]
*/
public function checkoutByTag(AssetCheckoutRequest $request, $tag) : JsonResponse
public function checkoutByTag(AssetCheckoutRequest $request, $tag): JsonResponse
{
if ($asset = Asset::where('asset_tag', $tag)->first()) {
return $this->checkout($request, $asset->id);
@@ -821,13 +863,13 @@ class AssetsController extends Controller
* @param int $assetId
* @since [v4.0]
*/
public function checkout(AssetCheckoutRequest $request, $asset_id) : JsonResponse
public function checkout(AssetCheckoutRequest $request, $asset_id): JsonResponse
{
$this->authorize('checkout', Asset::class);
$asset = Asset::findOrFail($asset_id);
if (! $asset->availableForCheckout()) {
return response()->json(Helper::formatStandardApiResponse('error', ['asset'=> e($asset->asset_tag)], trans('admin/hardware/message.checkout.not_available')));
return response()->json(Helper::formatStandardApiResponse('error', ['asset' => e($asset->asset_tag)], trans('admin/hardware/message.checkout.not_available')));
}
$this->authorize('checkout', $asset);
@@ -844,14 +886,12 @@ class AssetsController extends Controller
$asset->location_id = ($target) ? $target->id : '';
$error_payload['target_id'] = $request->input('assigned_location');
$error_payload['target_type'] = 'location';
} elseif (request('checkout_to_type') == 'asset') {
$target = Asset::where('id', '!=', $asset_id)->find(request('assigned_asset'));
// Override with the asset's location_id if it has one
$asset->location_id = (($target) && (isset($target->location_id))) ? $target->location_id : '';
$error_payload['target_id'] = $request->input('assigned_asset');
$error_payload['target_type'] = 'asset';
} elseif (request('checkout_to_type') == 'user') {
// Fetch the target and set the asset's new location_id
$target = User::find(request('assigned_user'));
@@ -865,7 +905,7 @@ class AssetsController extends Controller
}
if (! isset($target)) {
return response()->json(Helper::formatStandardApiResponse('error', $error_payload, 'Checkout target for asset '.e($asset->asset_tag).' is invalid - '.$error_payload['target_type'].' does not exist.'));
return response()->json(Helper::formatStandardApiResponse('error', $error_payload, 'Checkout target for asset ' . e($asset->asset_tag) . ' is invalid - ' . $error_payload['target_type'] . ' does not exist.'));
}
$checkout_at = request('checkout_at', date('Y-m-d H:i:s'));
@@ -879,15 +919,15 @@ class AssetsController extends Controller
// TODO: Follow up here. WTF. Commented out for now.
// if ((isset($target->rtd_location_id)) && ($asset->rtd_location_id!='')) {
// $asset->location_id = $target->rtd_location_id;
// }
// if ((isset($target->rtd_location_id)) && ($asset->rtd_location_id!='')) {
// $asset->location_id = $target->rtd_location_id;
// }
if ($asset->checkOut($target, auth()->user(), $checkout_at, $expected_checkin, $note, $asset_name, $asset->location_id)) {
return response()->json(Helper::formatStandardApiResponse('success', ['asset'=> e($asset->asset_tag)], trans('admin/hardware/message.checkout.success')));
return response()->json(Helper::formatStandardApiResponse('success', ['asset' => e($asset->asset_tag)], trans('admin/hardware/message.checkout.success')));
}
return response()->json(Helper::formatStandardApiResponse('error', ['asset'=> e($asset->asset_tag)], trans('admin/hardware/message.checkout.error')));
return response()->json(Helper::formatStandardApiResponse('error', ['asset' => e($asset->asset_tag)], trans('admin/hardware/message.checkout.error')));
}
@@ -898,7 +938,7 @@ class AssetsController extends Controller
* @param int $assetId
* @since [v4.0]
*/
public function checkin(Request $request, $asset_id) : JsonResponse
public function checkin(Request $request, $asset_id): JsonResponse
{
$asset = Asset::with('model')->findOrFail($asset_id);
$this->authorize('checkin', $asset);
@@ -906,7 +946,7 @@ class AssetsController extends Controller
$target = $asset->assignedTo;
if (is_null($target)) {
return response()->json(Helper::formatStandardApiResponse('error', [
'asset_tag'=> e($asset->asset_tag),
'asset_tag' => e($asset->asset_tag),
'model' => e($asset->model->name),
'model_number' => e($asset->model->model_number)
], trans('admin/hardware/message.checkin.already_checked_in')));
@@ -929,16 +969,16 @@ class AssetsController extends Controller
if ($request->filled('location_id')) {
$asset->location_id = $request->input('location_id');
if ($request->input('update_default_location')){
if ($request->input('update_default_location')) {
$asset->rtd_location_id = $request->input('location_id');
}
}
if ($request->has('status_id')) {
if ($request->filled('status_id')) {
$asset->status_id = $request->input('status_id');
}
$checkin_at = $request->filled('checkin_at') ? $request->input('checkin_at').' '. date('H:i:s') : date('Y-m-d H:i:s');
$checkin_at = $request->filled('checkin_at') ? $request->input('checkin_at') . ' ' . date('H:i:s') : date('Y-m-d H:i:s');
$originalValues = $asset->getRawOriginal();
if (($request->filled('checkin_at')) && ($request->get('checkin_at') != date('Y-m-d'))) {
@@ -956,7 +996,8 @@ class AssetsController extends Controller
[Asset::class],
function (Builder $query) use ($asset) {
$query->where('id', $asset->id);
})
}
)
->get()
->map(function ($acceptance) {
$acceptance->delete();
@@ -966,13 +1007,13 @@ class AssetsController extends Controller
event(new CheckoutableCheckedIn($asset, $target, auth()->user(), $request->input('note'), $checkin_at, $originalValues));
return response()->json(Helper::formatStandardApiResponse('success', [
'asset_tag'=> e($asset->asset_tag),
'asset_tag' => e($asset->asset_tag),
'model' => e($asset->model->name),
'model_number' => e($asset->model->model_number)
], trans('admin/hardware/message.checkin.success')));
}
return response()->json(Helper::formatStandardApiResponse('error', ['asset'=> e($asset->asset_tag)], trans('admin/hardware/message.checkin.error')));
return response()->json(Helper::formatStandardApiResponse('error', ['asset' => e($asset->asset_tag)], trans('admin/hardware/message.checkin.error')));
}
/**
@@ -981,10 +1022,10 @@ class AssetsController extends Controller
* @author [A. Janes] [<ajanes@adagiohealth.org>]
* @since [v6.0]
*/
public function checkinByTag(Request $request, $tag = null) : JsonResponse
public function checkinByTag(Request $request, $tag = null): JsonResponse
{
$this->authorize('checkin', Asset::class);
if(null == $tag && null !== ($request->input('asset_tag'))) {
if (null == $tag && null !== ($request->input('asset_tag'))) {
$tag = $request->input('asset_tag');
}
$asset = Asset::where('asset_tag', $tag)->first();
@@ -994,8 +1035,8 @@ class AssetsController extends Controller
}
return response()->json(Helper::formatStandardApiResponse('error', [
'asset'=> e($tag)
], 'Asset with tag '.e($tag).' not found'));
'asset' => e($tag)
], 'Asset with tag ' . e($tag) . ' not found'));
}
@@ -1006,7 +1047,7 @@ class AssetsController extends Controller
* @param int $id
* @since [v4.0]
*/
public function audit(Request $request) : JsonResponse
public function audit(Request $request): JsonResponse
{
$this->authorize('audit', Asset::class);
@@ -1017,8 +1058,8 @@ class AssetsController extends Controller
// No tag passed - return an error
if (!$request->filled('asset_tag')) {
return response()->json(Helper::formatStandardApiResponse('error', [
'asset_tag'=> '',
'error'=> trans('admin/hardware/message.no_tag'),
'asset_tag' => '',
'error' => trans('admin/hardware/message.no_tag'),
], trans('admin/hardware/message.no_tag')), 200);
}
@@ -1066,28 +1107,25 @@ class AssetsController extends Controller
$asset->logAudit(request('note'), request('location_id'));
return response()->json(Helper::formatStandardApiResponse('success', [
'asset_tag'=> e($asset->asset_tag),
'note'=> e($request->input('note')),
'asset_tag' => e($asset->asset_tag),
'note' => e($request->input('note')),
'next_audit_date' => Helper::getFormattedDateObject($asset->next_audit_date),
], trans('admin/hardware/message.audit.success')));
}
// Asset failed validation or was not able to be saved
return response()->json(Helper::formatStandardApiResponse('error', [
'asset_tag'=> e($asset->asset_tag),
'error'=> $asset->getErrors()->first(),
'asset_tag' => e($asset->asset_tag),
'error' => $asset->getErrors()->first(),
], trans('admin/hardware/message.audit.error', ['error' => $asset->getErrors()->first()])), 200);
}
// No matching asset for the asset tag that was passed.
return response()->json(Helper::formatStandardApiResponse('error', [
'asset_tag'=> e($request->input('asset_tag')),
'error'=> trans('admin/hardware/message.audit.error'),
'asset_tag' => e($request->input('asset_tag')),
'error' => trans('admin/hardware/message.audit.error'),
], trans('admin/hardware/message.audit.error', ['error' => trans('admin/hardware/message.does_not_exist')])), 200);
}
@@ -1098,7 +1136,7 @@ class AssetsController extends Controller
* @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v4.0]
*/
public function requestable(Request $request) : JsonResponse | array
public function requestable(Request $request): JsonResponse | array
{
$this->authorize('viewRequestable', Asset::class);
@@ -1119,8 +1157,18 @@ class AssetsController extends Controller
}
$assets = Asset::select('assets.*')
->with('location', 'assetstatus', 'assetlog', 'company','assignedTo',
'model.category', 'model.manufacturer', 'model.fieldset', 'supplier', 'requests');
->with(
'location',
'assetstatus',
'assetlog',
'company',
'assignedTo',
'model.category',
'model.manufacturer',
'model.fieldset',
'supplier',
'requests'
);
@@ -1128,7 +1176,7 @@ class AssetsController extends Controller
if ($request->filled('search')) {
$assets->TextSearch($request->input('search'));
}
// Search custom fields by column name
foreach ($all_custom_fields as $field) {
if ($request->filled($field->db_column_name())) {
@@ -1169,4 +1217,110 @@ class AssetsController extends Controller
return (new AssetsTransformer)->transformRequestedAssets($assets, $total);
}
public function assignedAssets(Request $request, Asset $asset) : JsonResponse | array
{
return [];
// to do
}
public function assignedAccessories(Request $request, Asset $asset) : JsonResponse | array
{
$this->authorize('view', Asset::class);
$this->authorize('view', $asset);
$accessory_checkouts = AccessoryCheckout::AssetsAssigned()->with('adminuser')->with('accessories');
$offset = ($request->input('offset') > $accessory_checkouts->count()) ? $accessory_checkouts->count() : app('api_offset_value');
$limit = app('api_limit_value');
$total = $accessory_checkouts->count();
$accessory_checkouts = $accessory_checkouts->skip($offset)->take($limit)->get();
return (new AssetsTransformer)->transformCheckedoutAccessories($accessory_checkouts, $total);
}
/**
* Generate asset labels by tag
*
* @author [Nebelkreis] [https://github.com/NebelKreis]
*
* @param Request $request Contains asset_tags array of asset tags to generate labels for
* @return JsonResponse Returns base64 encoded PDF on success, error message on failure
*/
public function getLabels(Request $request): JsonResponse
{
try {
$this->authorize('view', Asset::class);
// Validate that asset tags were provided in the request
if (!$request->filled('asset_tags')) {
return response()->json(Helper::formatStandardApiResponse('error', null,
trans('admin/hardware/message.no_assets_selected')), 400);
}
// Convert asset tags from request into collection and fetch matching assets
$asset_tags = collect($request->input('asset_tags'));
$assets = Asset::whereIn('asset_tag', $asset_tags)->get();
// Return error if no assets were found for the provided tags
if ($assets->isEmpty()) {
return response()->json(Helper::formatStandardApiResponse('error', null,
trans('admin/hardware/message.does_not_exist')), 404);
}
try {
$settings = Setting::getSettings();
// Check if logo file exists in storage and disable logo if not found
// This prevents errors when trying to include a non-existent logo in the PDF
$settings->label_logo = ($original_logo = $settings->label_logo) && !Storage::disk('public')->exists('/' . $original_logo) ? null : $settings->label_logo;
$label = new Label();
if (!$label) {
throw new \Exception('Label object could not be created');
}
// Configure label with assets and settings
// bulkedit=false and count=0 are default values for label generation
$label = $label->with('assets', $assets)
->with('settings', $settings)
->with('bulkedit', false)
->with('count', 0);
// Generate PDF using callback function
// The callback captures the PDF content in $pdf_content variable
$pdf_content = '';
$label->render(function($pdf) use (&$pdf_content) {
$pdf_content = $pdf->Output('', 'S');
return $pdf;
});
// Verify PDF was generated successfully
if (empty($pdf_content)) {
throw new \Exception('PDF content is empty');
}
$encoded_content = base64_encode($pdf_content);
return response()->json(Helper::formatStandardApiResponse('success', [
'pdf' => $encoded_content
], trans('admin/hardware/message.labels_generated')));
} catch (\Exception $e) {
return response()->json(Helper::formatStandardApiResponse('error', [
'error_message' => $e->getMessage(),
'error_line' => $e->getLine(),
'error_file' => $e->getFile()
], trans('admin/hardware/message.error_generating_labels')), 500);
}
} catch (\Exception $e) {
return response()->json(Helper::formatStandardApiResponse('error', [
'error_message' => $e->getMessage(),
'error_line' => $e->getLine(),
'error_file' => $e->getFile()
], $e->getMessage()), 500);
}
}
}

View File

@@ -39,10 +39,12 @@ class CategoriesController extends Controller
'components_count',
'licenses_count',
'image',
'notes',
];
$categories = Category::select([
'id',
'created_by',
'created_at',
'updated_at',
'name', 'category_type',
@@ -50,8 +52,11 @@ class CategoriesController extends Controller
'eula_text',
'require_acceptance',
'checkin_email',
'image'
])->withCount('accessories as accessories_count', 'consumables as consumables_count', 'components as components_count', 'licenses as licenses_count');
'image',
'notes',
])
->with('adminuser')
->withCount('accessories as accessories_count', 'consumables as consumables_count', 'components as components_count', 'licenses as licenses_count');
/*
@@ -91,13 +96,33 @@ class CategoriesController extends Controller
$categories->where('checkin_email', '=', $request->input('checkin_email'));
}
if ($request->filled('created_by')) {
$categories->where('created_by', '=', $request->input('created_by'));
}
if ($request->filled('created_at')) {
$categories->where('created_at', '=', $request->input('created_at'));
}
if ($request->filled('updated_at')) {
$categories->where('updated_at', '=', $request->input('updated_at'));
}
// Make sure the offset and limit are actually integers and do not exceed system limits
$offset = ($request->input('offset') > $categories->count()) ? $categories->count() : app('api_offset_value');
$limit = app('api_limit_value');
$order = $request->input('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'assets_count';
$categories->orderBy($sort, $order);
$sort_override = $request->input('sort');
$column_sort = in_array($sort_override, $allowed_columns) ? $sort_override : 'assets_count';
switch ($sort_override) {
case 'created_by':
$categories = $categories->OrderByCreatedBy($order);
break;
default:
$categories = $categories->orderBy($column_sort, $order);
break;
}
$total = $categories->count();
$categories = $categories->skip($offset)->take($limit)->get();

View File

@@ -38,6 +38,7 @@ class CompaniesController extends Controller
'accessories_count',
'consumables_count',
'components_count',
'notes',
];
$companies = Company::withCount(['assets as assets_count' => function ($query) {
@@ -56,17 +57,29 @@ class CompaniesController extends Controller
$companies->where('email', '=', $request->input('email'));
}
if ($request->filled('created_by')) {
$companies->where('created_by', '=', $request->input('created_by'));
}
// Make sure the offset and limit are actually integers and do not exceed system limits
$offset = ($request->input('offset') > $companies->count()) ? $companies->count() : app('api_offset_value');
$limit = app('api_limit_value');
$order = $request->input('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at';
$companies->orderBy($sort, $order);
$sort_override = $request->input('sort');
$column_sort = in_array($sort_override, $allowed_columns) ? $sort_override : 'created_at';
switch ($sort_override) {
case 'created_by':
$companies = $companies->OrderByCreatedBy($order);
break;
default:
$companies = $companies->orderBy($column_sort, $order);
break;
}
$total = $companies->count();
$companies = $companies->skip($offset)->take($limit)->get();
return (new CompaniesTransformer)->transformCompanies($companies, $total);

View File

@@ -38,6 +38,7 @@ class ComponentsController extends Controller
'name',
'min_amt',
'order_number',
'model_number',
'serial',
'purchase_date',
'purchase_cost',
@@ -47,7 +48,7 @@ class ComponentsController extends Controller
];
$components = Component::select('components.*')
->with('company', 'location', 'category', 'assets', 'supplier');
->with('company', 'location', 'category', 'assets', 'supplier', 'adminuser', 'manufacturer');
if ($request->filled('search')) {
$components = $components->TextSearch($request->input('search'));
@@ -69,6 +70,14 @@ class ComponentsController extends Controller
$components->where('supplier_id', '=', $request->input('supplier_id'));
}
if ($request->filled('manufacturer_id')) {
$components->where('manufacturer_id', '=', $request->input('manufacturer_id'));
}
if ($request->filled('model_number')) {
$components->where('model_number', '=', $request->input('model_number'));
}
if ($request->filled('location_id')) {
$components->where('location_id', '=', $request->input('location_id'));
}
@@ -98,6 +107,12 @@ class ComponentsController extends Controller
case 'supplier':
$components = $components->OrderSupplier($order);
break;
case 'manufacturer':
$components = $components->OrderManufacturer($order);
break;
case 'created_by':
$components = $components->OrderByCreatedBy($order);
break;
default:
$components = $components->orderBy($column_sort, $order);
break;
@@ -270,7 +285,7 @@ class ComponentsController extends Controller
'component_id' => $component->id,
'created_at' => Carbon::now(),
'assigned_qty' => $request->get('assigned_qty', 1),
'user_id' => auth()->id(),
'created_by' => auth()->id(),
'asset_id' => $request->get('assigned_to'),
'note' => $request->get('note'),
]);
@@ -294,9 +309,7 @@ class ComponentsController extends Controller
public function checkin(Request $request, $component_asset_id) : JsonResponse
{
if ($component_assets = DB::table('components_assets')->find($component_asset_id)) {
if (is_null($component = Component::find($component_assets->component_id))) {
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/components/message.not_found')));
}
@@ -304,17 +317,13 @@ class ComponentsController extends Controller
$max_to_checkin = $component_assets->assigned_qty;
if ($max_to_checkin > 1) {
$validator = Validator::make($request->all(), [
"checkin_qty" => "required|numeric|between:1,$max_to_checkin"
]);
if ($validator->fails()) {
return response()->json(Helper::formatStandardApiResponse('error', null, 'Checkin quantity must be between 1 and '.$max_to_checkin));
}
$validator = Validator::make($request->all(), [
"checkin_qty" => "required|numeric|between:1,$max_to_checkin"
]);
if ($validator->fails()) {
return response()->json(Helper::formatStandardApiResponse('error', null, 'Checkin quantity must be between 1 and ' . $max_to_checkin));
}
// Validation passed, so let's figure out what we have to do here.
$qty_remaining_in_checkout = ($component_assets->assigned_qty - (int)$request->input('checkin_qty', 1));
@@ -324,28 +333,23 @@ class ComponentsController extends Controller
$component_assets->assigned_qty = $qty_remaining_in_checkout;
Log::debug($component_asset_id.' - '.$qty_remaining_in_checkout.' remaining in record '.$component_assets->id);
DB::table('components_assets')->where('id',
$component_asset_id)->update(['assigned_qty' => $qty_remaining_in_checkout]);
DB::table('components_assets')->where('id', $component_asset_id)->update(['assigned_qty' => $qty_remaining_in_checkout]);
// If the checked-in qty is exactly the same as the assigned_qty,
// we can simply delete the associated components_assets record
if ($qty_remaining_in_checkout == 0) {
if ($qty_remaining_in_checkout === 0) {
DB::table('components_assets')->where('id', '=', $component_asset_id)->delete();
}
$asset = Asset::find($component_assets->asset_id);
event(new CheckoutableCheckedIn($component, $asset, auth()->user(), $request->input('note'), Carbon::now()));
return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/components/message.checkin.success')));
}
return response()->json(Helper::formatStandardApiResponse('error', null, 'No matching checkouts for that component join record'));
}
}

View File

@@ -86,9 +86,15 @@ class ConsumablesController extends Controller
case 'company':
$consumables = $consumables->OrderCompany($order);
break;
case 'remaining':
$consumables = $consumables->OrderRemaining($order);
break;
case 'supplier':
$consumables = $consumables->OrderSupplier($order);
break;
case 'created_by':
$consumables = $consumables->OrderByCreatedBy($order);
break;
default:
// This array is what determines which fields should be allowed to be sorted on ON the table itself.
// These must match a column on the consumables table directly.
@@ -207,7 +213,7 @@ class ConsumablesController extends Controller
$consumable = Consumable::with(['consumableAssignments'=> function ($query) {
$query->orderBy($query->getModel()->getTable().'.created_at', 'DESC');
},
'consumableAssignments.admin'=> function ($query) {
'consumableAssignments.adminuser'=> function ($query) {
},
'consumableAssignments.user'=> function ($query) {
},
@@ -225,7 +231,8 @@ class ConsumablesController extends Controller
'name' => ($consumable_assignment->user) ? $consumable_assignment->user->present()->nameUrl() : 'Deleted User',
'created_at' => Helper::getFormattedDateObject($consumable_assignment->created_at, 'datetime'),
'note' => ($consumable_assignment->note) ? e($consumable_assignment->note) : null,
'admin' => ($consumable_assignment->admin) ? $consumable_assignment->admin->present()->nameUrl() : null,
'admin' => ($consumable_assignment->adminuser) ? $consumable_assignment->adminuser->present()->nameUrl() : null, // legacy, so we don't change the shape of the response
'created_by' => ($consumable_assignment->adminuser) ? $consumable_assignment->adminuser->present()->nameUrl() : null,
];
}
@@ -251,6 +258,8 @@ class ConsumablesController extends Controller
$this->authorize('checkout', $consumable);
$consumable->checkout_qty = $request->input('checkout_qty', 1);
// Make sure there is at least one available to checkout
if ($consumable->numRemaining() <= 0) {
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/consumables/message.checkout.unavailable')));
@@ -261,6 +270,12 @@ class ConsumablesController extends Controller
return response()->json(Helper::formatStandardApiResponse('error', null, trans('general.invalid_item_category_single', ['type' => trans('general.consumable')])));
}
// Make sure there is at least one available to checkout
if ($consumable->numRemaining() <= 0 || $consumable->checkout_qty > $consumable->numRemaining()) {
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/consumables/message.checkout.unavailable', ['requested' => $consumable->checkout_qty, 'remaining' => $consumable->numRemaining() ])));
}
// Check if the user exists - @TODO: this should probably be handled via validation, not here??
if (!$user = User::find($request->input('assigned_to'))) {
@@ -271,14 +286,17 @@ class ConsumablesController extends Controller
// Update the consumable data
$consumable->assigned_to = $request->input('assigned_to');
$consumable->users()->attach($consumable->id,
for ($i = 0; $i < $consumable->checkout_qty; $i++) {
$consumable->users()->attach($consumable->id,
[
'consumable_id' => $consumable->id,
'user_id' => $user->id,
'created_by' => $user->id,
'assigned_to' => $request->input('assigned_to'),
'note' => $request->input('note'),
]
);
}
event(new CheckoutableCheckedOut($consumable, $user, auth()->user(), $request->input('note')));

View File

@@ -23,7 +23,7 @@ class DepartmentsController extends Controller
public function index(Request $request) : JsonResponse | array
{
$this->authorize('view', Department::class);
$allowed_columns = ['id', 'name', 'image', 'users_count'];
$allowed_columns = ['id', 'name', 'image', 'users_count', 'notes'];
$departments = Department::select(
'departments.id',
@@ -35,7 +35,8 @@ class DepartmentsController extends Controller
'departments.manager_id',
'departments.created_at',
'departments.updated_at',
'departments.image'
'departments.image',
'departments.notes',
)->with('users')->with('location')->with('manager')->with('company')->withCount('users as users_count');
if ($request->filled('search')) {
@@ -72,6 +73,9 @@ class DepartmentsController extends Controller
case 'manager':
$departments->OrderManager($order);
break;
case 'company':
$departments->OrderCompany($order);
break;
default:
$departments->orderBy($sort, $order);
break;
@@ -97,7 +101,7 @@ class DepartmentsController extends Controller
$department->fill($request->all());
$department = $request->handleImages($department);
$department->user_id = auth()->id();
$department->created_by = auth()->id();
$department->manager_id = ($request->filled('manager_id') ? $request->input('manager_id') : null);
if ($department->save()) {

View File

@@ -20,9 +20,23 @@ class DepreciationsController extends Controller
public function index(Request $request) : JsonResponse | array
{
$this->authorize('view', Depreciation::class);
$allowed_columns = ['id','name','months','depreciation_min','created_at'];
$allowed_columns = [
'id',
'name',
'months',
'depreciation_min',
'depreciation_type',
'created_at',
'assets_count',
'models_count',
'licenses_count',
];
$depreciations = Depreciation::select('id','name','months','depreciation_min','user_id','created_at','updated_at');
$depreciations = Depreciation::select('id','name','months','depreciation_min','depreciation_type','created_at','updated_at', 'created_by')
->with('adminuser')
->withCount('assets as assets_count')
->withCount('models as models_count')
->withCount('licenses as licenses_count');
if ($request->filled('search')) {
$depreciations = $depreciations->TextSearch($request->input('search'));
@@ -31,10 +45,18 @@ class DepreciationsController extends Controller
// Make sure the offset and limit are actually integers and do not exceed system limits
$offset = ($request->input('offset') > $depreciations->count()) ? $depreciations->count() : app('api_offset_value');
$limit = app('api_limit_value');
$order = $request->input('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at';
$depreciations->orderBy($sort, $order);
$sort_override = $request->input('sort');
$column_sort = in_array($sort_override, $allowed_columns) ? $sort_override : 'created_at';
switch ($sort_override) {
case 'created_by':
$depreciations = $depreciations->OrderByCreatedBy($order);
break;
default:
$depreciations = $depreciations->orderBy($column_sort, $order);
break;
}
$total = $depreciations->count();
$depreciations = $depreciations->skip($offset)->take($limit)->get();

View File

@@ -23,9 +23,8 @@ class GroupsController extends Controller
$this->authorize('superadmin');
$this->authorize('view', Group::class);
$allowed_columns = ['id', 'name', 'created_at', 'users_count'];
$groups = Group::select('id', 'name', 'permissions', 'created_at', 'updated_at', 'created_by')->with('admin')->withCount('users as users_count');
$groups = Group::select('id', 'name', 'permissions', 'notes', 'created_at', 'updated_at', 'created_by')->with('adminuser')->withCount('users as users_count');
if ($request->filled('search')) {
$groups = $groups->TextSearch($request->input('search'));
@@ -35,13 +34,29 @@ class GroupsController extends Controller
$groups->where('name', '=', $request->input('name'));
}
// Make sure the offset and limit are actually integers and do not exceed system limits
$offset = ($request->input('offset') > $groups->count()) ? $groups->count() : app('api_offset_value');
$limit = app('api_limit_value');
$order = $request->input('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at';
$groups->orderBy($sort, $order);
switch ($request->input('sort')) {
case 'created_by':
$groups = $groups->OrderByCreatedBy($order);
break;
default:
// This array is what determines which fields should be allowed to be sorted on ON the table itself.
// These must match a column on the consumables table directly.
$allowed_columns = [
'id',
'name',
'created_at',
'users_count',
];
$sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at';
$groups = $groups->orderBy($sort, $order);
break;
}
$total = $groups->count();
$groups = $groups->skip($offset)->take($limit)->get();
@@ -66,6 +81,7 @@ class GroupsController extends Controller
$group->name = $request->input('name');
$group->created_by = auth()->id();
$group->notes = $request->input('notes');
$group->permissions = json_encode($request->input('permissions', $groupPermissions));
if ($group->save()) {
@@ -103,6 +119,7 @@ class GroupsController extends Controller
$group = Group::findOrFail($id);
$group->name = $request->input('name');
$group->notes = $request->input('notes');
$group->permissions = $request->input('permissions'); // Todo - some JSON validation stuff here
if ($group->save()) {

View File

@@ -9,12 +9,14 @@ use App\Http\Transformers\ImportsTransformer;
use App\Models\Asset;
use App\Models\Company;
use App\Models\Import;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Database\Eloquent\JsonEncodingException;
use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Storage;
use League\Csv\Reader;
use Onnov\DetectEncoding\EncodingDetector;
use Symfony\Component\HttpFoundation\File\Exception\FileException;
use Illuminate\Support\Facades\Log;
use Illuminate\Http\JsonResponse;
@@ -28,8 +30,7 @@ class ImportController extends Controller
public function index() : JsonResponse | array
{
$this->authorize('import');
$imports = Import::latest()->get();
$imports = Import::with('adminuser')->latest()->get();
return (new ImportsTransformer)->transformImports($imports);
}
@@ -46,6 +47,8 @@ class ImportController extends Controller
$path = config('app.private_uploads').'/imports';
$results = [];
$import = new Import;
$detector = new EncodingDetector();
foreach ($files as $file) {
if (! in_array($file->getMimeType(), [
'application/vnd.ms-excel',
@@ -56,7 +59,6 @@ class ImportController extends Controller
'text/comma-separated-values',
'text/tsv', ])) {
$results['error'] = 'File type must be CSV. Uploaded file is '.$file->getMimeType();
return response()->json(Helper::formatStandardApiResponse('error', null, $results['error']), 422);
}
@@ -64,7 +66,25 @@ class ImportController extends Controller
if (! ini_get('auto_detect_line_endings')) {
ini_set('auto_detect_line_endings', '1');
}
$file_contents = $file->getContent(); //TODO - this *does* load the whole file in RAM, but we need that to be able to 'iconv' it?
$encoding = $detector->getEncoding($file_contents);
$reader = null;
if (strcasecmp($encoding, 'UTF-8') != 0) {
$transliterated = iconv($encoding, 'UTF-8', $file_contents);
if ($transliterated !== false) {
$tmpname = tempnam(sys_get_temp_dir(), '');
$tmpresults = file_put_contents($tmpname, $transliterated);
if ($tmpresults !== false) {
$transliterated = null; //save on memory?
$newfile = new UploadedFile($tmpname, $file->getClientOriginalName(), null, null, true); //WARNING: this is enabling 'test mode' - which is gross, but otherwise the file won't be treated as 'uploaded'
if ($newfile->isValid()) {
$file = $newfile;
}
}
}
}
$reader = Reader::createFromFileObject($file->openFile('r')); //file pointer leak?
$file_contents = null; //try to save on memory, I guess?
try {
$import->header_row = $reader->fetchOne(0);
@@ -133,7 +153,7 @@ class ImportController extends Controller
}
$import->filesize = filesize($path.'/'.$file_name);
$import->created_by = auth()->id();
$import->save();
$results[] = $import;
}
@@ -177,6 +197,9 @@ class ImportController extends Controller
case 'asset':
$redirectTo = 'hardware.index';
break;
case 'assetModel':
$redirectTo = 'models.index';
break;
case 'accessory':
$redirectTo = 'accessories.index';
break;

View File

@@ -107,7 +107,7 @@ class LicenseSeatsController extends Controller
// attempt to update the license seat
$licenseSeat->fill($request->all());
$licenseSeat->user_id = auth()->id();
$licenseSeat->created_by = auth()->id();
// check if this update is a checkin operation
// 1. are relevant fields touched at all?

View File

@@ -24,10 +24,10 @@ class LicensesController extends Controller
{
$this->authorize('view', License::class);
$licenses = License::with('company', 'manufacturer', 'supplier','category')->withCount('freeSeats as free_seats_count');
$licenses = License::with('company', 'manufacturer', 'supplier','category', 'adminuser')->withCount('freeSeats as free_seats_count');
if ($request->filled('company_id')) {
$licenses->where('company_id', '=', $request->input('company_id'));
$licenses->where('licenses.company_id', '=', $request->input('company_id'));
}
if ($request->filled('name')) {
@@ -70,6 +70,9 @@ class LicensesController extends Controller
$licenses->where('depreciation_id', '=', $request->input('depreciation_id'));
}
if ($request->filled('created_by')) {
$licenses->where('created_by', '=', $request->input('created_by'));
}
if (($request->filled('maintained')) && ($request->input('maintained')=='true')) {
$licenses->where('maintained','=',1);
@@ -113,6 +116,9 @@ class LicensesController extends Controller
case 'company':
$licenses = $licenses->leftJoin('companies', 'licenses.company_id', '=', 'companies.id')->orderBy('companies.name', $order);
break;
case 'created_by':
$licenses = $licenses->OrderByCreatedBy($order);
break;
default:
$allowed_columns =
[
@@ -176,7 +182,7 @@ class LicensesController extends Controller
public function show($id) : JsonResponse | array
{
$this->authorize('view', License::class);
$license = License::withCount('freeSeats')->findOrFail($id);
$license = License::withCount('freeSeats as free_seats_count')->findOrFail($id);
$license = $license->load('assignedusers', 'licenseSeats.user', 'licenseSeats.asset');
return (new LicensesTransformer)->transformLicense($license);
@@ -214,7 +220,6 @@ class LicensesController extends Controller
*/
public function destroy($id) : JsonResponse
{
//
$license = License::findOrFail($id);
$this->authorize('delete', $license);

View File

@@ -3,15 +3,20 @@
namespace App\Http\Controllers\Api;
use App\Helpers\Helper;
use App\Http\Requests\ImageUploadRequest;
use App\Http\Controllers\Controller;
use App\Http\Requests\ImageUploadRequest;
use App\Http\Transformers\AccessoriesTransformer;
use App\Http\Transformers\AssetsTransformer;
use App\Http\Transformers\LocationsTransformer;
use App\Http\Transformers\SelectlistTransformer;
use App\Models\Accessory;
use App\Models\AccessoryCheckout;
use App\Models\Asset;
use App\Models\Location;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Collection;
use Illuminate\Http\JsonResponse;
class LocationsController extends Controller
{
@@ -26,26 +31,29 @@ class LocationsController extends Controller
{
$this->authorize('view', Location::class);
$allowed_columns = [
'id',
'name',
'accessories_count',
'address',
'address2',
'assets_count',
'assets_count',
'assigned_accessories_count',
'assigned_assets_count',
'assigned_assets_count',
'city',
'state',
'country',
'zip',
'created_at',
'updated_at',
'manager_id',
'image',
'assigned_assets_count',
'users_count',
'assets_count',
'assigned_assets_count',
'assets_count',
'rtd_assets_count',
'currency',
'id',
'image',
'ldap_ou',
'manager_id',
'name',
'rtd_assets_count',
'state',
'updated_at',
'users_count',
'zip',
'notes',
];
$locations = Location::with('parent', 'manager', 'children')->select([
@@ -66,8 +74,12 @@ class LocationsController extends Controller
'locations.image',
'locations.ldap_ou',
'locations.currency',
])->withCount('assignedAssets as assigned_assets_count')
'locations.notes',
])
->withCount('assignedAssets as assigned_assets_count')
->withCount('assets as assets_count')
->withCount('assignedAccessories as assigned_accessories_count')
->withCount('accessories as accessories_count')
->withCount('rtd_assets as rtd_assets_count')
->withCount('children as children_count')
->withCount('users as users_count');
@@ -180,6 +192,7 @@ class LocationsController extends Controller
'locations.updated_at',
'locations.image',
'locations.currency',
'locations.notes',
])
->withCount('assignedAssets as assigned_assets_count')
->withCount('assets as assets_count')
@@ -222,6 +235,39 @@ class LocationsController extends Controller
return response()->json(Helper::formatStandardApiResponse('error', null, $location->getErrors()));
}
public function assets(Request $request, Location $location) : JsonResponse | array
{
$this->authorize('view', Asset::class);
$this->authorize('view', $location);
$assets = Asset::where('location_id', '=', $location->id)->with('model', 'model.category', 'assetstatus', 'location', 'company', 'defaultLoc');
$assets = $assets->get();
return (new AssetsTransformer)->transformAssets($assets, $assets->count(), $request);
}
public function assignedAssets(Request $request, Location $location) : JsonResponse | array
{
$this->authorize('view', Asset::class);
$this->authorize('view', $location);
$assets = Asset::where('assigned_to', '=', $location->id)->where('assigned_type', '=', Location::class)->with('model', 'model.category', 'assetstatus', 'location', 'company', 'defaultLoc');
$assets = $assets->get();
return (new AssetsTransformer)->transformAssets($assets, $assets->count(), $request);
}
public function assignedAccessories(Request $request, Location $location) : JsonResponse | array
{
$this->authorize('view', Accessory::class);
$this->authorize('view', $location);
$accessory_checkouts = AccessoryCheckout::LocationAssigned()->where('assigned_to', $location->id)->with('adminuser')->with('accessories');
$offset = ($request->input('offset') > $accessory_checkouts->count()) ? $accessory_checkouts->count() : app('api_offset_value');
$limit = app('api_limit_value');
$total = $accessory_checkouts->count();
$accessory_checkouts = $accessory_checkouts->skip($offset)->take($limit)->get();
return (new LocationsTransformer)->transformCheckedoutAccessories($accessory_checkouts, $total);
}
/**
* Remove the specified resource from storage.
*
@@ -237,6 +283,7 @@ class LocationsController extends Controller
->withCount('rtd_assets as rtd_assets_count')
->withCount('children as children_count')
->withCount('users as users_count')
->withCount('accessories as accessories_count')
->findOrFail($id);
if (! $location->isDeletable()) {

View File

@@ -25,11 +25,45 @@ class ManufacturersController extends Controller
public function index(Request $request) : JsonResponse | array
{
$this->authorize('view', Manufacturer::class);
$allowed_columns = ['id', 'name', 'url', 'support_url', 'support_email', 'warranty_lookup_url', 'support_phone', 'created_at', 'updated_at', 'image', 'assets_count', 'consumables_count', 'components_count', 'licenses_count'];
$allowed_columns = [
'id',
'name',
'url',
'support_url',
'support_email',
'warranty_lookup_url',
'support_phone',
'created_at',
'updated_at',
'image',
'assets_count',
'consumables_count',
'components_count',
'licenses_count',
'notes',
];
$manufacturers = Manufacturer::select(
['id', 'name', 'url', 'support_url', 'warranty_lookup_url', 'support_email', 'support_phone', 'created_at', 'updated_at', 'image', 'deleted_at']
)->withCount('assets as assets_count')->withCount('licenses as licenses_count')->withCount('consumables as consumables_count')->withCount('accessories as accessories_count');
$manufacturers = Manufacturer::select([
'id',
'name',
'url',
'support_url',
'warranty_lookup_url',
'support_email',
'support_phone',
'created_by',
'created_at',
'updated_at',
'image',
'deleted_at',
'notes',
])
->with('adminuser')
->withCount('assets as assets_count')
->withCount('licenses as licenses_count')
->withCount('consumables as consumables_count')
->withCount('accessories as accessories_count')
->withCount('components as components_count');
if ($request->input('deleted') == 'true') {
$manufacturers->onlyTrashed();
@@ -66,10 +100,18 @@ class ManufacturersController extends Controller
// Make sure the offset and limit are actually integers and do not exceed system limits
$offset = ($request->input('offset') > $manufacturers->count()) ? $manufacturers->count() : app('api_offset_value');
$limit = app('api_limit_value');
$order = $request->input('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at';
$manufacturers->orderBy($sort, $order);
$sort_override = $request->input('sort');
$column_sort = in_array($sort_override, $allowed_columns) ? $sort_override : 'created_at';
switch ($sort_override) {
case 'created_by':
$manufacturers = $manufacturers->OrderByCreatedBy($order);
break;
default:
$manufacturers = $manufacturers->orderBy($column_sort, $order);
break;
}
$total = $manufacturers->count();
$manufacturers = $manufacturers->skip($offset)->take($limit)->get();
@@ -181,7 +223,7 @@ class ManufacturersController extends Controller
$logaction->item_type = Manufacturer::class;
$logaction->item_id = $manufacturer->id;
$logaction->created_at = date('Y-m-d H:i:s');
$logaction->user_id = auth()->id();
$logaction->created_by = auth()->id();
$logaction->logaction('restore');
return response()->json(Helper::formatStandardApiResponse('success', trans('admin/manufacturers/message.restore.success')), 200);

View File

@@ -0,0 +1,43 @@
<?php
namespace App\Http\Controllers\Api;
use App\Events\NoteAdded;
use App\Helpers\Helper;
use App\Http\Controllers\Controller;
use App\Models\Asset;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\Rule;
class NotesController extends Controller
{
public function store(Request $request)
{
$validated = $request->validate([
'note' => 'required|string|max:500',
'type' => [
'required',
Rule::in(['asset']),
],
]);
// This can be made dynamic by using $request->input('type') to determine which model type to add the note to.
// For now, we are only placing this on Assets
$item = Asset::findOrFail($request->input("id"));
$this->authorize('update', $item);
event(new NoteAdded($item, Auth::user(), $validated['note']));
return response()->json(Helper::formatStandardApiResponse('success'));
}
public function update(Request $request)
{
}
public function destroy(Request $request)
{
}
}

View File

@@ -23,9 +23,8 @@ class PredefinedKitsController extends Controller
public function index(Request $request) : JsonResponse | array
{
$this->authorize('view', PredefinedKit::class);
$allowed_columns = ['id', 'name'];
$kits = PredefinedKit::query();
$kits = PredefinedKit::query()->with('adminuser');
if ($request->filled('search')) {
$kits = $kits->TextSearch($request->input('search'));
@@ -36,8 +35,25 @@ class PredefinedKitsController extends Controller
$limit = app('api_limit_value');
$order = $request->input('order') === 'desc' ? 'desc' : 'asc';
$sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'name';
$kits->orderBy($sort, $order);
switch ($request->input('sort')) {
case 'created_by':
$kits = $kits->OrderByCreatedBy($order);
break;
default:
// This array is what determines which fields should be allowed to be sorted on ON the table itself.
// These must match a column on the consumables table directly.
$allowed_columns = [
'id',
'name',
'created_at',
'updated_at',
];
$sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at';
$kits = $kits->orderBy($sort, $order);
break;
}
$total = $kits->count();
$kits = $kits->skip($offset)->take($limit)->get();
@@ -246,7 +262,7 @@ class PredefinedKitsController extends Controller
$relation = $kit->models();
if ($relation->find($model_id)) {
return response()->json(Helper::formatStandardApiResponse('error', null, ['model' => 'Model already attached to kit']));
return response()->json(Helper::formatStandardApiResponse('error', null, ['model' => trans('admin/kits/general.model_already_attached')]));
}
$relation->attach($model_id, ['quantity' => $quantity]);

View File

@@ -20,7 +20,7 @@ class ReportsController extends Controller
{
$this->authorize('reports.view');
$actionlogs = Actionlog::with('item', 'user', 'admin', 'target', 'location');
$actionlogs = Actionlog::with('item', 'user', 'adminuser', 'target', 'location');
if ($request->filled('search')) {
$actionlogs = $actionlogs->TextSearch(e($request->input('search')));
@@ -45,36 +45,40 @@ class ReportsController extends Controller
}
if ($request->filled('action_type')) {
$actionlogs = $actionlogs->where('action_type', '=', $request->input('action_type'))->orderBy('created_at', 'desc');
$actionlogs = $actionlogs->where('action_type', '=', $request->input('action_type'));
}
if ($request->filled('user_id')) {
$actionlogs = $actionlogs->where('user_id', '=', $request->input('user_id'));
if ($request->filled('created_by')) {
$actionlogs = $actionlogs->where('created_by', '=', $request->input('created_by'));
}
if ($request->filled('action_source')) {
$actionlogs = $actionlogs->where('action_source', '=', $request->input('action_source'))->orderBy('created_at', 'desc');
$actionlogs = $actionlogs->where('action_source', '=', $request->input('action_source'));
}
if ($request->filled('remote_ip')) {
$actionlogs = $actionlogs->where('remote_ip', '=', $request->input('remote_ip'));
}
if ($request->filled('remote_ip')) {
$actionlogs = $actionlogs->where('remote_ip', '=', $request->input('remote_ip'))->orderBy('created_at', 'desc');
}
if ($request->filled('uploads')) {
$actionlogs = $actionlogs->whereNotNull('filename')->orderBy('created_at', 'desc');
$actionlogs = $actionlogs->whereNotNull('filename');
}
$allowed_columns = [
'id',
'created_at',
'target_id',
'user_id',
'created_by',
'accept_signature',
'action_type',
'note',
'remote_ip',
'user_agent',
'target_type',
'item_type',
'action_source',
'action_date',
];
@@ -83,11 +87,19 @@ class ReportsController extends Controller
$offset = ($request->input('offset') > $total) ? $total : app('api_offset_value');
$limit = app('api_limit_value');
$sort = in_array($request->input('sort'), $allowed_columns) ? e($request->input('sort')) : 'created_at';
$order = ($request->input('order') == 'asc') ? 'asc' : 'desc';
switch ($request->input('sort')) {
case 'created_by':
$actionlogs->OrderByCreatedBy($order);
break;
default:
$sort = in_array($request->input('sort'), $allowed_columns) ? e($request->input('sort')) : 'action_logs.created_at';
$actionlogs = $actionlogs->orderBy($sort, $order);
break;
}
$actionlogs = $actionlogs->orderBy($sort, $order)->skip($offset)->take($limit)->get();
$actionlogs = $actionlogs->skip($offset)->take($limit)->get();
return response()->json((new ActionlogsTransformer)->transformActionlogs($actionlogs, $total), 200, ['Content-Type' => 'application/json;charset=utf8'], JSON_UNESCAPED_UNICODE);
}

View File

@@ -8,6 +8,7 @@ use App\Http\Transformers\AssetsTransformer;
use App\Http\Transformers\SelectlistTransformer;
use App\Http\Transformers\StatuslabelsTransformer;
use App\Models\Asset;
use App\Models\Setting;
use App\Models\Statuslabel;
use Illuminate\Http\Request;
use App\Http\Transformers\PieChartTransformer;
@@ -24,9 +25,17 @@ class StatuslabelsController extends Controller
public function index(Request $request) : array
{
$this->authorize('view', Statuslabel::class);
$allowed_columns = ['id', 'name', 'created_at', 'assets_count', 'color', 'notes', 'default_label'];
$allowed_columns = [
'id',
'name',
'created_at',
'assets_count',
'color',
'notes',
'default_label'
];
$statuslabels = Statuslabel::withCount('assets as assets_count');
$statuslabels = Statuslabel::with('adminuser')->withCount('assets as assets_count');
if ($request->filled('search')) {
$statuslabels = $statuslabels->TextSearch($request->input('search'));
@@ -53,10 +62,18 @@ class StatuslabelsController extends Controller
// Make sure the offset and limit are actually integers and do not exceed system limits
$offset = ($request->input('offset') > $statuslabels->count()) ? $statuslabels->count() : app('api_offset_value');
$limit = app('api_limit_value');
$order = $request->input('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at';
$statuslabels->orderBy($sort, $order);
$sort_override = $request->input('sort');
$column_sort = in_array($sort_override, $allowed_columns) ? $sort_override : 'created_at';
switch ($sort_override) {
case 'created_by':
$statuslabels = $statuslabels->OrderByCreatedBy($order);
break;
default:
$statuslabels = $statuslabels->orderBy($column_sort, $order);
break;
}
$total = $statuslabels->count();
$statuslabels = $statuslabels->skip($offset)->take($limit)->get();
@@ -78,7 +95,8 @@ class StatuslabelsController extends Controller
$request->except('deployable', 'pending', 'archived');
if (! $request->filled('type')) {
return response()->json(Helper::formatStandardApiResponse('error', null, ['type' => ['Status label type is required.']]), 500);
return response()->json(Helper::formatStandardApiResponse('error', null, ['type' => ['Status label type is required.']]));
}
$statuslabel = new Statuslabel;
@@ -187,8 +205,14 @@ class StatuslabelsController extends Controller
public function getAssetCountByStatuslabel() : array
{
$this->authorize('view', Statuslabel::class);
$statuslabels = Statuslabel::withCount('assets')->get();
$total = Array();
if (Setting::getSettings()->show_archived_in_list == 0 ) {
$statuslabels = Statuslabel::withCount('assets')->where('archived','0')->get();
} else {
$statuslabels = Statuslabel::withCount('assets')->get();
}
$total = [];
foreach ($statuslabels as $statuslabel) {

View File

@@ -14,11 +14,13 @@ use App\Http\Transformers\UsersTransformer;
use App\Models\Actionlog;
use App\Models\Asset;
use App\Models\Accessory;
use App\Models\Company;
use App\Models\Consumable;
use App\Models\License;
use App\Models\User;
use App\Notifications\CurrentInventory;
use Illuminate\Support\Facades\Auth;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
@@ -42,13 +44,14 @@ class UsersController extends Controller
$users = User::select([
'users.activated',
'users.created_by',
'users.address',
'users.avatar',
'users.city',
'users.company_id',
'users.country',
'users.created_by',
'users.created_at',
'users.updated_at',
'users.deleted_at',
'users.department_id',
'users.email',
@@ -67,7 +70,6 @@ class UsersController extends Controller
'users.state',
'users.two_factor_enrolled',
'users.two_factor_optin',
'users.updated_at',
'users.username',
'users.zip',
'users.remote',
@@ -79,7 +81,16 @@ class UsersController extends Controller
'users.website',
])->with('manager', 'groups', 'userloc', 'company', 'department', 'assets', 'licenses', 'accessories', 'consumables', 'createdBy', 'managesUsers', 'managedLocations')
->withCount('assets as assets_count', 'licenses as licenses_count', 'accessories as accessories_count', 'consumables as consumables_count', 'managesUsers as manages_users_count', 'managedLocations as manages_locations_count');
->withCount([
'assets as assets_count' => function(Builder $query) {
$query->withoutTrashed();
},
'licenses as licenses_count',
'accessories as accessories_count',
'consumables as consumables_count',
'managesUsers as manages_users_count',
'managedLocations as manages_locations_count'
]);
if ($request->filled('search') != '') {
@@ -206,6 +217,10 @@ class UsersController extends Controller
$users->where('autoassign_licenses', '=', $request->input('autoassign_licenses'));
}
if ($request->filled('locale')) {
$users = $users->where('users.locale', '=', $request->input('locale'));
}
if (($request->filled('deleted')) && ($request->input('deleted') == 'true')) {
$users = $users->onlyTrashed();
@@ -251,6 +266,7 @@ class UsersController extends Controller
'groups',
'activated',
'created_at',
'updated_at',
'two_factor_enrolled',
'two_factor_optin',
'last_login',
@@ -276,6 +292,8 @@ class UsersController extends Controller
'end_date',
'autoassign_licenses',
'website',
'locale',
'notes',
];
$sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'first_name';
@@ -365,6 +383,7 @@ class UsersController extends Controller
$user = new User;
$user->fill($request->all());
$user->company_id = Company::getIdForCurrentUser($request->input('company_id'));
$user->created_by = auth()->id();
if ($request->has('permissions')) {
@@ -427,13 +446,10 @@ class UsersController extends Controller
* @param \Illuminate\Http\Request $request
* @param int $id
*/
public function update(SaveUserRequest $request, $id) : JsonResponse
public function update(SaveUserRequest $request, User $user): JsonResponse
{
$this->authorize('update', User::class);
if ($user = User::find($id)) {
$this->authorize('update', $user);
/**
@@ -443,14 +459,16 @@ class UsersController extends Controller
*
*/
if ((($id == 1) || ($id == 2)) && (config('app.lock_passwords'))) {
if ((($user->id == 1) || ($user->id == 2)) && (config('app.lock_passwords'))) {
return response()->json(Helper::formatStandardApiResponse('error', null, 'Permission denied. You cannot update user information via API on the demo.'));
}
$user->fill($request->all());
if ($request->filled('company_id')) {
$user->company_id = Company::getIdForCurrentUser($request->input('company_id'));
}
if ($user->id == $request->input('manager_id')) {
return response()->json(Helper::formatStandardApiResponse('error', null, 'You cannot be your own manager'));
}
@@ -473,16 +491,14 @@ class UsersController extends Controller
$user->permissions = $permissions_array;
}
// Update the location of any assets checked out to this user
Asset::where('assigned_type', User::class)
->where('assigned_to', $user->id)->update(['location_id' => $request->input('location_id', null)]);
if($request->has('location_id')) {
// Update the location of any assets checked out to this user
Asset::where('assigned_type', User::class)
->where('assigned_to', $user->id)->update(['location_id' => $request->input('location_id', null)]);
}
app('App\Http\Requests\ImageUploadRequest')->handleImages($user, 600, 'image', 'avatars', 'avatar');
if ($user->save()) {
// Check if the request has groups passed and has a value, AND that the user us a superuser
if (($request->has('groups')) && (auth()->user()->isSuperUser())) {
@@ -496,18 +512,10 @@ class UsersController extends Controller
// Sync the groups since the user is a superuser and the groups pass validation
$user->groups()->sync($request->input('groups'));
}
return response()->json(Helper::formatStandardApiResponse('success', (new UsersTransformer)->transformUser($user), trans('admin/users/message.success.update')));
}
return response()->json(Helper::formatStandardApiResponse('error', null, $user->getErrors()));
}
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/users/message.user_not_found', compact('id'))));
}
/**
@@ -702,7 +710,7 @@ class UsersController extends Controller
$logaction->item_type = User::class;
$logaction->item_id = $user->id;
$logaction->created_at = date('Y-m-d H:i:s');
$logaction->user_id = auth()->id();
$logaction->created_by = auth()->id();
$logaction->logaction('2FA reset');
return response()->json(['message' => trans('admin/settings/general.two_factor_reset_success')], 200);
@@ -752,7 +760,7 @@ class UsersController extends Controller
$logaction->item_type = User::class;
$logaction->item_id = $user->id;
$logaction->created_at = date('Y-m-d H:i:s');
$logaction->user_id = auth()->id();
$logaction->created_by = auth()->id();
$logaction->logaction('restore');
return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/users/message.success.restored')), 200);

View File

@@ -109,7 +109,7 @@ class AssetMaintenancesController extends Controller
$assetMaintenance->title = $request->input('title');
$assetMaintenance->start_date = $request->input('start_date');
$assetMaintenance->completion_date = $request->input('completion_date');
$assetMaintenance->user_id = Auth::id();
$assetMaintenance->created_by = auth()->id();
if (($assetMaintenance->completion_date !== null)
&& ($assetMaintenance->start_date !== '')

View File

@@ -18,6 +18,7 @@ use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Log;
use \Illuminate\Contracts\View\View;
use \Illuminate\Http\RedirectResponse;
use Illuminate\Support\MessageBag;
/**
@@ -29,6 +30,7 @@ use \Illuminate\Http\RedirectResponse;
*/
class AssetModelsController extends Controller
{
protected MessageBag $validatorErrors;
/**
* Returns a view that invokes the ajax tables which actually contains
* the content for the accessories listing, which is generated in getDatatable.
@@ -78,7 +80,7 @@ class AssetModelsController extends Controller
$model->manufacturer_id = $request->input('manufacturer_id');
$model->category_id = $request->input('category_id');
$model->notes = $request->input('notes');
$model->user_id = Auth::id();
$model->created_by = auth()->id();
$model->requestable = $request->has('requestable');
if ($request->input('fieldset_id') != '') {
@@ -151,17 +153,17 @@ class AssetModelsController extends Controller
$model->notes = $request->input('notes');
$model->requestable = $request->input('requestable', '0');
$this->removeCustomFieldsDefaultValues($model);
$model->fieldset_id = $request->input('fieldset_id');
if ($this->shouldAddDefaultValues($request->input())) {
if (!$this->assignCustomFieldsDefaultValues($model, $request->input('default_values'))){
return redirect()->back()->withInput()->with('error', trans('admin/custom_fields/message.fieldset_default_value.error'));
}
}
if ($model->save()) {
$this->removeCustomFieldsDefaultValues($model);
if ($this->shouldAddDefaultValues($request->input())) {
if (!$this->assignCustomFieldsDefaultValues($model, $request->input('default_values'))) {
return redirect()->back()->withInput()->withErrors($this->validatorErrors);
}
}
if ($model->wasChanged('eol')) {
if ($model->eol > 0) {
$newEol = $model->eol;
@@ -202,6 +204,7 @@ class AssetModelsController extends Controller
if ($model->image) {
try {
Storage::disk('public')->delete('models/'.$model->image);
$model->update(['image' => null]);
} catch (\Exception $e) {
Log::info($e);
}
@@ -233,10 +236,10 @@ class AssetModelsController extends Controller
if ($model->restore()) {
$logaction = new Actionlog();
$logaction->item_type = User::class;
$logaction->item_type = AssetModel::class;
$logaction->item_id = $model->id;
$logaction->created_at = date('Y-m-d H:i:s');
$logaction->user_id = auth()->id();
$logaction->created_by = auth()->id();
$logaction->logaction('restore');
@@ -480,9 +483,15 @@ class AssetModelsController extends Controller
$rules[$field] = $validation;
}
$validator = Validator::make($data, $rules);
$attributes = [];
foreach ($model->fieldset->fields as $field) {
$attributes[$field->db_column] = trim(preg_replace('/_+|snipeit|\d+/', ' ', $field->db_column));
}
$validator = Validator::make($data, $rules)->setAttributeNames($attributes);
if($validator->fails()){
$this->validatorErrors = $validator->errors();
return false;
}

View File

@@ -44,10 +44,10 @@ class AssetModelsFilesController extends Controller
$model->logUpload($file_name, $request->get('notes'));
}
return redirect()->back()->with('success', trans('general.file_upload_success'));
return redirect()->back()->withFragment('files')->with('success', trans('general.file_upload_success'));
}
return redirect()->back()->with('error', trans('admin/hardware/message.upload.nofiles'));
return redirect()->back()->withFragment('files')->with('error', trans('admin/hardware/message.upload.nofiles'));
}
/**
@@ -119,11 +119,10 @@ class AssetModelsFilesController extends Controller
}
$log->delete();
return redirect()->back()->with('success', trans('admin/hardware/message.deletefile.success'));
return redirect()->back()->withFragment('files')->with('success', trans('admin/hardware/message.deletefile.success'));
}
return redirect()->back()
->with('success', trans('admin/hardware/message.deletefile.success'));
return redirect()->back()->withFragment('files')->with('success', trans('admin/hardware/message.deletefile.success'));
}
// Redirect to the hardware management page

View File

@@ -11,7 +11,6 @@ use App\Models\Asset;
use App\Models\CheckoutAcceptance;
use App\Models\LicenseSeat;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Log;
use \Illuminate\Contracts\View\View;
use \Illuminate\Http\RedirectResponse;
@@ -83,7 +82,6 @@ class AssetCheckinController extends Controller
}
$asset->expected_checkin = null;
//$asset->last_checkout = null;
$asset->last_checkin = now();
$asset->assignedTo()->disassociate($asset);
$asset->accepted = null;
@@ -128,12 +126,12 @@ class AssetCheckinController extends Controller
$acceptance->delete();
});
Session::put('redirect_option', $request->get('redirect_option'));
// Was the asset updated?
session()->put('redirect_option', $request->get('redirect_option'));
if ($asset->save()) {
event(new CheckoutableCheckedIn($asset, $target, auth()->user(), $request->input('note'), $checkin_at, $originalValues));
return Helper::getRedirectOption($asset, $assetId, 'Assets');
return redirect()->to(Helper::getRedirectOption($request, $asset->id, 'Assets'))->with('success', trans('admin/hardware/message.checkin.success'));
}
// Redirect to the asset management page with error
return redirect()->route('hardware.index')->with('error', trans('admin/hardware/message.checkin.error').$asset->getErrors());

View File

@@ -109,10 +109,11 @@ class AssetCheckoutController extends Controller
}
}
Session::put(['redirect_option' => $request->get('redirect_option'), 'checkout_to_type' => $request->get('checkout_to_type')]);
session()->put(['redirect_option' => $request->get('redirect_option'), 'checkout_to_type' => $request->get('checkout_to_type')]);
if ($asset->checkOut($target, $admin, $checkout_at, $expected_checkin, $request->get('note'), $request->get('name'))) {
return Helper::getRedirectOption($request, $assetId, 'Assets');
return redirect()->to(Helper::getRedirectOption($request, $asset->id, 'Assets'))
->with('success', trans('admin/hardware/message.checkout.success'));
}
// Redirect to the asset management page with error
return redirect()->to("hardware/$assetId/checkout")->with('error', trans('admin/hardware/message.checkout.error').$asset->getErrors());

View File

@@ -45,7 +45,7 @@ class AssetFilesController extends Controller
$asset->logUpload($file_name, $request->get('notes'));
}
return redirect()->back()->with('success', trans('admin/hardware/message.upload.success'));
return redirect()->back()->withFragment('files')->with('success', trans('admin/hardware/message.upload.success'));
}
return redirect()->back()->with('error', trans('admin/hardware/message.upload.nofiles'));
@@ -61,43 +61,30 @@ class AssetFilesController extends Controller
*/
public function show($assetId = null, $fileId = null) : View | RedirectResponse | Response | StreamedResponse | BinaryFileResponse
{
$asset = Asset::find($assetId);
// the asset is valid
if (isset($asset->id)) {
if ($asset = Asset::find($assetId)) {
$this->authorize('view', $asset);
if (! $log = Actionlog::whereNotNull('filename')->where('item_id', $asset->id)->find($fileId)) {
return response('No matching record for that asset/file', 500)
->header('Content-Type', 'text/plain');
if ($log = Actionlog::whereNotNull('filename')->where('item_id', $asset->id)->find($fileId)) {
$file = 'private_uploads/assets/'.$log->filename;
if ($log->action_type == 'audit') {
$file = 'private_uploads/audits/'.$log->filename;
}
try {
return StorageHelper::showOrDownloadFile($file, $log->filename);
} catch (\Exception $e) {
return redirect()->route('hardware.show', ['hardware' => $asset])->with('error', trans('general.file_not_found'));
}
}
$file = 'private_uploads/assets/'.$log->filename;
if ($log->action_type == 'audit') {
$file = 'private_uploads/audits/'.$log->filename;
}
if (! Storage::exists($file)) {
return response('File '.$file.' not found on server', 404)
->header('Content-Type', 'text/plain');
}
if (request('inline') == 'true') {
$headers = [
'Content-Disposition' => 'inline',
];
return Storage::download($file, $log->filename, $headers);
}
return StorageHelper::downloader($file);
return redirect()->route('hardware.show', ['hardware' => $asset])->with('error', trans('general.log_record_not_found'));
}
// Prepare the error message
$error = trans('admin/hardware/message.does_not_exist', ['id' => $fileId]);
// Redirect to the hardware management page
return redirect()->route('hardware.index')->with('error', $error);
return redirect()->route('hardware.index')->with('error', trans('admin/hardware/message.does_not_exist'));
}
/**
@@ -110,25 +97,19 @@ class AssetFilesController extends Controller
*/
public function destroy($assetId = null, $fileId = null) : RedirectResponse
{
$asset = Asset::find($assetId);
$this->authorize('update', $asset);
$rel_path = 'private_uploads/assets';
// the asset is valid
if (isset($asset->id)) {
if ($asset = Asset::find($assetId)) {
$this->authorize('update', $asset);
$log = Actionlog::find($fileId);
if ($log) {
$rel_path = 'private_uploads/assets';
if ($log = Actionlog::find($fileId)) {
if (Storage::exists($rel_path.'/'.$log->filename)) {
Storage::delete($rel_path.'/'.$log->filename);
}
$log->delete();
return redirect()->back()->with('success', trans('admin/hardware/message.deletefile.success'));
return redirect()->back()->withFragment('files')->with('success', trans('admin/hardware/message.deletefile.success'));
}
return redirect()->back()
->with('success', trans('admin/hardware/message.deletefile.success'));
return redirect()->route('hardware.show', ['hardware' => $asset])->with('error', trans('general.log_record_not_found'));
}
return redirect()->route('hardware.index')->with('error', trans('admin/hardware/message.does_not_exist'));

View File

@@ -2,6 +2,7 @@
namespace App\Http\Controllers\Assets;
use App\Events\CheckoutableCheckedIn;
use App\Helpers\Helper;
use App\Http\Controllers\Controller;
use App\Http\Requests\ImageUploadRequest;
@@ -16,7 +17,6 @@ use App\Models\Location;
use App\Models\Setting;
use App\Models\Statuslabel;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use App\View\Label;
use Carbon\Carbon;
use Illuminate\Support\Facades\DB;
@@ -111,8 +111,10 @@ class AssetsController extends Controller
$settings = Setting::getSettings();
$success = false;
$successes = [];
$failures = [];
$serials = $request->input('serials');
$asset = null;
for ($a = 1; $a <= count($asset_tags); $a++) {
$asset = new Asset();
@@ -132,7 +134,7 @@ class AssetsController extends Controller
$asset->model_id = $request->input('model_id');
$asset->order_number = $request->input('order_number');
$asset->notes = $request->input('notes');
$asset->user_id = Auth::id();
$asset->created_by = auth()->id();
$asset->status_id = request('status_id');
$asset->warranty_months = request('warranty_months', null);
$asset->purchase_cost = request('purchase_cost');
@@ -165,7 +167,7 @@ class AssetsController extends Controller
if (($model) && ($model->fieldset)) {
foreach ($model->fieldset->fields as $field) {
if ($field->field_encrypted == '1') {
if (Gate::allows('admin')) {
if (Gate::allows('assets.view.encrypted_custom_fields')) {
if (is_array($request->input($field->db_column))) {
$asset->{$field->db_column} = Crypt::encrypt(implode(', ', $request->input($field->db_column)));
} else {
@@ -199,16 +201,35 @@ class AssetsController extends Controller
$asset->checkOut($target, auth()->user(), date('Y-m-d H:i:s'), $request->input('expected_checkin', null), 'Checked out on asset creation', $request->get('name'), $location);
}
$success = true;
$successes[] = "<a href='" . route('hardware.show', ['hardware' => $asset->id]) . "' style='color: white;'>" . e($asset->asset_tag) . "</a>";
} else {
$failures[] = join(",", $asset->getErrors()->all());
}
}
if ($success) {
return redirect()->route('hardware.index')
->with('success-unescaped', trans('admin/hardware/message.create.success_linked', ['link' => route('hardware.show', $asset->id), 'id', 'tag' => e($asset->asset_tag)]));
session()->put(['redirect_option' => $request->get('redirect_option'), 'checkout_to_type' => $request->get('checkout_to_type')]);
if ($successes) {
if ($failures) {
//some succeeded, some failed
return redirect()->to(Helper::getRedirectOption($request, $asset->id, 'Assets')) //FIXME - not tested
->with('success-unescaped', trans_choice('admin/hardware/message.create.multi_success_linked', $successes, ['links' => join(", ", $successes)]))
->with('warning', trans_choice('admin/hardware/message.create.partial_failure', $failures, ['failures' => join("; ", $failures)]));
} else {
if (count($successes) == 1) {
//the most common case, keeping it so we don't have to make every use of that translation string be trans_choice'ed
//and re-translated
return redirect()->to(Helper::getRedirectOption($request, $asset->id, 'Assets'))
->with('success-unescaped', trans('admin/hardware/message.create.success_linked', ['link' => route('hardware.show', ['hardware' => $asset->id]), 'id', 'tag' => e($asset->asset_tag)]));
} else {
//multi-success
return redirect()->to(Helper::getRedirectOption($request, $asset->id, 'Assets'))
->with('success-unescaped', trans_choice('admin/hardware/message.create.multi_success_linked', $successes, ['links' => join(", ", $successes)]));
}
}
}
return redirect()->back()->withInput()->withErrors($asset->getErrors());
@@ -289,6 +310,7 @@ class AssetsController extends Controller
*/
public function update(ImageUploadRequest $request, $assetId = null) : RedirectResponse
{
// Check if the asset exists
if (! $asset = Asset::find($assetId)) {
// Redirect to the asset management page with error
@@ -323,16 +345,21 @@ class AssetsController extends Controller
}
$asset->supplier_id = $request->input('supplier_id', null);
$asset->expected_checkin = $request->input('expected_checkin', null);
// If the box isn't checked, it's not in the request at all.
$asset->requestable = $request->filled('requestable');
$asset->requestable = $request->input('requestable', 0);
$asset->rtd_location_id = $request->input('rtd_location_id', null);
$asset->byod = $request->input('byod', 0);
$status = Statuslabel::find($asset->status_id);
$status = Statuslabel::find($request->input('status_id'));
if($status->archived){
// This is a non-deployable status label - we should check the asset back in.
if (($status && $status->getStatuslabelType() != 'deployable') && ($target = $asset->assignedTo)) {
$originalValues = $asset->getRawOriginal();
$asset->assigned_to = null;
$asset->assigned_type = null;
$asset->accepted = null;
event(new CheckoutableCheckedIn($asset, $target, auth()->user(), 'Checkin on asset update', date('Y-m-d H:i:s'), $originalValues));
}
if ($asset->assigned_to == '') {
@@ -350,14 +377,26 @@ class AssetsController extends Controller
}
// Update the asset data
$asset_tag = $request->input('asset_tags');
$serial = $request->input('serials');
$asset->serial = $request->input('serials');
if (is_array($request->input('serials'))) {
$asset->serial = $serial[1];
}
$asset->name = $request->input('name');
$asset->serial = $serial[1];
$asset->company_id = Company::getIdForCurrentUser($request->input('company_id'));
$asset->model_id = $request->input('model_id');
$asset->order_number = $request->input('order_number');
$asset->asset_tag = $asset_tag[1];
$asset_tags = $request->input('asset_tags');
$asset->asset_tag = $request->input('asset_tags');
if (is_array($request->input('asset_tags'))) {
$asset->asset_tag = $asset_tags[1];
}
$asset->notes = $request->input('notes');
$asset = $request->handleImages($asset);
@@ -369,8 +408,9 @@ class AssetsController extends Controller
$model = AssetModel::find($request->get('model_id'));
if (($model) && ($model->fieldset)) {
foreach ($model->fieldset->fields as $field) {
if ($field->field_encrypted == '1') {
if (Gate::allows('admin')) {
if (Gate::allows('assets.view.encrypted_custom_fields')) {
if (is_array($request->input($field->db_column))) {
$asset->{$field->db_column} = Crypt::encrypt(implode(', ', $request->input($field->db_column)));
} else {
@@ -387,9 +427,10 @@ class AssetsController extends Controller
}
}
session()->put(['redirect_option' => $request->get('redirect_option'), 'checkout_to_type' => $request->get('checkout_to_type')]);
if ($asset->save()) {
return redirect()->route('hardware.show', $assetId)
return redirect()->to(Helper::getRedirectOption($request, $assetId, 'Assets'))
->with('success', trans('admin/hardware/message.update.success'));
}
@@ -403,7 +444,7 @@ class AssetsController extends Controller
* @param int $assetId
* @since [v1.0]
*/
public function destroy($assetId) : RedirectResponse
public function destroy(Request $request, $assetId) : RedirectResponse
{
// Check if the asset exists
if (is_null($asset = Asset::find($assetId))) {
@@ -413,9 +454,17 @@ class AssetsController extends Controller
$this->authorize('delete', $asset);
DB::table('assets')
->where('id', $asset->id)
->update(['assigned_to' => null]);
if ($asset->assignedTo) {
$target = $asset->assignedTo;
$checkin_at = date('Y-m-d H:i:s');
$originalValues = $asset->getRawOriginal();
event(new CheckoutableCheckedIn($asset, $target, auth()->user(), 'Checkin on delete', $checkin_at, $originalValues));
DB::table('assets')
->where('id', $asset->id)
->update(['assigned_to' => null]);
}
if ($asset->image) {
try {
@@ -459,9 +508,16 @@ class AssetsController extends Controller
$tag = $tag ? $tag : $request->get('assetTag');
$topsearch = ($request->get('topsearch') == 'true');
if (! $asset = Asset::where('asset_tag', '=', $tag)->first()) {
return redirect()->route('hardware.index')->with('error', trans('admin/hardware/message.does_not_exist'));
// Search for an exact and unique asset tag match
$assets = Asset::where('asset_tag', '=', $tag);
// If not a unique result, redirect to the index view
if ($assets->count() != 1) {
return redirect()->route('hardware.index')
->with('search', $tag)
->with('warning', trans('admin/hardware/message.does_not_exist_var', [ 'asset_tag' => $tag ]));
}
$asset = $assets->first();
$this->authorize('view', $asset);
return redirect()->route('hardware.show', $asset->id)->with('topsearch', $topsearch);
@@ -479,10 +535,10 @@ class AssetsController extends Controller
{
$settings = Setting::getSettings();
if ($settings->qr_code == '1') {
if (($settings->qr_code == '1') && ($settings->label2_2d_type !== 'none')) {
$asset = Asset::withTrashed()->find($assetId);
if ($asset) {
$size = Helper::barcodeDimensions($settings->barcode_type);
$size = Helper::barcodeDimensions($settings->label2_2d_type);
$qr_file = public_path().'/uploads/barcodes/qr-'.str_slug($asset->asset_tag).'-'.str_slug($asset->id).'.png';
if (isset($asset->id, $asset->asset_tag)) {
@@ -492,7 +548,7 @@ class AssetsController extends Controller
return response()->file($qr_file, $header);
} else {
$barcode = new \Com\Tecnick\Barcode\Barcode();
$barcode_obj = $barcode->getBarcodeObj($settings->barcode_type, route('hardware.show', $asset->id), $size['height'], $size['width'], 'black', [-2, -2, -2, -2]);
$barcode_obj = $barcode->getBarcodeObj($settings->label2_2d_type, route('hardware.show', $asset->id), $size['height'], $size['width'], 'black', [-2, -2, -2, -2]);
file_put_contents($qr_file, $barcode_obj->getPngData());
return response($barcode_obj->getPngData())->header('Content-type', 'image/png');
@@ -517,7 +573,7 @@ class AssetsController extends Controller
{
$settings = Setting::getSettings();
if ($asset = Asset::withTrashed()->find($assetId)) {
$barcode_file = public_path().'/uploads/barcodes/'.str_slug($settings->alt_barcode).'-'.str_slug($asset->asset_tag).'.png';
$barcode_file = public_path().'/uploads/barcodes/'.str_slug($settings->label2_1d_type).'-'.str_slug($asset->asset_tag).'.png';
if (isset($asset->id, $asset->asset_tag)) {
if (file_exists($barcode_file)) {
@@ -530,7 +586,7 @@ class AssetsController extends Controller
$barcode = new \Com\Tecnick\Barcode\Barcode();
try {
$barcode_obj = $barcode->getBarcodeObj($settings->alt_barcode, $asset->asset_tag, ($barcode_width < 300 ? $barcode_width : 300), 50);
$barcode_obj = $barcode->getBarcodeObj($settings->label2_1d_type, $asset->asset_tag, ($barcode_width < 300 ? $barcode_width : 300), 50);
file_put_contents($barcode_file, $barcode_obj->getPngData());
return response($barcode_obj->getPngData())->header('Content-type', 'image/png');
@@ -576,26 +632,20 @@ class AssetsController extends Controller
* @since [v1.0]
* @return \Illuminate\Contracts\View\View
*/
public function getClone($assetId = null)
public function getClone(Asset $asset)
{
// Check if the asset exists
if (is_null($asset_to_clone = Asset::find($assetId))) {
// Redirect to the asset management page
return redirect()->route('hardware.index')->with('error', trans('admin/hardware/message.does_not_exist'));
}
$this->authorize('create', $asset_to_clone);
$asset = clone $asset_to_clone;
$asset->id = null;
$asset->asset_tag = '';
$asset->serial = '';
$asset->assigned_to = '';
$this->authorize('create', $asset);
$cloned = clone $asset;
$cloned->id = null;
$cloned->asset_tag = '';
$cloned->serial = '';
$cloned->assigned_to = '';
$cloned->deleted_at = '';
return view('hardware/edit')
->with('statuslabel_list', Helper::statusLabelList())
->with('statuslabel_types', Helper::statusTypeList())
->with('item', $asset);
->with('item', $cloned);
}
/**
@@ -719,7 +769,7 @@ class AssetsController extends Controller
Actionlog::firstOrCreate([
'item_id' => $asset->id,
'item_type' => Asset::class,
'user_id' => auth()->id(),
'created_by' => auth()->id(),
'note' => 'Checkout imported by '.auth()->user()->present()->fullName().' from history importer',
'target_id' => $item[$asset_tag][$batch_counter]['user_id'],
'target_type' => User::class,
@@ -747,7 +797,7 @@ class AssetsController extends Controller
Actionlog::firstOrCreate([
'item_id' => $item[$asset_tag][$batch_counter]['asset_id'],
'item_type' => Asset::class,
'user_id' => auth()->id(),
'created_by' => auth()->id(),
'note' => 'Checkin imported by '.auth()->user()->present()->fullName().' from history importer',
'target_id' => null,
'created_at' => $checkin_date,
@@ -815,8 +865,8 @@ class AssetsController extends Controller
public function quickScan()
{
$this->authorize('audit', Asset::class);
$dt = Carbon::now()->addMonths(12)->toDateString();
$settings = Setting::getSettings();
$dt = Carbon::now()->addMonths($settings->audit_interval)->toDateString();
return view('hardware/quickscan')->with('next_audit_date', $dt);
}
@@ -824,7 +874,7 @@ class AssetsController extends Controller
{
$this->authorize('checkin', Asset::class);
return view('hardware/quickscan-checkin');
return view('hardware/quickscan-checkin')->with('statusLabel_list', Helper::statusLabelList());
}
public function audit($id)
@@ -833,7 +883,6 @@ class AssetsController extends Controller
$this->authorize('audit', Asset::class);
$dt = Carbon::now()->addMonths($settings->audit_interval)->toDateString();
$asset = Asset::findOrFail($id);
return view('hardware/audit')->with('asset', $asset)->with('next_audit_date', $dt)->with('locations_list');
}

View File

@@ -10,6 +10,7 @@ use App\Models\AssetModel;
use App\Models\Statuslabel;
use App\Models\Setting;
use App\View\Label;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Support\Facades\DB;
@@ -51,6 +52,10 @@ class BulkAssetsController extends Controller
}
$asset_ids = $request->input('ids');
if ($request->input('bulk_actions') === 'checkout') {
$request->session()->flashInput(['selected_assets' => $asset_ids]);
return redirect()->route('hardware.bulkcheckout.show');
}
// Figure out where we need to send the user after the update is complete, and store that in the session
$bulk_back_url = request()->headers->get('referer');
@@ -92,7 +97,9 @@ class BulkAssetsController extends Controller
// This handles all of the pivot sorting below (versus the assets.* fields in the allowed_columns array)
$column_sort = in_array($sort_override, $allowed_columns) ? $sort_override : 'assets.id';
$assets = Asset::with('assignedTo', 'location', 'model')->whereIn('assets.id', $asset_ids);
$assets = Asset::with('assignedTo', 'location', 'model')
->whereIn('assets.id', $asset_ids)
->withTrashed();
$assets = $assets->get();
@@ -225,7 +232,8 @@ class BulkAssetsController extends Controller
* its checkout status.
*/
if (($request->filled('purchase_date'))
if (($request->filled('name'))
|| ($request->filled('purchase_date'))
|| ($request->filled('expected_checkin'))
|| ($request->filled('purchase_cost'))
|| ($request->filled('supplier_id'))
@@ -237,9 +245,12 @@ class BulkAssetsController extends Controller
|| ($request->filled('status_id'))
|| ($request->filled('model_id'))
|| ($request->filled('next_audit_date'))
|| ($request->filled('asset_eol_date'))
|| ($request->filled('null_name'))
|| ($request->filled('null_purchase_date'))
|| ($request->filled('null_expected_checkin_date'))
|| ($request->filled('null_next_audit_date'))
|| ($request->filled('null_asset_eol_date'))
|| ($request->anyFilled($custom_field_columns))
) {
@@ -249,28 +260,55 @@ class BulkAssetsController extends Controller
$this->update_array = [];
/**
* Leave out model_id and status here because we do math on that later. We have to do some extra
* validation and checks on those two.
* Leave out model_id and status here because we do math on that later. We have to do some
* extra validation and checks on those two.
*
* It's tempting to make these match the request check above, but some of these values require
* extra work to make sure the data makes sense.
*/
$this->conditionallyAddItem('purchase_date')
$this->conditionallyAddItem('name')
->conditionallyAddItem('purchase_date')
->conditionallyAddItem('expected_checkin')
->conditionallyAddItem('order_number')
->conditionallyAddItem('requestable')
->conditionallyAddItem('supplier_id')
->conditionallyAddItem('warranty_months')
->conditionallyAddItem('next_audit_date');
->conditionallyAddItem('next_audit_date')
->conditionallyAddItem('asset_eol_date');
foreach ($custom_field_columns as $key => $custom_field_column) {
$this->conditionallyAddItem($custom_field_column);
}
if (!($asset->eol_explicit)) {
if ($request->filled('model_id')) {
$model = AssetModel::find($request->input('model_id'));
if ($model->eol > 0) {
if ($request->filled('purchase_date')) {
$this->update_array['asset_eol_date'] = Carbon::parse($request->input('purchase_date'))->addMonths($model->eol)->format('Y-m-d');
} else {
$this->update_array['asset_eol_date'] = Carbon::parse($asset->purchase_date)->addMonths($model->eol)->format('Y-m-d');
}
} else {
$this->update_array['asset_eol_date'] = null;
}
} elseif (($request->filled('purchase_date')) && ($asset->model->eol > 0)) {
$this->update_array['asset_eol_date'] = Carbon::parse($request->input('purchase_date'))->addMonths($asset->model->eol)->format('Y-m-d');
}
}
/**
* Blank out fields that were requested to be blanked out via checkbox
*/
if ($request->input('null_name')=='1') {
$this->update_array['name'] = null;
}
if ($request->input('null_purchase_date')=='1') {
$this->update_array['purchase_date'] = null;
if (!($asset->eol_explicit)) {
$this->update_array['asset_eol_date'] = null;
}
}
if ($request->input('null_expected_checkin_date')=='1') {
@@ -281,6 +319,17 @@ class BulkAssetsController extends Controller
$this->update_array['next_audit_date'] = null;
}
if ($request->input('null_asset_eol_date')=='1') {
$this->update_array['asset_eol_date'] = null;
// If they are nulling the EOL date to allow it to calculate, set eol explicit to 0
if ($request->input('calc_eol')=='1') {
$this->update_array['eol_explicit'] = 0;
}
}
if ($request->filled('purchase_cost')) {
$this->update_array['purchase_cost'] = $request->input('purchase_cost');
}
@@ -483,12 +532,7 @@ class BulkAssetsController extends Controller
if ($request->filled('ids')) {
$assets = Asset::find($request->get('ids'));
foreach ($assets as $asset) {
$update_array['deleted_at'] = date('Y-m-d H:i:s');
$update_array['assigned_to'] = null;
DB::table('assets')
->where('id', $asset->id)
->update($update_array);
$asset->delete();
} // endforeach
return redirect($bulk_back_url)->with('success', trans('admin/hardware/message.delete.success'));
@@ -545,31 +589,34 @@ class BulkAssetsController extends Controller
}
$errors = [];
DB::transaction(function () use ($target, $admin, $checkout_at, $expected_checkin, $errors, $asset_ids, $request) {
DB::transaction(function () use ($target, $admin, $checkout_at, $expected_checkin, &$errors, $asset_ids, $request) { //NOTE: $errors is passsed by reference!
foreach ($asset_ids as $asset_id) {
$asset = Asset::findOrFail($asset_id);
$this->authorize('checkout', $asset);
$error = $asset->checkOut($target, $admin, $checkout_at, $expected_checkin, e($request->get('note')), $asset->name, null);
$checkout_success = $asset->checkOut($target, $admin, $checkout_at, $expected_checkin, e($request->get('note')), $asset->name, null);
//TODO - I think this logic is duplicated in the checkOut method?
if ($target->location_id != '') {
$asset->location_id = $target->location_id;
$asset->unsetEventDispatcher();
$asset->save();
// TODO - I don't know why this is being saved without events
$asset::withoutEvents(function () use ($asset) {
$asset->save();
});
}
if ($error) {
array_merge_recursive($errors, $asset->getErrors()->toArray());
if (!$checkout_success) {
$errors = array_merge_recursive($errors, $asset->getErrors()->toArray());
}
}
});
if (! $errors) {
// Redirect to the new asset page
return redirect()->to('hardware')->with('success', trans('admin/hardware/message.checkout.success'));
return redirect()->to('hardware')->with('success', trans_choice('admin/hardware/message.multi-checkout.success', $asset_ids));
}
// Redirect to the asset management page with error
return redirect()->route('hardware.bulkcheckout.show')->with('error', trans('admin/hardware/message.checkout.error'))->withErrors($errors);
return redirect()->route('hardware.bulkcheckout.show')->withInput()->with('error', trans_choice('admin/hardware/message.multi-checkout.error', $asset_ids))->withErrors($errors);
} catch (ModelNotFoundException $e) {
return redirect()->route('hardware.bulkcheckout.show')->with('error', $e->getErrors());
}

View File

@@ -50,14 +50,14 @@ class ForgotPasswordController extends Controller
*/
public function sendResetLinkEmail(Request $request)
{
/**
* Let's set a max character count here to prevent potential
* buffer overflow issues with attackers sending very large
* payloads through.
* payloads through. The addition of the string rule prevents attackers
* sending arrays through and causing 500s
*/
$request->validate([
'username' => ['required', 'max:255'],
'username' => ['required', 'max:255', 'string'],
]);
/**

View File

@@ -508,8 +508,8 @@ class LoginController extends Controller
protected function validator(array $data)
{
return Validator::make($data, [
'username' => 'required',
'password' => 'required',
'username' => 'required|not_array',
'password' => 'required|not_array',
]);
}

View File

@@ -87,7 +87,7 @@ class ResetPasswordController extends Controller
'password.not_in' => trans('validation.disallow_same_pwd_as_user_fields'),
];
$request->validate($this->rules(), $request->all(), $this->validationErrorMessages());
$request->validate($this->rules());
Log::debug('Checking if '.$request->input('username').' exists');
// Check to see if the user even exists - we'll treat the response the same to prevent user sniffing
@@ -103,22 +103,24 @@ class ResetPasswordController extends Controller
], $messages);
}
if ($user->ldap_import != '1') {
// set the response
$response = $broker->reset(
$this->credentials($request), function ($user, $password) {
$this->resetPassword($user, $password);
});
// set the response
$response = $broker->reset(
$this->credentials($request), function ($user, $password) {
$this->resetPassword($user, $password);
});
// Check if the password reset above actually worked
if ($response == \Password::PASSWORD_RESET) {
Log::debug('Password reset for '.$user->username.' worked');
return redirect()->guest('login')->with('success', trans('passwords.reset'));
// Check if the password reset above actually worked
if ($response == \Password::PASSWORD_RESET) {
Log::debug('Password reset for ' . $user->username . ' worked');
return redirect()->guest('login')->with('success', trans('passwords.reset'));
}
Log::debug('Password reset for ' . $user->username . ' FAILED - this user exists but the token is not valid');
return redirect()->back()->withInput($request->only('email'))->with('success', trans('passwords.reset'));
}
Log::debug('Password reset for '.$user->username.' FAILED - this user exists but the token is not valid');
return redirect()->back()->withInput($request->only('email'))->with('success', trans('passwords.reset'));
}

View File

@@ -99,12 +99,18 @@ class SamlController extends Controller
{
$saml = $this->saml;
$auth = $saml->getAuth();
$auth->processResponse();
$saml_exception = false;
try {
$auth->processResponse();
} catch (\Exception $e) {
Log::warning("Exception caught in SAML login: " . $e->getMessage());
$saml_exception = true;
}
$errors = $auth->getErrors();
if (! empty($errors)) {
Log::error('There was an error with SAML ACS: '.implode(', ', $errors));
Log::error('Reason: '.$auth->getLastErrorReason());
if (!empty($errors) || $saml_exception) {
Log::warning('There was an error with SAML ACS: ' . implode(', ', $errors));
Log::warning('Reason: ' . $auth->getLastErrorReason());
return redirect()->route('login')->with('error', trans('auth/message.signin.error'));
}
@@ -132,12 +138,18 @@ class SamlController extends Controller
{
$auth = $this->saml->getAuth();
$retrieveParametersFromServer = $this->saml->getSetting('retrieveParametersFromServer', false);
$sloUrl = $auth->processSLO(true, null, $retrieveParametersFromServer, null, true);
$saml_exception = false;
try {
$sloUrl = $auth->processSLO(true, null, $retrieveParametersFromServer, null, true);
} catch (\Exception $e) {
Log::warning("Exception caught in SAML single-logout: " . $e->getMessage());
$saml_exception = true;
}
$errors = $auth->getErrors();
if (! empty($errors)) {
Log::error('There was an error with SAML SLS: '.implode(', ', $errors));
Log::error('Reason: '.$auth->getLastErrorReason());
if (!empty($errors) || $saml_exception) {
Log::warning('There was an error with SAML SLS: ' . implode(', ', $errors));
Log::warning('Reason: ' . $auth->getLastErrorReason());
return view('errors.403');
}

View File

@@ -69,7 +69,8 @@ class CategoriesController extends Controller
$category->use_default_eula = $request->input('use_default_eula', '0');
$category->require_acceptance = $request->input('require_acceptance', '0');
$category->checkin_email = $request->input('checkin_email', '0');
$category->user_id = Auth::id();
$category->notes = $request->input('notes');
$category->created_by = auth()->id();
$category = $request->handleImages($category);
if ($category->save()) {
@@ -134,6 +135,7 @@ class CategoriesController extends Controller
$category->use_default_eula = $request->input('use_default_eula', '0');
$category->require_acceptance = $request->input('require_acceptance', '0');
$category->checkin_email = $request->input('checkin_email', '0');
$category->notes = $request->input('notes');
$category = $request->handleImages($category);

View File

@@ -20,7 +20,7 @@ trait CheckInOutRequest
return Location::findOrFail(request('assigned_location'));
case 'asset':
return Asset::findOrFail(request('assigned_asset'));
case 'user':
default:
return User::findOrFail(request('assigned_user'));
}

View File

@@ -60,6 +60,8 @@ final class CompaniesController extends Controller
$company->phone = $request->input('phone');
$company->fax = $request->input('fax');
$company->email = $request->input('email');
$company->notes = $request->input('notes');
$company->created_by = auth()->id();
$company = $request->handleImages($company);
@@ -110,6 +112,7 @@ final class CompaniesController extends Controller
$company->phone = $request->input('phone');
$company->fax = $request->input('fax');
$company->email = $request->input('email');
$company->notes = $request->input('notes');
$company = $request->handleImages($company);

View File

@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Components;
use App\Events\CheckoutableCheckedIn;
use App\Events\ComponentCheckedIn;
use App\Helpers\Helper;
use App\Http\Controllers\Controller;
use App\Models\Asset;
use App\Models\Component;
@@ -96,12 +97,10 @@ class ComponentCheckinController extends Controller
$asset = Asset::find($component_assets->asset_id);
event(new CheckoutableCheckedIn($component, $asset, auth()->user(), $request->input('note'), Carbon::now()));
if ($backto == 'asset'){
return redirect()->route('hardware.show', $asset->id)->with('success',
trans('admin/components/message.checkin.success'));
}
return redirect()->route('components.index')->with('success',
session()->put(['redirect_option' => $request->get('redirect_option')]);
return redirect()->to(Helper::getRedirectOption($request, $component->id, 'Components'))->with('success',
trans('admin/components/message.checkin.success'));
}

View File

@@ -4,9 +4,11 @@ namespace App\Http\Controllers\Components;
use App\Events\CheckoutableCheckedOut;
use App\Events\ComponentCheckedOut;
use App\Helpers\Helper;
use App\Http\Controllers\Controller;
use App\Models\Asset;
use App\Models\Component;
use App\Models\Setting;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Input;
@@ -93,14 +95,18 @@ class ComponentCheckoutController extends Controller
->withInput();
}
// Check if the user exists
// Check if the asset exists
$asset = Asset::find($request->input('asset_id'));
if ((Setting::getSettings()->full_multiple_companies_support) && $component->company_id !== $asset->company_id) {
return redirect()->route('components.checkout.show', $componentId)->with('error', trans('general.error_user_company'));
}
// Update the component data
$component->asset_id = $request->input('asset_id');
$component->assets()->attach($component->id, [
'component_id' => $component->id,
'user_id' => auth()->user(),
'created_by' => auth()->user()->id,
'created_at' => date('Y-m-d H:i:s'),
'assigned_qty' => $request->input('assigned_qty'),
'asset_id' => $request->input('asset_id'),
@@ -109,6 +115,11 @@ class ComponentCheckoutController extends Controller
event(new CheckoutableCheckedOut($component, $asset, auth()->user(), $request->input('note')));
return redirect()->route('components.index')->with('success', trans('admin/components/message.checkout.success'));
$request->request->add(['checkout_to_type' => 'asset']);
$request->request->add(['assigned_asset' => $asset->id]);
session()->put(['redirect_option' => $request->get('redirect_option'), 'checkout_to_type' => $request->get('checkout_to_type')]);
return redirect()->to(Helper::getRedirectOption($request, $component->id, 'Components'))->with('success', trans('admin/components/message.checkout.success'));
}
}

View File

@@ -73,6 +73,8 @@ class ComponentsController extends Controller
$component->name = $request->input('name');
$component->category_id = $request->input('category_id');
$component->supplier_id = $request->input('supplier_id');
$component->manufacturer_id = $request->input('manufacturer_id');
$component->model_number = $request->input('model_number');
$component->location_id = $request->input('location_id');
$component->company_id = Company::getIdForCurrentUser($request->input('company_id'));
$component->order_number = $request->input('order_number', null);
@@ -81,13 +83,15 @@ class ComponentsController extends Controller
$component->purchase_date = $request->input('purchase_date', null);
$component->purchase_cost = $request->input('purchase_cost', null);
$component->qty = $request->input('qty');
$component->user_id = Auth::id();
$component->created_by = auth()->id();
$component->notes = $request->input('notes');
$component = $request->handleImages($component);
session()->put(['redirect_option' => $request->get('redirect_option')]);
if ($component->save()) {
return redirect()->route('components.index')->with('success', trans('admin/components/message.create.success'));
return redirect()->to(Helper::getRedirectOption($request, $component->id, 'Components'))->with('success', trans('admin/components/message.create.success'));
}
return redirect()->back()->withInput()->withErrors($component->getErrors());
@@ -148,6 +152,8 @@ class ComponentsController extends Controller
$component->name = $request->input('name');
$component->category_id = $request->input('category_id');
$component->supplier_id = $request->input('supplier_id');
$component->manufacturer_id = $request->input('manufacturer_id');
$component->model_number = $request->input('model_number');
$component->location_id = $request->input('location_id');
$component->company_id = Company::getIdForCurrentUser($request->input('company_id'));
$component->order_number = $request->input('order_number');
@@ -160,8 +166,10 @@ class ComponentsController extends Controller
$component = $request->handleImages($component);
session()->put(['redirect_option' => $request->get('redirect_option')]);
if ($component->save()) {
return redirect()->route('components.index')->with('success', trans('admin/components/message.update.success'));
return redirect()->to(Helper::getRedirectOption($request, $component->id, 'Components'))->with('success', trans('admin/components/message.update.success'));
}
return redirect()->back()->withInput()->withErrors($component->getErrors());
@@ -185,7 +193,7 @@ class ComponentsController extends Controller
$this->authorize('delete', $component);
// Remove the image if one exists
if (Storage::disk('public')->exists('components/'.$component->image)) {
if ($component->image && Storage::disk('public')->exists('components/' . $component->image)) {
try {
Storage::disk('public')->delete('components/'.$component->image);
} catch (\Exception $e) {

View File

@@ -50,7 +50,7 @@ class ComponentsFilesController extends Controller
}
return redirect()->route('components.show', $component->id)->with('success', trans('general.file_upload_success'));
return redirect()->route('components.show', $component->id)->withFragment('files')->with('success', trans('general.file_upload_success'));
}
@@ -91,7 +91,7 @@ class ComponentsFilesController extends Controller
$log->delete();
return redirect()->back()
return redirect()->back()->withFragment('files')
->with('success', trans('admin/hardware/message.deletefile.success'));
}
@@ -112,40 +112,25 @@ class ComponentsFilesController extends Controller
public function show($componentId = null, $fileId = null)
{
Log::debug('Private filesystem is: '.config('filesystems.default'));
$component = Component::find($componentId);
// the component is valid
if (isset($component->id)) {
if ($component = Component::find($componentId)) {
$this->authorize('view', $component);
$this->authorize('components.files', $component);
if (! $log = Actionlog::whereNotNull('filename')->where('item_id', $component->id)->find($fileId)) {
return response('No matching record for that asset/file', 500)
->header('Content-Type', 'text/plain');
}
if ($log = Actionlog::whereNotNull('filename')->where('item_id', $component->id)->find($fileId)) {
$file = 'private_uploads/components/'.$log->filename;
$file = 'private_uploads/components/'.$log->filename;
if (Storage::missing($file)) {
Log::debug('FILE DOES NOT EXISTS for '.$file);
Log::debug('URL should be '.Storage::url($file));
return response('File '.$file.' ('.Storage::url($file).') not found on server', 404)
->header('Content-Type', 'text/plain');
} else {
// Display the file inline
if (request('inline') == 'true') {
$headers = [
'Content-Disposition' => 'inline',
];
return Storage::download($file, $log->filename, $headers);
try {
return StorageHelper::showOrDownloadFile($file, $log->filename);
} catch (\Exception $e) {
return redirect()->route('components.show', ['component' => $component])->with('error', trans('general.file_not_found'));
}
if (config('filesystems.default') == 'local') { // TODO - is there any way to fix this at the StorageHelper layer?
return StorageHelper::downloader($file);
}
}
return redirect()->route('components.show', ['component' => $component])->with('error', trans('general.log_record_not_found'));
}
return redirect()->route('components.index')->with('error', trans('general.file_does_not_exist', ['id' => $fileId]));

View File

@@ -3,6 +3,7 @@
namespace App\Http\Controllers\Consumables;
use App\Events\CheckoutableCheckedOut;
use App\Helpers\Helper;
use App\Http\Controllers\Controller;
use App\Models\Consumable;
use App\Models\User;
@@ -33,7 +34,7 @@ class ConsumableCheckoutController extends Controller
// Make sure there is at least one available to checkout
if ($consumable->numRemaining() <= 0){
return redirect()->route('consumables.index')
->with('error', trans('admin/consumables/message.checkout.unavailable'));
->with('error', trans('admin/consumables/message.checkout.unavailable', ['requested' => 1, 'remaining' => $consumable->numRemaining()]));
}
// Return the checkout view
@@ -69,14 +70,14 @@ class ConsumableCheckoutController extends Controller
$this->authorize('checkout', $consumable);
// If the quantity is not present in the request or is not a positive integer, set it to 1
$quantity = $request->input('qty');
$quantity = $request->input('checkout_qty');
if (!isset($quantity) || !ctype_digit((string)$quantity) || $quantity <= 0) {
$quantity = 1;
}
// Make sure there is at least one available to checkout
if ($consumable->numRemaining() <= 0 || $quantity > $consumable->numRemaining()) {
return redirect()->route('consumables.index')->with('error', trans('admin/consumables/message.checkout.unavailable'));
return redirect()->route('consumables.index')->with('error', trans('admin/consumables/message.checkout.unavailable', ['requested' => $quantity, 'remaining' => $consumable->numRemaining() ]));
}
$admin_user = auth()->user();
@@ -91,17 +92,25 @@ class ConsumableCheckoutController extends Controller
// Update the consumable data
$consumable->assigned_to = e($request->input('assigned_to'));
for($i = 0; $i < $quantity; $i++){
for ($i = 0; $i < $quantity; $i++){
$consumable->users()->attach($consumable->id, [
'consumable_id' => $consumable->id,
'user_id' => $admin_user->id,
'created_by' => $admin_user->id,
'assigned_to' => e($request->input('assigned_to')),
'note' => $request->input('note'),
]);
}
$consumable->checkout_qty = $quantity;
event(new CheckoutableCheckedOut($consumable, $user, auth()->user(), $request->input('note')));
$request->request->add(['checkout_to_type' => 'user']);
$request->request->add(['assigned_user' => $user->id]);
session()->put(['redirect_option' => $request->get('redirect_option'), 'checkout_to_type' => $request->get('checkout_to_type')]);
// Redirect to the new consumable page
return redirect()->route('consumables.index')->with('success', trans('admin/consumables/message.checkout.success'));
return redirect()->to(Helper::getRedirectOption($request, $consumable->id, 'Consumables'))->with('success', trans('admin/consumables/message.checkout.success'));
}
}

View File

@@ -50,7 +50,7 @@ class ConsumablesController extends Controller
{
$this->authorize('create', Consumable::class);
return view('consumables/edit')->with('category_type', 'consumable')
return view('consumables.edit')->with('category_type', 'consumable')
->with('item', new Consumable);
}
@@ -81,14 +81,16 @@ class ConsumablesController extends Controller
$consumable->purchase_date = $request->input('purchase_date');
$consumable->purchase_cost = $request->input('purchase_cost');
$consumable->qty = $request->input('qty');
$consumable->user_id = Auth::id();
$consumable->created_by = auth()->id();
$consumable->notes = $request->input('notes');
$consumable = $request->handleImages($consumable);
session()->put(['redirect_option' => $request->get('redirect_option')]);
if ($consumable->save()) {
return redirect()->route('consumables.index')->with('success', trans('admin/consumables/message.create.success'));
return redirect()->to(Helper::getRedirectOption($request, $consumable->id, 'Consumables'))->with('success', trans('admin/consumables/message.create.success'));
}
return redirect()->back()->withInput()->withErrors($consumable->getErrors());
@@ -160,8 +162,10 @@ class ConsumablesController extends Controller
$consumable = $request->handleImages($consumable);
session()->put(['redirect_option' => $request->get('redirect_option')]);
if ($consumable->save()) {
return redirect()->route('consumables.index')->with('success', trans('admin/consumables/message.update.success'));
return redirect()->to(Helper::getRedirectOption($request, $consumable->id, 'Consumables'))->with('success', trans('admin/consumables/message.update.success'));
}
return redirect()->back()->withInput()->withErrors($consumable->getErrors());
@@ -200,7 +204,7 @@ class ConsumablesController extends Controller
*/
public function show($consumableId = null)
{
$consumable = Consumable::find($consumableId);
$consumable = Consumable::withCount('users as users_consumables')->find($consumableId);
$this->authorize($consumable);
if (isset($consumable->id)) {
return view('consumables/view', compact('consumable'));
@@ -209,4 +213,16 @@ class ConsumablesController extends Controller
return redirect()->route('consumables.index')
->with('error', trans('admin/consumables/message.does_not_exist'));
}
public function clone(Consumable $consumable) : View
{
$this->authorize('create', $consumable);
$consumable_to_close = $consumable;
$consumable = clone $consumable_to_close;
$consumable->id = null;
$consumable->image = null;
$consumable->created_by = null;
return view('consumables/edit')->with('item', $consumable);
}
}

View File

@@ -48,7 +48,7 @@ class ConsumablesFilesController extends Controller
}
return redirect()->route('consumables.show', $consumable->id)->with('success', trans('general.file_upload_success'));
return redirect()->route('consumables.show', $consumable->id)->withFragment('files')->with('success', trans('general.file_upload_success'));
}
@@ -89,7 +89,7 @@ class ConsumablesFilesController extends Controller
$log->delete();
return redirect()->back()
return redirect()->back()->withFragment('files')
->with('success', trans('admin/hardware/message.deletefile.success'));
}
@@ -104,7 +104,6 @@ class ConsumablesFilesController extends Controller
* @since [v1.4]
* @param int $consumableId
* @param int $fileId
* @return \Symfony\Consumable\HttpFoundation\Response
* @throws \Illuminate\Auth\Access\AuthorizationException
*/
public function show($consumableId = null, $fileId = null)
@@ -116,36 +115,18 @@ class ConsumablesFilesController extends Controller
$this->authorize('view', $consumable);
$this->authorize('consumables.files', $consumable);
if (! $log = Actionlog::whereNotNull('filename')->where('item_id', $consumable->id)->find($fileId)) {
return response('No matching record for that asset/file', 500)
->header('Content-Type', 'text/plain');
}
if ($log = Actionlog::whereNotNull('filename')->where('item_id', $consumable->id)->find($fileId)) {
$file = 'private_uploads/consumables/'.$log->filename;
$file = 'private_uploads/consumables/'.$log->filename;
if (Storage::missing($file)) {
Log::debug('FILE DOES NOT EXISTS for '.$file);
Log::debug('URL should be '.Storage::url($file));
return response('File '.$file.' ('.Storage::url($file).') not found on server', 404)
->header('Content-Type', 'text/plain');
} else {
// Display the file inline
if (request('inline') == 'true') {
$headers = [
'Content-Disposition' => 'inline',
];
return Storage::download($file, $log->filename, $headers);
}
// We have to override the URL stuff here, since local defaults in Laravel's Flysystem
// won't work, as they're not accessible via the web
if (config('filesystems.default') == 'local') { // TODO - is there any way to fix this at the StorageHelper layer?
return StorageHelper::downloader($file);
try {
return StorageHelper::showOrDownloadFile($file, $log->filename);
} catch (\Exception $e) {
return redirect()->route('consumables.show', ['consumable' => $consumable])->with('error', trans('general.file_not_found'));
}
}
// The log record doesn't exist somehow
return redirect()->route('consumables.show', ['consumable' => $consumable])->with('error', trans('general.log_record_not_found'));
}
return redirect()->route('consumables.index')->with('error', trans('general.file_does_not_exist', ['id' => $fileId]));

View File

@@ -104,7 +104,7 @@ class CustomFieldsController extends Controller
"auto_add_to_fieldsets" => $request->get("auto_add_to_fieldsets", 0),
"show_in_listview" => $request->get("show_in_listview", 0),
"show_in_requestable_list" => $request->get("show_in_requestable_list", 0),
"user_id" => Auth::id()
"created_by" => auth()->id()
]);
@@ -248,7 +248,7 @@ class CustomFieldsController extends Controller
$field->name = trim(e($request->get("name")));
$field->element = e($request->get("element"));
$field->field_values = $request->get("field_values");
$field->user_id = Auth::id();
$field->created_by = auth()->id();
$field->help_text = $request->get("help_text");
$field->show_in_email = $show_in_email;
$field->is_unique = $request->get("is_unique", 0);

View File

@@ -90,7 +90,7 @@ class CustomFieldsetsController extends Controller
$fieldset = new CustomFieldset([
'name' => $request->get('name'),
'user_id' => auth()->id(),
'created_by' => auth()->id(),
]);
$validator = Validator::make($request->all(), $fieldset->rules);
@@ -211,7 +211,7 @@ class CustomFieldsetsController extends Controller
return redirect()->route('fieldsets.show', [$id])->with('success', trans('admin/custom_fields/message.field.create.assoc_success'));
}
return redirect()->route('fieldsets.show', [$id])->with('error', 'No field selected.');
return redirect()->route('fieldsets.show', [$id])->with('error', trans('admin/custom_fields/message.field.none_selected'));
}
/**

View File

@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Http\RedirectResponse;
use \Illuminate\Contracts\View\View;
use Illuminate\Support\Facades\Session;
/**
@@ -44,6 +45,8 @@ class DashboardController extends Controller
return view('dashboard')->with('asset_stats', $asset_stats)->with('counts', $counts);
} else {
Session::reflash();
// Redirect to the profile page
return redirect()->intended('account/view-assets');
}

View File

@@ -51,10 +51,11 @@ class DepartmentsController extends Controller
$this->authorize('create', Department::class);
$department = new Department;
$department->fill($request->all());
$department->user_id = auth()->id();
$department->created_by = auth()->id();
$department->manager_id = ($request->filled('manager_id') ? $request->input('manager_id') : null);
$department->location_id = ($request->filled('location_id') ? $request->input('location_id') : null);
$department->company_id = ($request->filled('company_id') ? $request->input('company_id') : null);
$department->notes = $request->input('notes');
$department = $request->handleImages($department);
if ($department->save()) {
@@ -171,7 +172,7 @@ class DepartmentsController extends Controller
$department->company_id = ($request->filled('company_id') ? $request->input('company_id') : null);
$department->phone = $request->input('phone');
$department->fax = $request->input('fax');
$department->notes = $request->input('notes');
$department = $request->handleImages($department);
if ($department->save()) {

View File

@@ -61,7 +61,21 @@ class DepreciationsController extends Controller
// Depreciation data
$depreciation->name = $request->input('name');
$depreciation->months = $request->input('months');
$depreciation->user_id = Auth::id();
$depreciation->created_by = auth()->id();
$request->validate([
'depreciation_min' => [
'required',
'numeric',
function ($attribute, $value, $fail) use ($request) {
if ($request->input('depreciation_type') == 'percent' && ($value < 0 || $value > 100)) {
$fail(trans('validation.percent'));
}
},
],
'depreciation_type' => 'required|in:amount,percent',
]);
$depreciation->depreciation_type = $request->input('depreciation_type');
$depreciation->depreciation_min = $request->input('depreciation_min');
// Was the asset created?
@@ -116,6 +130,20 @@ class DepreciationsController extends Controller
// Depreciation data
$depreciation->name = $request->input('name');
$depreciation->months = $request->input('months');
$request->validate([
'depreciation_min' => [
'required',
'numeric',
function ($attribute, $value, $fail) use ($request) {
if ($request->input('depreciation_type') == 'percent' && ($value < 0 || $value > 100)) {
$fail(trans('validation.percent'));
}
},
],
'depreciation_type' => 'required|in:amount,percent',
]);
$depreciation->depreciation_type = $request->input('depreciation_type');
$depreciation->depreciation_min = $request->input('depreciation_min');
// Was the asset created?
@@ -165,13 +193,20 @@ class DepreciationsController extends Controller
*/
public function show($id) : View | RedirectResponse
{
if (is_null($depreciation = Depreciation::find($id))) {
// Redirect to the blogs management page
return redirect()->route('depreciations.index')->with('error', trans('admin/depreciations/message.does_not_exist'));
}
$depreciation = Depreciation::withCount('assets as assets_count')
->withCount('models as models_count')
->withCount('licenses as licenses_count')
->find($id);
$this->authorize('view', $depreciation);
return view('depreciations/view', compact('depreciation'));
if ($depreciation) {
return view('depreciations/view', compact('depreciation'));
}
return redirect()->route('depreciations.index')->with('error', trans('admin/depreciations/message.does_not_exist'));
}
}

View File

@@ -62,6 +62,7 @@ class GroupsController extends Controller
$group->name = $request->input('name');
$group->permissions = json_encode($request->input('permission'));
$group->created_by = auth()->id();
$group->notes = $request->input('notes');
if ($group->save()) {
return redirect()->route('groups.index')->with('success', trans('admin/groups/message.success.create'));
@@ -108,6 +109,7 @@ class GroupsController extends Controller
}
$group->name = $request->input('name');
$group->permissions = json_encode($request->input('permission'));
$group->notes = $request->input('notes');
if (! config('app.lock_passwords')) {
if ($group->save()) {

View File

@@ -3,6 +3,7 @@
namespace App\Http\Controllers;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Support\Facades\DB;
/**
* This controller provide the health route for
@@ -15,13 +16,35 @@ use Illuminate\Routing\Controller as BaseController;
*/
class HealthController extends BaseController
{
public function __construct()
{
$this->middleware('health');
}
/**
* Returns a fixed JSON content ({ "status": "ok"}) which indicate the app is up and running
*/
public function get()
{
return response()->json([
'status' => 'ok',
]);
try {
if (DB::select('select 2 + 2')) {
return response()->json([
'status' => 'ok',
]);
}
} catch (\Exception $e) {
\Log::error('Could not connect to database');
return response()->json([
'status' => 'database connection failed',
], 500);
}
}
}

View File

@@ -62,10 +62,10 @@ class CheckoutKitController extends Controller
$checkout_result = $this->kitService->checkout($request, $kit, $user);
if (Arr::has($checkout_result, 'errors') && count($checkout_result['errors']) > 0) {
return redirect()->back()->with('error', trans('general.checkout_error'))->with('error_messages', $checkout_result['errors']);
return redirect()->back()->with('error', trans('admin/kits/general.checkout_error'))->with('error_messages', $checkout_result['errors']);
}
return redirect()->back()->with('success', trans('general.checkout_success'))
return redirect()->back()->with('success', trans('admin/kits/general.checkout_success'))
->with('assets', Arr::get($checkout_result, 'assets', null))
->with('accessories', Arr::get($checkout_result, 'accessories', null))
->with('consumables', Arr::get($checkout_result, 'consumables', null));

View File

@@ -55,6 +55,7 @@ class PredefinedKitsController extends Controller
// Create a new Predefined Kit
$kit = new PredefinedKit;
$kit->name = $request->input('name');
$kit->created_by = auth()->id();
if (! $kit->save()) {
return redirect()->back()->withInput()->withErrors($kit->getErrors());

View File

@@ -3,6 +3,7 @@
namespace App\Http\Controllers\Licenses;
use App\Events\CheckoutableCheckedIn;
use App\Helpers\Helper;
use App\Http\Controllers\Controller;
use App\Models\License;
use App\Models\LicenseSeat;
@@ -70,7 +71,7 @@ class LicenseCheckinController extends Controller
if (! $license->reassignable) {
// Not allowed to checkin
Session::flash('error', 'License not reassignable.');
Session::flash('error', trans('admin/licenses/message.checkin.not_reassignable') . '.');
return redirect()->back()->withInput();
}
@@ -100,15 +101,15 @@ class LicenseCheckinController extends Controller
$licenseSeat->asset_id = null;
$licenseSeat->notes = $request->input('notes');
session()->put(['redirect_option' => $request->get('redirect_option')]);
// Was the asset updated?
if ($licenseSeat->save()) {
event(new CheckoutableCheckedIn($licenseSeat, $return_to, auth()->user(), $request->input('notes')));
if ($backTo == 'user') {
return redirect()->route('users.show', $return_to->id)->with('success', trans('admin/licenses/message.checkin.success'));
}
return redirect()->route('licenses.show', $licenseSeat->license_id)->with('success', trans('admin/licenses/message.checkin.success'));
return redirect()->to(Helper::getRedirectOption($request, $license->id, 'Licenses'))->with('success', trans('admin/licenses/message.checkin.success'));
}
// Redirect to the license page with error

View File

@@ -3,6 +3,7 @@
namespace App\Http\Controllers\Licenses;
use App\Events\CheckoutableCheckedOut;
use App\Helpers\Helper;
use App\Http\Controllers\Controller;
use App\Http\Requests\LicenseCheckoutRequest;
use App\Models\Accessory;
@@ -76,15 +77,32 @@ class LicenseCheckoutController extends Controller
$this->authorize('checkout', $license);
$licenseSeat = $this->findLicenseSeatToCheckout($license, $seatId);
$licenseSeat->user_id = Auth::id();
$licenseSeat->created_by = auth()->id();
$licenseSeat->notes = $request->input('notes');
$checkoutMethod = 'checkoutTo'.ucwords(request('checkout_to_type'));
if ($this->$checkoutMethod($licenseSeat)) {
return redirect()->route('licenses.index')->with('success', trans('admin/licenses/message.checkout.success'));
if ($request->filled('asset_id')) {
$checkoutTarget = $this->checkoutToAsset($licenseSeat);
$request->request->add(['assigned_asset' => $checkoutTarget->id]);
session()->put(['redirect_option' => $request->get('redirect_option'), 'checkout_to_type' => 'asset']);
} elseif ($request->filled('assigned_to')) {
$checkoutTarget = $this->checkoutToUser($licenseSeat);
$request->request->add(['assigned_user' => $checkoutTarget->id]);
session()->put(['redirect_option' => $request->get('redirect_option'), 'checkout_to_type' => 'user']);
}
if ($checkoutTarget) {
return redirect()->to(Helper::getRedirectOption($request, $license->id, 'Licenses'))->with('success', trans('admin/licenses/message.checkout.success'));
}
return redirect()->route('licenses.index')->with('error', trans('Something went wrong handling this checkout.'));
}
@@ -94,14 +112,14 @@ class LicenseCheckoutController extends Controller
if (! $licenseSeat) {
if ($seatId) {
throw new \Illuminate\Http\Exceptions\HttpResponseException(redirect()->route('licenses.index')->with('error', 'This Seat is not available for checkout.'));
throw new \Illuminate\Http\Exceptions\HttpResponseException(redirect()->route('licenses.index')->with('error', trans('admin/licenses/message.checkout.unavailable')));
}
throw new \Illuminate\Http\Exceptions\HttpResponseException(redirect()->route('licenses.index')->with('error', 'There are no available seats for this license.'));
throw new \Illuminate\Http\Exceptions\HttpResponseException(redirect()->route('licenses.index')->with('error', trans('admin/licenses/message.checkout.not_enough_seats')));
}
if (! $licenseSeat->license->is($license)) {
throw new \Illuminate\Http\Exceptions\HttpResponseException(redirect()->route('licenses.index')->with('error', 'The license seat provided does not match the license.'));
throw new \Illuminate\Http\Exceptions\HttpResponseException(redirect()->route('licenses.index')->with('error', trans('admin/licenses/message.checkout.mismatch')));
}
return $licenseSeat;
@@ -120,8 +138,7 @@ class LicenseCheckoutController extends Controller
}
if ($licenseSeat->save()) {
event(new CheckoutableCheckedOut($licenseSeat, $target, auth()->user(), request('notes')));
return true;
return $target;
}
return false;
@@ -137,8 +154,7 @@ class LicenseCheckoutController extends Controller
if ($licenseSeat->save()) {
event(new CheckoutableCheckedOut($licenseSeat, $target, auth()->user(), request('notes')));
return true;
return $target;
}
return false;

View File

@@ -112,37 +112,19 @@ class LicenseFilesController extends Controller
$this->authorize('view', $license);
$this->authorize('licenses.files', $license);
if (! $log = Actionlog::whereNotNull('filename')->where('item_id', $license->id)->find($fileId)) {
return response('No matching record for that asset/file', 500)
->header('Content-Type', 'text/plain');
}
$file = 'private_uploads/licenses/'.$log->filename;
if (Storage::missing($file)) {
Log::debug('NOT EXISTS for '.$file);
Log::debug('NOT EXISTS URL should be '.Storage::url($file));
return response('File '.$file.' ('.Storage::url($file).') not found on server', 404)
->header('Content-Type', 'text/plain');
} else {
if (request('inline') == 'true') {
$headers = [
'Content-Disposition' => 'inline',
];
return Storage::download($file, $log->filename, $headers);
}
// We have to override the URL stuff here, since local defaults in Laravel's Flysystem
// won't work, as they're not accessible via the web
if (config('filesystems.default') == 'local') { // TODO - is there any way to fix this at the StorageHelper layer?
return StorageHelper::downloader($file);
if ($log = Actionlog::whereNotNull('filename')->where('item_id', $license->id)->find($fileId)) {
$file = 'private_uploads/licenses/'.$log->filename;
try {
return StorageHelper::showOrDownloadFile($file, $log->filename);
} catch (\Exception $e) {
return redirect()->route('licenses.show', ['licenses' => $license])->with('error', trans('general.file_not_found'));
}
}
// The log record doesn't exist somehow
return redirect()->route('licenses.show', ['licenses' => $license])->with('error', trans('general.log_record_not_found'));
}
return redirect()->route('licenses.index')->with('error', trans('admin/licenses/message.does_not_exist', ['id' => $fileId]));

View File

@@ -99,11 +99,13 @@ class LicensesController extends Controller
$license->supplier_id = $request->input('supplier_id');
$license->category_id = $request->input('category_id');
$license->termination_date = $request->input('termination_date');
$license->user_id = Auth::id();
$license->created_by = auth()->id();
$license->min_amt = $request->input('min_amt');
session()->put(['redirect_option' => $request->get('redirect_option')]);
if ($license->save()) {
return redirect()->route('licenses.index')->with('success', trans('admin/licenses/message.create.success'));
return redirect()->to(Helper::getRedirectOption($request, $license->id, 'Licenses'))->with('success', trans('admin/licenses/message.create.success'));
}
return redirect()->back()->withInput()->withErrors($license->getErrors());
@@ -180,8 +182,10 @@ class LicensesController extends Controller
$license->category_id = $request->input('category_id');
$license->min_amt = $request->input('min_amt');
session()->put(['redirect_option' => $request->get('redirect_option')]);
if ($license->save()) {
return redirect()->route('licenses.show', ['license' => $licenseId])->with('success', trans('admin/licenses/message.update.success'));
return redirect()->to(Helper::getRedirectOption($request, $license->id, 'Licenses'))->with('success', trans('admin/licenses/message.update.success'));
}
// If we can't adjust the number of seats, the error is flashed to the session by the event handler in License.php
return redirect()->back()->withInput()->withErrors($license->getErrors());

Some files were not shown because too many files have changed in this diff Show More