@fleetbase/fleetops-engine 0.6.69 → 0.6.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/RELEASE.md +21 -14
- package/addon/components/admin/telematics-settings.hbs +143 -0
- package/addon/components/admin/telematics-settings.js +145 -0
- package/addon/components/fuel-integration/hub.hbs +1 -1
- package/addon/components/layout/fleet-ops-sidebar.js +37 -17
- package/addon/components/map/leaflet-live-map.hbs +4 -242
- package/addon/components/map/leaflet-live-map.js +2 -1
- package/addon/components/map/marker-card/driver.hbs +57 -0
- package/addon/components/map/marker-card/driver.js +3 -0
- package/addon/components/map/marker-card/vehicle.hbs +78 -0
- package/addon/components/map/marker-card/vehicle.js +3 -0
- package/addon/components/order/details/activity.hbs +8 -6
- package/addon/components/order/details/activity.js +9 -0
- package/addon/components/order/details.hbs +29 -0
- package/addon/components/order/details.js +26 -0
- package/addon/components/order/form/details.hbs +30 -4
- package/addon/components/order/form/details.js +46 -0
- package/addon/components/order/form/route.hbs +4 -2
- package/addon/components/order/form/route.js +11 -0
- package/addon/components/order/form.hbs +12 -0
- package/addon/components/order/form.js +21 -1
- package/addon/components/order/kanban.js +72 -0
- package/addon/components/order-config-manager/activity-flow.js +45 -10
- package/addon/components/order-config-manager/lifecycle.hbs +250 -0
- package/addon/components/order-config-manager/lifecycle.js +358 -0
- package/addon/components/order-config-manager.js +5 -1
- package/addon/components/telematic/hub.hbs +1 -1
- package/addon/components/widget/live-fleet.hbs +8 -40
- package/addon/controllers/analytics/reports/index.js +15 -1
- package/addon/controllers/connectivity/devices/index/details.js +1 -0
- package/addon/controllers/connectivity/devices/index.js +12 -2
- package/addon/controllers/connectivity/events/index.js +31 -1
- package/addon/controllers/connectivity/fuel-providers/index.js +6 -4
- package/addon/controllers/connectivity/sensors/index/details.js +1 -1
- package/addon/controllers/connectivity/sensors/index.js +41 -1
- package/addon/controllers/connectivity/telematics/index.js +4 -0
- package/addon/controllers/maintenance/equipment/index/details.js +2 -2
- package/addon/controllers/maintenance/equipment/index.js +36 -10
- package/addon/controllers/maintenance/inspection-forms/index.js +32 -12
- package/addon/controllers/maintenance/inspection-submissions/index/details.js +2 -1
- package/addon/controllers/maintenance/inspection-submissions/index.js +56 -10
- package/addon/controllers/maintenance/maintenances/index/details.js +2 -0
- package/addon/controllers/maintenance/maintenances/index.js +24 -1
- package/addon/controllers/maintenance/parts/index/details.js +2 -2
- package/addon/controllers/maintenance/parts/index.js +36 -9
- package/addon/controllers/maintenance/schedules/index.js +48 -6
- package/addon/controllers/maintenance/work-orders/index/details.js +3 -3
- package/addon/controllers/maintenance/work-orders/index.js +47 -9
- package/addon/controllers/management/contacts/customers.js +13 -0
- package/addon/controllers/management/contacts/index.js +47 -1
- package/addon/controllers/management/drivers/index/details.js +1 -0
- package/addon/controllers/management/drivers/index.js +36 -2
- package/addon/controllers/management/fleets/index/details.js +1 -0
- package/addon/controllers/management/fleets/index.js +43 -1
- package/addon/controllers/management/fuel-reports/index.js +26 -2
- package/addon/controllers/management/fuel-transactions/index.js +45 -7
- package/addon/controllers/management/issues/index/details.js +1 -0
- package/addon/controllers/management/issues/index.js +26 -2
- package/addon/controllers/management/places/index.js +40 -1
- package/addon/controllers/management/trailers/index/details.js +1 -0
- package/addon/controllers/management/trailers/index.js +50 -2
- package/addon/controllers/management/vehicles/index/details.js +1 -0
- package/addon/controllers/management/vehicles/index.js +37 -2
- package/addon/controllers/management/vendors/index.js +30 -2
- package/addon/controllers/operations/orders/index/details.js +61 -5
- package/addon/controllers/operations/orders/index.js +66 -4
- package/addon/controllers/operations/service-rates/index.js +18 -1
- package/addon/controllers/settings/index.js +13 -0
- package/addon/controllers/settings/telematics.js +113 -0
- package/addon/extension.js +70 -6
- package/addon/routes/analytics/index.js +14 -1
- package/addon/routes/analytics/reports/index/details.js +1 -1
- package/addon/routes/analytics/reports/index/edit.js +1 -1
- package/addon/routes/analytics/reports/index/new.js +14 -1
- package/addon/routes/analytics/reports.js +14 -1
- package/addon/routes/connectivity/devices/index/new.js +14 -1
- package/addon/routes/connectivity/devices.js +14 -1
- package/addon/routes/connectivity/events.js +14 -1
- package/addon/routes/connectivity/fuel-providers/details/transactions.js +12 -0
- package/addon/routes/connectivity/fuel-providers/details.js +9 -0
- package/addon/routes/connectivity/fuel-providers/edit.js +9 -0
- package/addon/routes/connectivity/fuel-providers/new.js +14 -1
- package/addon/routes/connectivity/fuel-providers.js +14 -1
- package/addon/routes/connectivity/sensors/index/new.js +14 -1
- package/addon/routes/connectivity/sensors.js +14 -1
- package/addon/routes/connectivity/telematics/new.js +14 -1
- package/addon/routes/connectivity/telematics.js +14 -1
- package/addon/routes/connectivity/tracking.js +14 -1
- package/addon/routes/maintenance/equipment/index/details.js +2 -2
- package/addon/routes/maintenance/equipment/index/edit.js +2 -2
- package/addon/routes/maintenance/equipment/index/new.js +14 -1
- package/addon/routes/maintenance/equipment.js +14 -1
- package/addon/routes/maintenance/index.js +14 -1
- package/addon/routes/maintenance/inspection-forms/index/details.js +10 -1
- package/addon/routes/maintenance/inspection-forms/index/edit.js +10 -1
- package/addon/routes/maintenance/inspection-forms/index/new.js +14 -1
- package/addon/routes/maintenance/inspection-forms.js +14 -1
- package/addon/routes/maintenance/inspection-submissions/index/details.js +10 -1
- package/addon/routes/maintenance/inspection-submissions/index/edit.js +10 -1
- package/addon/routes/maintenance/inspection-submissions/index/new.js +14 -1
- package/addon/routes/maintenance/inspection-submissions.js +14 -1
- package/addon/routes/maintenance/maintenances/index/details.js +2 -2
- package/addon/routes/maintenance/maintenances/index/edit.js +2 -2
- package/addon/routes/maintenance/maintenances/index/new.js +14 -1
- package/addon/routes/maintenance/maintenances.js +14 -1
- package/addon/routes/maintenance/parts/index/details.js +2 -2
- package/addon/routes/maintenance/parts/index/edit.js +2 -2
- package/addon/routes/maintenance/parts/index/new.js +14 -1
- package/addon/routes/maintenance/parts.js +14 -1
- package/addon/routes/maintenance/schedules/index/details.js +2 -2
- package/addon/routes/maintenance/schedules/index/edit.js +2 -2
- package/addon/routes/maintenance/schedules/index/new.js +15 -1
- package/addon/routes/maintenance/schedules.js +15 -1
- package/addon/routes/maintenance/work-orders/index/details.js +2 -2
- package/addon/routes/maintenance/work-orders/index/edit.js +2 -2
- package/addon/routes/maintenance/work-orders/index/new.js +14 -1
- package/addon/routes/maintenance/work-orders.js +14 -1
- package/addon/routes/management/fuel-transactions/index/details.js +9 -0
- package/addon/routes/management/fuel-transactions.js +14 -1
- package/addon/routes/management/index.js +13 -0
- package/addon/routes/management/trailers.js +16 -0
- package/addon/routes/management/vendors/integrated/details.js +14 -1
- package/addon/routes/management/vendors/integrated/edit.js +14 -1
- package/addon/routes/management/vendors/integrated/new.js +14 -1
- package/addon/routes/management/vendors/integrated.js +14 -1
- package/addon/routes/operations/orders/index/details.js +1 -0
- package/addon/routes/operations/orders.js +40 -1
- package/addon/routes/operations/routes/index/details.js +14 -1
- package/addon/routes/operations/routes/index/new.js +13 -0
- package/addon/routes/operations/routes.js +14 -1
- package/addon/routes/operations/service-rates/index/new.js +11 -0
- package/addon/routes/operations/service-rates.js +14 -1
- package/addon/routes/settings/avatars.js +14 -1
- package/addon/routes/settings/custom-fields.js +14 -1
- package/addon/routes/settings/map.js +14 -1
- package/addon/routes/settings/notifications.js +11 -0
- package/addon/routes/settings/orchestrator.js +1 -1
- package/addon/routes/settings/payments/index.js +1 -1
- package/addon/routes/settings/routing.js +14 -1
- package/addon/routes/settings/scheduling.js +14 -1
- package/addon/routes/settings/telematics.js +21 -0
- package/addon/routes/virtual.js +11 -0
- package/addon/routes.js +1 -0
- package/addon/services/contact-actions.js +1 -0
- package/addon/services/customer-actions.js +2 -1
- package/addon/services/device-actions.js +1 -0
- package/addon/services/device-event-actions.js +1 -0
- package/addon/services/driver-actions.js +4 -13
- package/addon/services/equipment-actions.js +1 -0
- package/addon/services/fleet-actions.js +1 -0
- package/addon/services/fuel-report-actions.js +1 -0
- package/addon/services/inspection-form-actions.js +1 -0
- package/addon/services/inspection-submission-actions.js +1 -0
- package/addon/services/integrated-vendor-actions.js +1 -0
- package/addon/services/issue-actions.js +1 -0
- package/addon/services/maintenance-actions.js +1 -0
- package/addon/services/maintenance-schedule-actions.js +2 -1
- package/addon/services/order-actions.js +7 -0
- package/addon/services/order-presentation.js +129 -0
- package/addon/services/part-actions.js +1 -0
- package/addon/services/place-actions.js +1 -0
- package/addon/services/sensor-actions.js +1 -0
- package/addon/services/service-area-actions.js +1 -0
- package/addon/services/service-rate-actions.js +1 -0
- package/addon/services/telematic-actions.js +1 -0
- package/addon/services/trailer-actions.js +4 -14
- package/addon/services/vehicle-actions.js +4 -13
- package/addon/services/vendor-actions.js +1 -0
- package/addon/services/work-order-actions.js +1 -0
- package/addon/services/zone-actions.js +1 -0
- package/addon/templates/analytics/reports/index/details.hbs +1 -0
- package/addon/templates/analytics/reports/index.hbs +1 -0
- package/addon/templates/connectivity/devices/index/details.hbs +1 -0
- package/addon/templates/connectivity/devices/index.hbs +1 -0
- package/addon/templates/connectivity/events/index.hbs +1 -0
- package/addon/templates/connectivity/sensors/index/details.hbs +1 -0
- package/addon/templates/connectivity/sensors/index.hbs +1 -0
- package/addon/templates/maintenance/equipment/index/details.hbs +1 -0
- package/addon/templates/maintenance/equipment/index.hbs +2 -0
- package/addon/templates/maintenance/inspection-forms/index/details.hbs +1 -0
- package/addon/templates/maintenance/inspection-forms/index.hbs +1 -0
- package/addon/templates/maintenance/inspection-submissions/index/details.hbs +1 -0
- package/addon/templates/maintenance/inspection-submissions/index.hbs +1 -0
- package/addon/templates/maintenance/maintenances/index/details.hbs +1 -0
- package/addon/templates/maintenance/maintenances/index.hbs +1 -0
- package/addon/templates/maintenance/parts/index/details.hbs +1 -0
- package/addon/templates/maintenance/parts/index.hbs +2 -0
- package/addon/templates/maintenance/schedules/index/details.hbs +1 -0
- package/addon/templates/maintenance/schedules/index.hbs +2 -0
- package/addon/templates/maintenance/work-orders/index/details.hbs +1 -0
- package/addon/templates/maintenance/work-orders/index.hbs +1 -0
- package/addon/templates/management/contacts/customers/details.hbs +1 -0
- package/addon/templates/management/contacts/customers.hbs +1 -0
- package/addon/templates/management/contacts/index/details.hbs +1 -0
- package/addon/templates/management/contacts/index.hbs +1 -0
- package/addon/templates/management/contacts.hbs +1 -0
- package/addon/templates/management/drivers/index/details.hbs +1 -0
- package/addon/templates/management/drivers/index.hbs +2 -0
- package/addon/templates/management/fleets/index/details.hbs +1 -0
- package/addon/templates/management/fleets/index.hbs +1 -0
- package/addon/templates/management/fuel-reports/index/details.hbs +1 -0
- package/addon/templates/management/fuel-reports/index.hbs +1 -0
- package/addon/templates/management/fuel-transactions/index.hbs +1 -0
- package/addon/templates/management/issues/index/details.hbs +1 -0
- package/addon/templates/management/issues/index.hbs +1 -0
- package/addon/templates/management/places/index/details.hbs +1 -0
- package/addon/templates/management/places/index.hbs +1 -0
- package/addon/templates/management/trailers/index/details.hbs +1 -0
- package/addon/templates/management/trailers/index.hbs +2 -0
- package/addon/templates/management/vehicles/index/details.hbs +1 -0
- package/addon/templates/management/vehicles/index.hbs +2 -0
- package/addon/templates/management/vendors/index/details.hbs +1 -0
- package/addon/templates/management/vendors/index.hbs +2 -0
- package/addon/templates/management/vendors/integrated.hbs +1 -0
- package/addon/templates/operations/orders/index/details.hbs +1 -0
- package/addon/templates/operations/orders/index.hbs +1 -0
- package/addon/templates/operations/service-rates/index/details.hbs +1 -0
- package/addon/templates/operations/service-rates/index.hbs +1 -0
- package/addon/templates/settings/telematics.hbs +70 -0
- package/addon/utils/normalize-order-config-flow.js +6 -1
- package/app/components/admin/telematics-settings.js +1 -0
- package/app/components/map/marker-card/driver.js +1 -0
- package/app/components/map/marker-card/vehicle.js +1 -0
- package/app/controllers/settings/telematics.js +1 -0
- package/app/routes/settings/telematics.js +1 -0
- package/app/services/order-presentation.js +1 -0
- package/app/templates/settings/telematics.js +1 -0
- package/composer.json +2 -2
- package/docs/AFAQY.md +1 -1
- package/docs/TELEMATICS_QUEUES.md +1 -1
- package/docs/TELEMETRY_ARCHITECTURE.md +72 -1
- package/extension.json +1 -1
- package/package.json +3 -3
- package/server/config/telemetry.php +12 -0
- package/server/migrations/2026_09_23_000001_add_retention_index_to_device_events.php +40 -0
- package/server/migrations/2026_09_23_000002_add_retention_index_to_positions.php +40 -0
- package/server/migrations/2026_09_23_000003_add_retention_index_to_telematic_sync_runs.php +40 -0
- package/server/src/Auth/Schemas/FleetOps.php +104 -5
- package/server/src/Console/Commands/DrainTelematicInbox.php +3 -13
- package/server/src/Console/Commands/ProcessOperationalAlerts.php +3 -3
- package/server/src/Console/Commands/PruneTelematicsData.php +318 -0
- package/server/src/Http/Controllers/Api/v1/OrchestrationController.php +9 -0
- package/server/src/Http/Controllers/FleetOpsController.php +21 -0
- package/server/src/Http/Controllers/Internal/v1/AnalyticsController.php +11 -0
- package/server/src/Http/Controllers/Internal/v1/ContactController.php +11 -0
- package/server/src/Http/Controllers/Internal/v1/CustomerController.php +14 -0
- package/server/src/Http/Controllers/Internal/v1/DeviceController.php +13 -0
- package/server/src/Http/Controllers/Internal/v1/DeviceEventController.php +11 -0
- package/server/src/Http/Controllers/Internal/v1/DriverController.php +22 -0
- package/server/src/Http/Controllers/Internal/v1/FuelProviderConnectionController.php +13 -0
- package/server/src/Http/Controllers/Internal/v1/FuelProviderTransactionController.php +15 -0
- package/server/src/Http/Controllers/Internal/v1/FuelReportController.php +9 -3
- package/server/src/Http/Controllers/Internal/v1/InspectionFormController.php +15 -0
- package/server/src/Http/Controllers/Internal/v1/LiveController.php +16 -0
- package/server/src/Http/Controllers/Internal/v1/MaintenanceController.php +15 -0
- package/server/src/Http/Controllers/Internal/v1/MaintenanceScheduleController.php +15 -0
- package/server/src/Http/Controllers/Internal/v1/ManifestController.php +15 -0
- package/server/src/Http/Controllers/Internal/v1/MetricsController.php +11 -0
- package/server/src/Http/Controllers/Internal/v1/NavigatorController.php +42 -1
- package/server/src/Http/Controllers/Internal/v1/OrchestrationController.php +12 -0
- package/server/src/Http/Controllers/Internal/v1/OrderController.php +56 -4
- package/server/src/Http/Controllers/Internal/v1/PaymentController.php +13 -0
- package/server/src/Http/Controllers/Internal/v1/RadarController.php +19 -0
- package/server/src/Http/Controllers/Internal/v1/ServiceAreaController.php +9 -3
- package/server/src/Http/Controllers/Internal/v1/SettingController.php +465 -14
- package/server/src/Http/Controllers/Internal/v1/TelematicController.php +21 -0
- package/server/src/Http/Controllers/Internal/v1/TrailerController.php +21 -0
- package/server/src/Http/Controllers/Internal/v1/VehicleController.php +21 -0
- package/server/src/Http/Controllers/Internal/v1/VendorController.php +17 -0
- package/server/src/Http/Controllers/Internal/v1/WorkOrderController.php +11 -0
- package/server/src/Jobs/DispatchTelematicsRetentionJobs.php +70 -0
- package/server/src/Jobs/PruneTelematicsDataJob.php +74 -0
- package/server/src/Listeners/NotifyDriverOnShiftChange.php +3 -3
- package/server/src/Mail/CustomerCredentialsMail.php +1 -1
- package/server/src/Models/Order.php +35 -3
- package/server/src/Models/OrderConfig.php +129 -0
- package/server/src/Models/TrackingNumber.php +8 -4
- package/server/src/Orchestration/Engines/VroomOrchestrationEngine.php +9 -1
- package/server/src/Providers/FleetOpsServiceProvider.php +3 -0
- package/server/src/Support/Analytics/LiveFleet.php +18 -2
- package/server/src/Support/Authorization.php +103 -0
- package/server/src/Support/Database/TableIndexes.php +66 -0
- package/server/src/Support/OrderTracker.php +2 -2
- package/server/src/Support/Reporting/FleetOpsReportSchema.php +476 -116
- package/server/src/Support/Telematics/Retention/RetentionPolicy.php +300 -0
- package/server/src/Support/Telematics/Retention/TelemetryActivity.php +40 -0
- package/server/src/Support/Telematics/TelematicService.php +12 -2
- package/server/src/Support/Telematics/Telemetry/Ingestor.php +4 -2
- package/server/src/Tracking/TrackingIntelligenceService.php +1 -1
- package/server/src/Tracking/TrackingOptions.php +2 -2
- package/server/src/Traits/AuthorizesMethods.php +37 -0
- package/server/src/routes.php +9 -1
- package/server/tests/AnalyticsRoutesTest.php +29 -2
- package/server/tests/Feature/Http/AfaqyRealtimeIngestionTest.php +16 -1
- package/server/tests/Feature/Http/Api/TelematicsRetentionIndexMigrationTest.php +115 -0
- package/server/tests/Feature/Http/Internal/OrderControllerActivityFlowsTest.php +72 -0
- package/server/tests/Feature/Http/Internal/OrderControllerCreateRecordTest.php +26 -0
- package/server/tests/Feature/Http/Internal/SettingControllerHelpersTest.php +71 -0
- package/server/tests/Feature/Http/Internal/TelematicsStorageDeadlinesTest.php +119 -0
- package/server/tests/InternalImportExportControllerContractsTest.php +5 -8
- package/server/tests/NavigatorControllerContractsTest.php +36 -4
- package/server/tests/NotificationAndMailContractsTest.php +31 -0
- package/server/tests/ObserverContractsTest.php +1 -1
- package/server/tests/OrchestratorConsumableApiTest.php +42 -0
- package/server/tests/OrderConfigLifecycleTest.php +120 -0
- package/server/tests/ProviderContractsTest.php +10 -0
- package/server/tests/ReportSchemaContractsTest.php +120 -6
- package/server/tests/SettingControllerContractsTest.php +429 -18
- package/server/tests/SmallControllerContractsTest.php +8 -5
- package/server/tests/Support/PruneTelematicsDataProbe.php +55 -0
- package/server/tests/Unit/Console/Commands/ProcessOperationalAlertsCommandTest.php +2 -2
- package/server/tests/Unit/Console/PruneTelematicsDataCommandTest.php +353 -0
- package/server/tests/Unit/Events/OrderDispatchFailedTest.php +2 -1
- package/server/tests/Unit/Jobs/DispatchTelematicsRetentionJobsTest.php +114 -0
- package/server/tests/Unit/Jobs/PruneTelematicsDataJobTest.php +60 -0
- package/server/tests/Unit/Orchestration/VroomEngineTransportAndSettingsTest.php +20 -0
- package/server/tests/Unit/Support/Analytics/LiveFleetTest.php +6 -0
- package/server/tests/Unit/Support/AuthorizationTest.php +142 -0
- package/server/tests/Unit/Support/MaintainableAndOperationalAlertsTest.php +12 -1
- package/server/tests/Unit/Support/MoreQuerySeamsTest.php +11 -2
- package/server/tests/Unit/Support/Telematics/Retention/RetentionPolicyTest.php +190 -0
- package/server/tests/Unit/Support/Telematics/Retention/TelemetryActivityTest.php +68 -0
- package/server/tests/Unit/Tracking/TrackingOptionsCompanySettingsTest.php +109 -0
- package/translations/en-us.yaml +108 -0
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
namespace Fleetbase\FleetOps\Http\Controllers\Internal\v1;
|
|
4
4
|
|
|
5
|
+
use Fleetbase\Attributes\SkipAuthorizationCheck;
|
|
5
6
|
use Fleetbase\FleetOps\Exports\ContactExport;
|
|
6
7
|
use Fleetbase\FleetOps\Http\Controllers\FleetOpsController;
|
|
7
8
|
use Fleetbase\FleetOps\Http\Resources\v1\Vendor as VendorResource;
|
|
@@ -26,6 +27,15 @@ use Maatwebsite\Excel\Facades\Excel;
|
|
|
26
27
|
|
|
27
28
|
class ContactController extends FleetOpsController
|
|
28
29
|
{
|
|
30
|
+
/**
|
|
31
|
+
* Permissions for methods AuthorizationGuard cannot map to a schema action (see FleetOpsController).
|
|
32
|
+
*
|
|
33
|
+
* @var array<string, string|string[]>
|
|
34
|
+
*/
|
|
35
|
+
protected array $methodPermissions = [
|
|
36
|
+
'convertToVendor' => 'create vendor',
|
|
37
|
+
];
|
|
38
|
+
|
|
29
39
|
/**
|
|
30
40
|
* The resource to query.
|
|
31
41
|
*
|
|
@@ -108,6 +118,7 @@ class ContactController extends FleetOpsController
|
|
|
108
118
|
]);
|
|
109
119
|
}
|
|
110
120
|
|
|
121
|
+
#[SkipAuthorizationCheck]
|
|
111
122
|
public function convertToVendor(Request $request, string $id)
|
|
112
123
|
{
|
|
113
124
|
$contact = $this->contactForVendorConversion($id);
|
|
@@ -5,6 +5,7 @@ namespace Fleetbase\FleetOps\Http\Controllers\Internal\v1;
|
|
|
5
5
|
use Fleetbase\FleetOps\Mail\CustomerCredentialsMail;
|
|
6
6
|
use Fleetbase\FleetOps\Models\Contact;
|
|
7
7
|
use Fleetbase\FleetOps\Support\ProfileAccountManager;
|
|
8
|
+
use Fleetbase\FleetOps\Traits\AuthorizesMethods;
|
|
8
9
|
use Fleetbase\Http\Controllers\Controller;
|
|
9
10
|
use Fleetbase\Models\User;
|
|
10
11
|
use Illuminate\Http\Request;
|
|
@@ -13,6 +14,19 @@ use Illuminate\Support\Str;
|
|
|
13
14
|
|
|
14
15
|
class CustomerController extends Controller
|
|
15
16
|
{
|
|
17
|
+
use AuthorizesMethods;
|
|
18
|
+
|
|
19
|
+
public function __construct()
|
|
20
|
+
{
|
|
21
|
+
$this->authorizeMethods([
|
|
22
|
+
'createPortalLogin' => 'reset-credentials-for customer',
|
|
23
|
+
'sendCredentials' => 'reset-credentials-for customer',
|
|
24
|
+
'deactivatePortalLogin' => 'reset-credentials-for customer',
|
|
25
|
+
'reactivatePortalLogin' => 'reset-credentials-for customer',
|
|
26
|
+
'resetCredentials' => 'reset-credentials-for customer',
|
|
27
|
+
]);
|
|
28
|
+
}
|
|
29
|
+
|
|
16
30
|
public function createPortalLogin(Request $request)
|
|
17
31
|
{
|
|
18
32
|
$customer = $this->resolveCustomer($request);
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
namespace Fleetbase\FleetOps\Http\Controllers\Internal\v1;
|
|
4
4
|
|
|
5
|
+
use Fleetbase\Attributes\SkipAuthorizationCheck;
|
|
5
6
|
use Fleetbase\FleetOps\Exceptions\DeviceAlreadyAttachedException;
|
|
6
7
|
use Fleetbase\FleetOps\Exports\DeviceExport;
|
|
7
8
|
use Fleetbase\FleetOps\Http\Controllers\FleetOpsController;
|
|
@@ -17,6 +18,16 @@ use Maatwebsite\Excel\Facades\Excel;
|
|
|
17
18
|
|
|
18
19
|
class DeviceController extends FleetOpsController
|
|
19
20
|
{
|
|
21
|
+
/**
|
|
22
|
+
* Permissions for methods AuthorizationGuard cannot map to a schema action (see FleetOpsController).
|
|
23
|
+
*
|
|
24
|
+
* @var array<string, string|string[]>
|
|
25
|
+
*/
|
|
26
|
+
protected array $methodPermissions = [
|
|
27
|
+
'attach' => 'update device',
|
|
28
|
+
'detach' => 'update device',
|
|
29
|
+
];
|
|
30
|
+
|
|
20
31
|
/**
|
|
21
32
|
* The resource to query.
|
|
22
33
|
*
|
|
@@ -110,6 +121,7 @@ class DeviceController extends FleetOpsController
|
|
|
110
121
|
/**
|
|
111
122
|
* Attach a device to a supported FleetOps resource.
|
|
112
123
|
*/
|
|
124
|
+
#[SkipAuthorizationCheck]
|
|
113
125
|
public function attach(Request $request, string $id): JsonResponse
|
|
114
126
|
{
|
|
115
127
|
$request->validate([
|
|
@@ -152,6 +164,7 @@ class DeviceController extends FleetOpsController
|
|
|
152
164
|
/**
|
|
153
165
|
* Detach a device from its current FleetOps resource.
|
|
154
166
|
*/
|
|
167
|
+
#[SkipAuthorizationCheck]
|
|
155
168
|
public function detach(string $id): JsonResponse
|
|
156
169
|
{
|
|
157
170
|
$device = $this->resolveDevice($id);
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
namespace Fleetbase\FleetOps\Http\Controllers\Internal\v1;
|
|
4
4
|
|
|
5
|
+
use Fleetbase\Attributes\SkipAuthorizationCheck;
|
|
5
6
|
use Fleetbase\FleetOps\Http\Controllers\FleetOpsController;
|
|
6
7
|
use Fleetbase\FleetOps\Models\DeviceEvent;
|
|
7
8
|
use Fleetbase\FleetOps\Support\Utils;
|
|
@@ -9,6 +10,15 @@ use Illuminate\Http\JsonResponse;
|
|
|
9
10
|
|
|
10
11
|
class DeviceEventController extends FleetOpsController
|
|
11
12
|
{
|
|
13
|
+
/**
|
|
14
|
+
* Permissions for methods AuthorizationGuard cannot map to a schema action (see FleetOpsController).
|
|
15
|
+
*
|
|
16
|
+
* @var array<string, string|string[]>
|
|
17
|
+
*/
|
|
18
|
+
protected array $methodPermissions = [
|
|
19
|
+
'markProcessed' => 'update device-event',
|
|
20
|
+
];
|
|
21
|
+
|
|
12
22
|
/**
|
|
13
23
|
* The resource to query.
|
|
14
24
|
*
|
|
@@ -51,6 +61,7 @@ class DeviceEventController extends FleetOpsController
|
|
|
51
61
|
}
|
|
52
62
|
}
|
|
53
63
|
|
|
64
|
+
#[SkipAuthorizationCheck]
|
|
54
65
|
public function markProcessed(string $id): JsonResponse
|
|
55
66
|
{
|
|
56
67
|
$deviceEvent = DeviceEvent::where('company_uuid', session('company'))
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
namespace Fleetbase\FleetOps\Http\Controllers\Internal\v1;
|
|
4
4
|
|
|
5
|
+
use Fleetbase\Attributes\SkipAuthorizationCheck;
|
|
5
6
|
use Fleetbase\Exceptions\FleetbaseRequestValidationException;
|
|
6
7
|
use Fleetbase\FleetOps\Exceptions\ProfileIdentityConflictException;
|
|
7
8
|
use Fleetbase\FleetOps\Exports\DriverExport;
|
|
@@ -33,6 +34,20 @@ use Maatwebsite\Excel\Facades\Excel;
|
|
|
33
34
|
class DriverController extends FleetOpsController
|
|
34
35
|
{
|
|
35
36
|
use Traits\DriverSchedulingTrait;
|
|
37
|
+
/**
|
|
38
|
+
* Permissions for methods AuthorizationGuard cannot map to a schema action (see FleetOpsController).
|
|
39
|
+
*
|
|
40
|
+
* @var array<string, string|string[]>
|
|
41
|
+
*/
|
|
42
|
+
protected array $methodPermissions = [
|
|
43
|
+
'sendCredentials' => 'update-user-for driver',
|
|
44
|
+
'resetCredentials' => 'update-user-for driver',
|
|
45
|
+
'deactivateLogin' => 'update-user-for driver',
|
|
46
|
+
'reactivateLogin' => 'update-user-for driver',
|
|
47
|
+
'unassignOrders' => 'assign-order-for driver',
|
|
48
|
+
'unassignOrder' => 'assign-order-for driver',
|
|
49
|
+
'unassignVehicle' => 'assign-vehicle-for driver',
|
|
50
|
+
];
|
|
36
51
|
/**
|
|
37
52
|
* The resource to query.
|
|
38
53
|
*
|
|
@@ -200,6 +215,7 @@ class DriverController extends FleetOpsController
|
|
|
200
215
|
*
|
|
201
216
|
* @return JsonResponse
|
|
202
217
|
*/
|
|
218
|
+
#[SkipAuthorizationCheck]
|
|
203
219
|
public function sendCredentials(string $id)
|
|
204
220
|
{
|
|
205
221
|
[$driver, $user, $error] = $this->resolveDriverLogin($id);
|
|
@@ -221,6 +237,7 @@ class DriverController extends FleetOpsController
|
|
|
221
237
|
*
|
|
222
238
|
* @return JsonResponse
|
|
223
239
|
*/
|
|
240
|
+
#[SkipAuthorizationCheck]
|
|
224
241
|
public function resetCredentials(Request $request, string $id)
|
|
225
242
|
{
|
|
226
243
|
$password = $request->input('password');
|
|
@@ -255,6 +272,7 @@ class DriverController extends FleetOpsController
|
|
|
255
272
|
*
|
|
256
273
|
* @return JsonResponse
|
|
257
274
|
*/
|
|
275
|
+
#[SkipAuthorizationCheck]
|
|
258
276
|
public function deactivateLogin(string $id)
|
|
259
277
|
{
|
|
260
278
|
[$driver, $user, $error] = $this->resolveDriverLogin($id);
|
|
@@ -275,6 +293,7 @@ class DriverController extends FleetOpsController
|
|
|
275
293
|
*
|
|
276
294
|
* @return JsonResponse
|
|
277
295
|
*/
|
|
296
|
+
#[SkipAuthorizationCheck]
|
|
278
297
|
public function reactivateLogin(string $id)
|
|
279
298
|
{
|
|
280
299
|
[$driver, $user, $error] = $this->resolveDriverLogin($id);
|
|
@@ -430,6 +449,7 @@ class DriverController extends FleetOpsController
|
|
|
430
449
|
]);
|
|
431
450
|
}
|
|
432
451
|
|
|
452
|
+
#[SkipAuthorizationCheck]
|
|
433
453
|
public function unassignOrders(Request $request, string $id): JsonResponse
|
|
434
454
|
{
|
|
435
455
|
$request->validate([
|
|
@@ -462,6 +482,7 @@ class DriverController extends FleetOpsController
|
|
|
462
482
|
]);
|
|
463
483
|
}
|
|
464
484
|
|
|
485
|
+
#[SkipAuthorizationCheck]
|
|
465
486
|
public function unassignOrder(string $id): JsonResponse
|
|
466
487
|
{
|
|
467
488
|
$driver = $this->findDriver($id);
|
|
@@ -498,6 +519,7 @@ class DriverController extends FleetOpsController
|
|
|
498
519
|
]);
|
|
499
520
|
}
|
|
500
521
|
|
|
522
|
+
#[SkipAuthorizationCheck]
|
|
501
523
|
public function unassignVehicle(string $id): JsonResponse
|
|
502
524
|
{
|
|
503
525
|
$driver = $this->findDriver($id);
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
namespace Fleetbase\FleetOps\Http\Controllers\Internal\v1;
|
|
4
4
|
|
|
5
|
+
use Fleetbase\Attributes\SkipAuthorizationCheck;
|
|
5
6
|
use Fleetbase\FleetOps\Http\Controllers\FleetOpsController;
|
|
6
7
|
use Fleetbase\FleetOps\Jobs\SyncFuelProviderTransactionsJob;
|
|
7
8
|
use Fleetbase\FleetOps\Models\FuelProviderConnection;
|
|
@@ -13,6 +14,16 @@ use Illuminate\Validation\ValidationException;
|
|
|
13
14
|
|
|
14
15
|
class FuelProviderConnectionController extends FleetOpsController
|
|
15
16
|
{
|
|
17
|
+
/**
|
|
18
|
+
* Permissions for methods AuthorizationGuard cannot map to a schema action (see FleetOpsController).
|
|
19
|
+
*
|
|
20
|
+
* @var array<string, string|string[]>
|
|
21
|
+
*/
|
|
22
|
+
protected array $methodPermissions = [
|
|
23
|
+
'testCredentials' => 'create fuel-provider-connection',
|
|
24
|
+
'testConnection' => 'update fuel-provider-connection',
|
|
25
|
+
];
|
|
26
|
+
|
|
16
27
|
public $resource = 'fuel_provider_connection';
|
|
17
28
|
|
|
18
29
|
public function __construct(protected FuelProviderService $fuelProviderService)
|
|
@@ -38,6 +49,7 @@ class FuelProviderConnectionController extends FleetOpsController
|
|
|
38
49
|
$this->normalizeConnectionInput($input, $connection);
|
|
39
50
|
}
|
|
40
51
|
|
|
52
|
+
#[SkipAuthorizationCheck]
|
|
41
53
|
public function testCredentials(Request $request, string $provider): JsonResponse
|
|
42
54
|
{
|
|
43
55
|
$request->validate([
|
|
@@ -54,6 +66,7 @@ class FuelProviderConnectionController extends FleetOpsController
|
|
|
54
66
|
return response()->json($result, data_get($result, 'success') ? 200 : 422);
|
|
55
67
|
}
|
|
56
68
|
|
|
69
|
+
#[SkipAuthorizationCheck]
|
|
57
70
|
public function testConnection(Request $request, string $id): JsonResponse
|
|
58
71
|
{
|
|
59
72
|
$connection = $this->findConnection($id);
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
namespace Fleetbase\FleetOps\Http\Controllers\Internal\v1;
|
|
4
4
|
|
|
5
|
+
use Fleetbase\Attributes\SkipAuthorizationCheck;
|
|
5
6
|
use Fleetbase\FleetOps\Http\Controllers\FleetOpsController;
|
|
6
7
|
use Fleetbase\FleetOps\Models\FuelProviderTransaction;
|
|
7
8
|
use Fleetbase\FleetOps\Support\FuelProviders\FuelProviderService;
|
|
@@ -10,6 +11,17 @@ use Illuminate\Http\Request;
|
|
|
10
11
|
|
|
11
12
|
class FuelProviderTransactionController extends FleetOpsController
|
|
12
13
|
{
|
|
14
|
+
/**
|
|
15
|
+
* Permissions for methods AuthorizationGuard cannot map to a schema action (see FleetOpsController).
|
|
16
|
+
*
|
|
17
|
+
* @var array<string, string|string[]>
|
|
18
|
+
*/
|
|
19
|
+
protected array $methodPermissions = [
|
|
20
|
+
'matchVehicle' => 'update fuel-provider-transaction',
|
|
21
|
+
'matchOrder' => 'update fuel-provider-transaction',
|
|
22
|
+
'reprocess' => 'update fuel-provider-transaction',
|
|
23
|
+
];
|
|
24
|
+
|
|
13
25
|
public $resource = 'fuel_provider_transaction';
|
|
14
26
|
|
|
15
27
|
public function __construct(protected FuelProviderService $fuelProviderService)
|
|
@@ -22,6 +34,7 @@ class FuelProviderTransactionController extends FleetOpsController
|
|
|
22
34
|
$query->with(['vehicle', 'driver', 'fuelReport']);
|
|
23
35
|
}
|
|
24
36
|
|
|
37
|
+
#[SkipAuthorizationCheck]
|
|
25
38
|
public function matchVehicle(Request $request, string $id): JsonResponse
|
|
26
39
|
{
|
|
27
40
|
$request->validate(['vehicle' => 'required|string']);
|
|
@@ -33,6 +46,7 @@ class FuelProviderTransactionController extends FleetOpsController
|
|
|
33
46
|
]);
|
|
34
47
|
}
|
|
35
48
|
|
|
49
|
+
#[SkipAuthorizationCheck]
|
|
36
50
|
public function matchOrder(Request $request, string $id): JsonResponse
|
|
37
51
|
{
|
|
38
52
|
$request->validate(['order' => 'required|string']);
|
|
@@ -44,6 +58,7 @@ class FuelProviderTransactionController extends FleetOpsController
|
|
|
44
58
|
]);
|
|
45
59
|
}
|
|
46
60
|
|
|
61
|
+
#[SkipAuthorizationCheck]
|
|
47
62
|
public function reprocess(Request $request, string $id): JsonResponse
|
|
48
63
|
{
|
|
49
64
|
$transaction = $this->findTransaction($id);
|
|
@@ -9,6 +9,7 @@ use Fleetbase\FleetOps\Models\FuelReport;
|
|
|
9
9
|
use Fleetbase\Http\Requests\ExportRequest;
|
|
10
10
|
use Fleetbase\Http\Requests\ImportRequest;
|
|
11
11
|
use Illuminate\Http\Request;
|
|
12
|
+
use Illuminate\Support\Arr;
|
|
12
13
|
use Illuminate\Support\Str;
|
|
13
14
|
use Maatwebsite\Excel\Facades\Excel;
|
|
14
15
|
|
|
@@ -23,11 +24,16 @@ class FuelReportController extends FleetOpsController
|
|
|
23
24
|
|
|
24
25
|
/**
|
|
25
26
|
* Handle post save transactions.
|
|
27
|
+
*
|
|
28
|
+
* Reads the custom field values from the payload the base controller already extracted
|
|
29
|
+
* rather than from the raw request: Ember Data sends the resource under a camelCase root
|
|
30
|
+
* (`fuelReport`), so `$request->array('fuel_report.custom_field_values')` was always empty and no
|
|
31
|
+
* custom field value was ever persisted for this resource.
|
|
26
32
|
*/
|
|
27
|
-
public function afterSave(Request $request, FuelReport $fuelReport)
|
|
33
|
+
public function afterSave(Request $request, FuelReport $fuelReport, array $input = [])
|
|
28
34
|
{
|
|
29
|
-
$customFieldValues = $
|
|
30
|
-
if ($customFieldValues) {
|
|
35
|
+
$customFieldValues = Arr::get($input, 'custom_field_values');
|
|
36
|
+
if (is_array($customFieldValues) && $customFieldValues) {
|
|
31
37
|
$fuelReport->syncCustomFieldValues($customFieldValues);
|
|
32
38
|
}
|
|
33
39
|
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
namespace Fleetbase\FleetOps\Http\Controllers\Internal\v1;
|
|
4
4
|
|
|
5
|
+
use Fleetbase\Attributes\SkipAuthorizationCheck;
|
|
5
6
|
use Fleetbase\FleetOps\Http\Controllers\FleetOpsController;
|
|
6
7
|
use Fleetbase\FleetOps\Http\Resources\v1\InspectionLink as InspectionLinkResource;
|
|
7
8
|
use Fleetbase\FleetOps\Models\Driver;
|
|
@@ -16,6 +17,17 @@ use Illuminate\Http\Request;
|
|
|
16
17
|
|
|
17
18
|
class InspectionFormController extends FleetOpsController
|
|
18
19
|
{
|
|
20
|
+
/**
|
|
21
|
+
* Permissions for methods AuthorizationGuard cannot map to a schema action (see FleetOpsController).
|
|
22
|
+
*
|
|
23
|
+
* @var array<string, string|string[]>
|
|
24
|
+
*/
|
|
25
|
+
protected array $methodPermissions = [
|
|
26
|
+
'generateLink' => 'publish inspection-form',
|
|
27
|
+
'revokeLink' => 'publish inspection-form',
|
|
28
|
+
'sendPin' => 'publish inspection-form',
|
|
29
|
+
];
|
|
30
|
+
|
|
19
31
|
/**
|
|
20
32
|
* The resource to query.
|
|
21
33
|
*
|
|
@@ -107,6 +119,7 @@ class InspectionFormController extends FleetOpsController
|
|
|
107
119
|
]);
|
|
108
120
|
}
|
|
109
121
|
|
|
122
|
+
#[SkipAuthorizationCheck]
|
|
110
123
|
public function generateLink(Request $request, string $id): JsonResponse
|
|
111
124
|
{
|
|
112
125
|
$form = $this->resolveForm($id)
|
|
@@ -215,6 +228,7 @@ class InspectionFormController extends FleetOpsController
|
|
|
215
228
|
}
|
|
216
229
|
|
|
217
230
|
/** Take a link out of use, leaving the record of it in the list. */
|
|
231
|
+
#[SkipAuthorizationCheck]
|
|
218
232
|
public function revokeLink(Request $request, string $id, string $linkId): JsonResponse
|
|
219
233
|
{
|
|
220
234
|
$form = $this->resolveForm($id)->firstOrFail();
|
|
@@ -243,6 +257,7 @@ class InspectionFormController extends FleetOpsController
|
|
|
243
257
|
* A failed delivery answers 200 with `pin_delivery.sent` false and why, so
|
|
244
258
|
* the console shows it as a warning rather than an error.
|
|
245
259
|
*/
|
|
260
|
+
#[SkipAuthorizationCheck]
|
|
246
261
|
public function sendPin(Request $request, string $id, string $linkId): JsonResponse
|
|
247
262
|
{
|
|
248
263
|
$form = $this->resolveForm($id)->firstOrFail();
|
|
@@ -18,6 +18,7 @@ use Fleetbase\FleetOps\Models\Vehicle;
|
|
|
18
18
|
use Fleetbase\FleetOps\Support\LiveCacheService;
|
|
19
19
|
use Fleetbase\FleetOps\Support\LiveOrderQuery;
|
|
20
20
|
use Fleetbase\FleetOps\Support\Utils;
|
|
21
|
+
use Fleetbase\FleetOps\Traits\AuthorizesMethods;
|
|
21
22
|
use Fleetbase\Http\Controllers\Controller;
|
|
22
23
|
use Illuminate\Http\Request;
|
|
23
24
|
|
|
@@ -26,6 +27,21 @@ use Illuminate\Http\Request;
|
|
|
26
27
|
*/
|
|
27
28
|
class LiveController extends Controller
|
|
28
29
|
{
|
|
30
|
+
use AuthorizesMethods;
|
|
31
|
+
|
|
32
|
+
public function __construct()
|
|
33
|
+
{
|
|
34
|
+
$this->authorizeMethods([
|
|
35
|
+
'coordinates' => 'list order',
|
|
36
|
+
'routes' => 'list order',
|
|
37
|
+
'orders' => 'list order',
|
|
38
|
+
'drivers' => 'list driver',
|
|
39
|
+
'vehicles' => 'list vehicle',
|
|
40
|
+
'operationsMonitor' => 'list order',
|
|
41
|
+
'places' => 'list place',
|
|
42
|
+
]);
|
|
43
|
+
}
|
|
44
|
+
|
|
29
45
|
protected const DEFAULT_VIEWPORT_LIMIT = 500;
|
|
30
46
|
protected const MAX_VIEWPORT_LIMIT = 1000;
|
|
31
47
|
protected const VIEWPORT_BOUNDS_PRECISION = 4;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
namespace Fleetbase\FleetOps\Http\Controllers\Internal\v1;
|
|
4
4
|
|
|
5
|
+
use Fleetbase\Attributes\SkipAuthorizationCheck;
|
|
5
6
|
use Fleetbase\FleetOps\Exports\MaintenanceExport;
|
|
6
7
|
use Fleetbase\FleetOps\Http\Controllers\FleetOpsController;
|
|
7
8
|
use Fleetbase\FleetOps\Imports\MaintenanceImport;
|
|
@@ -15,6 +16,17 @@ use Maatwebsite\Excel\Facades\Excel;
|
|
|
15
16
|
|
|
16
17
|
class MaintenanceController extends FleetOpsController
|
|
17
18
|
{
|
|
19
|
+
/**
|
|
20
|
+
* Permissions for methods AuthorizationGuard cannot map to a schema action (see FleetOpsController).
|
|
21
|
+
*
|
|
22
|
+
* @var array<string, string|string[]>
|
|
23
|
+
*/
|
|
24
|
+
protected array $methodPermissions = [
|
|
25
|
+
'addLineItem' => 'update maintenance',
|
|
26
|
+
'updateLineItem' => 'update maintenance',
|
|
27
|
+
'removeLineItem' => 'update maintenance',
|
|
28
|
+
];
|
|
29
|
+
|
|
18
30
|
/**
|
|
19
31
|
* The resource to query.
|
|
20
32
|
*
|
|
@@ -67,6 +79,7 @@ class MaintenanceController extends FleetOpsController
|
|
|
67
79
|
* Add a cost line item to a maintenance record.
|
|
68
80
|
* POST /maintenances/{id}/line-items.
|
|
69
81
|
*/
|
|
82
|
+
#[SkipAuthorizationCheck]
|
|
70
83
|
public function addLineItem(string $id, Request $request): JsonResponse
|
|
71
84
|
{
|
|
72
85
|
$maintenance = $this->findMaintenanceForLineItem($id);
|
|
@@ -89,6 +102,7 @@ class MaintenanceController extends FleetOpsController
|
|
|
89
102
|
* Update a cost line item on a maintenance record.
|
|
90
103
|
* PUT /maintenances/{id}/line-items/{index}.
|
|
91
104
|
*/
|
|
105
|
+
#[SkipAuthorizationCheck]
|
|
92
106
|
public function updateLineItem(string $id, int $index, Request $request): JsonResponse
|
|
93
107
|
{
|
|
94
108
|
$maintenance = $this->findMaintenanceForLineItem($id);
|
|
@@ -121,6 +135,7 @@ class MaintenanceController extends FleetOpsController
|
|
|
121
135
|
* Remove a cost line item from a maintenance record.
|
|
122
136
|
* DELETE /maintenances/{id}/line-items/{index}.
|
|
123
137
|
*/
|
|
138
|
+
#[SkipAuthorizationCheck]
|
|
124
139
|
public function removeLineItem(string $id, int $index): JsonResponse
|
|
125
140
|
{
|
|
126
141
|
$maintenance = $this->findMaintenanceForLineItem($id);
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
namespace Fleetbase\FleetOps\Http\Controllers\Internal\v1;
|
|
4
4
|
|
|
5
|
+
use Fleetbase\Attributes\SkipAuthorizationCheck;
|
|
5
6
|
use Fleetbase\FleetOps\Exports\MaintenanceScheduleExport;
|
|
6
7
|
use Fleetbase\FleetOps\Http\Controllers\FleetOpsController;
|
|
7
8
|
use Fleetbase\FleetOps\Imports\MaintenanceScheduleImport;
|
|
@@ -22,6 +23,17 @@ use Spatie\IcalendarGenerator\ValueObjects\RRule;
|
|
|
22
23
|
|
|
23
24
|
class MaintenanceScheduleController extends FleetOpsController
|
|
24
25
|
{
|
|
26
|
+
/**
|
|
27
|
+
* Permissions for methods AuthorizationGuard cannot map to a schema action (see FleetOpsController).
|
|
28
|
+
*
|
|
29
|
+
* @var array<string, string|string[]>
|
|
30
|
+
*/
|
|
31
|
+
protected array $methodPermissions = [
|
|
32
|
+
'pause' => 'update maintenance-schedule',
|
|
33
|
+
'resume' => 'update maintenance-schedule',
|
|
34
|
+
'trigger' => 'update maintenance-schedule',
|
|
35
|
+
];
|
|
36
|
+
|
|
25
37
|
/**
|
|
26
38
|
* The resource to query.
|
|
27
39
|
*
|
|
@@ -71,6 +83,7 @@ class MaintenanceScheduleController extends FleetOpsController
|
|
|
71
83
|
* Pause a maintenance schedule.
|
|
72
84
|
* POST /maintenance-schedules/{id}/pause.
|
|
73
85
|
*/
|
|
86
|
+
#[SkipAuthorizationCheck]
|
|
74
87
|
public function pause(string $id): JsonResponse
|
|
75
88
|
{
|
|
76
89
|
$schedule = $this->findSchedule($id);
|
|
@@ -88,6 +101,7 @@ class MaintenanceScheduleController extends FleetOpsController
|
|
|
88
101
|
* Resume a paused maintenance schedule.
|
|
89
102
|
* POST /maintenance-schedules/{id}/resume.
|
|
90
103
|
*/
|
|
104
|
+
#[SkipAuthorizationCheck]
|
|
91
105
|
public function resume(string $id): JsonResponse
|
|
92
106
|
{
|
|
93
107
|
$schedule = $this->findSchedule($id);
|
|
@@ -105,6 +119,7 @@ class MaintenanceScheduleController extends FleetOpsController
|
|
|
105
119
|
* Manually trigger a work order from a schedule.
|
|
106
120
|
* POST /maintenance-schedules/{id}/trigger.
|
|
107
121
|
*/
|
|
122
|
+
#[SkipAuthorizationCheck]
|
|
108
123
|
public function trigger(string $id, Request $request): JsonResponse
|
|
109
124
|
{
|
|
110
125
|
$schedule = $this->findSchedule($id);
|
|
@@ -4,6 +4,7 @@ namespace Fleetbase\FleetOps\Http\Controllers\Internal\v1;
|
|
|
4
4
|
|
|
5
5
|
use Fleetbase\FleetOps\Models\Manifest;
|
|
6
6
|
use Fleetbase\FleetOps\Models\ManifestStop;
|
|
7
|
+
use Fleetbase\FleetOps\Traits\AuthorizesMethods;
|
|
7
8
|
use Fleetbase\Http\Controllers\Controller;
|
|
8
9
|
use Illuminate\Http\JsonResponse;
|
|
9
10
|
use Illuminate\Http\Request;
|
|
@@ -23,6 +24,20 @@ use Illuminate\Http\Request;
|
|
|
23
24
|
*/
|
|
24
25
|
class ManifestController extends Controller
|
|
25
26
|
{
|
|
27
|
+
use AuthorizesMethods;
|
|
28
|
+
|
|
29
|
+
public function __construct()
|
|
30
|
+
{
|
|
31
|
+
$this->authorizeMethods([
|
|
32
|
+
'index' => 'list order',
|
|
33
|
+
'show' => 'view order',
|
|
34
|
+
'cancel' => 'cancel order',
|
|
35
|
+
'destroy' => 'delete order',
|
|
36
|
+
'showStop' => 'view order',
|
|
37
|
+
'updateStop' => 'update order',
|
|
38
|
+
]);
|
|
39
|
+
}
|
|
40
|
+
|
|
26
41
|
/**
|
|
27
42
|
* List manifests for the current company.
|
|
28
43
|
* Supports filtering by status, driver_id, vehicle_id, and scheduled_date.
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
namespace Fleetbase\FleetOps\Http\Controllers\Internal\v1;
|
|
4
4
|
|
|
5
|
+
use Fleetbase\FleetOps\Support\Authorization;
|
|
5
6
|
use Fleetbase\FleetOps\Support\Metrics;
|
|
6
7
|
use Fleetbase\FleetOps\Support\Metrics\Registry;
|
|
7
8
|
use Fleetbase\Http\Controllers\Controller;
|
|
@@ -10,6 +11,16 @@ use Illuminate\Support\Carbon;
|
|
|
10
11
|
|
|
11
12
|
class MetricsController extends Controller
|
|
12
13
|
{
|
|
14
|
+
public function __construct()
|
|
15
|
+
{
|
|
16
|
+
// Not a resource controller, so AuthorizationGuard cannot resolve a permission for it.
|
|
17
|
+
$this->middleware(function ($request, $next) {
|
|
18
|
+
Authorization::authorize('view analytics');
|
|
19
|
+
|
|
20
|
+
return $next($request);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
|
|
13
24
|
/**
|
|
14
25
|
* Legacy bulk endpoint. Returns a flat map of slug → scalar value for the
|
|
15
26
|
* requested period. Preserved for backward compat; the dashboard widgets
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
namespace Fleetbase\FleetOps\Http\Controllers\Internal\v1;
|
|
4
4
|
|
|
5
5
|
use Fleetbase\FleetOps\Support\Utils;
|
|
6
|
+
use Fleetbase\FleetOps\Traits\AuthorizesMethods;
|
|
6
7
|
use Fleetbase\Http\Controllers\Controller;
|
|
7
8
|
use Fleetbase\Http\Resources\Organization;
|
|
8
9
|
use Fleetbase\Models\ApiCredential;
|
|
@@ -15,6 +16,19 @@ use Illuminate\Support\Str;
|
|
|
15
16
|
|
|
16
17
|
class NavigatorController extends Controller
|
|
17
18
|
{
|
|
19
|
+
use AuthorizesMethods;
|
|
20
|
+
/**
|
|
21
|
+
* How long a Navigator link issued from the console stays valid.
|
|
22
|
+
*/
|
|
23
|
+
public const LINK_TTL_MINUTES = 30;
|
|
24
|
+
|
|
25
|
+
public function __construct()
|
|
26
|
+
{
|
|
27
|
+
$this->authorizeMethods([
|
|
28
|
+
'getLinkAppUrl' => 'admin',
|
|
29
|
+
]);
|
|
30
|
+
}
|
|
31
|
+
|
|
18
32
|
/**
|
|
19
33
|
* Redirects to the Fleetbase Navigator app using a deep link.
|
|
20
34
|
* Automatically detects the platform (iOS or Android) and uses the correct URI scheme.
|
|
@@ -23,6 +37,12 @@ class NavigatorController extends Controller
|
|
|
23
37
|
*/
|
|
24
38
|
public function linkApp(Request $request)
|
|
25
39
|
{
|
|
40
|
+
// This route is opened from a phone without a console session, so it is
|
|
41
|
+
// authorised by the short-lived signature issued by getLinkAppUrl().
|
|
42
|
+
if (!$this->hasValidLinkSignature($request)) {
|
|
43
|
+
return response()->error('This Navigator link is invalid or has expired. Generate a new one from the console.', 403);
|
|
44
|
+
}
|
|
45
|
+
|
|
26
46
|
$adminUser = $this->findAdminUser();
|
|
27
47
|
|
|
28
48
|
if (!$adminUser || !$adminUser->company) {
|
|
@@ -67,8 +87,13 @@ class NavigatorController extends Controller
|
|
|
67
87
|
*/
|
|
68
88
|
public function getLinkAppUrl()
|
|
69
89
|
{
|
|
90
|
+
$expires = now()->addMinutes(static::LINK_TTL_MINUTES)->getTimestamp();
|
|
91
|
+
|
|
70
92
|
return response()->json([
|
|
71
|
-
'linkUrl' => url('int/v1/fleet-ops/navigator/link-app')
|
|
93
|
+
'linkUrl' => url('int/v1/fleet-ops/navigator/link-app') . '?' . http_build_query([
|
|
94
|
+
'expires' => $expires,
|
|
95
|
+
'signature' => static::linkSignature($expires),
|
|
96
|
+
]),
|
|
72
97
|
]);
|
|
73
98
|
}
|
|
74
99
|
|
|
@@ -189,4 +214,20 @@ class NavigatorController extends Controller
|
|
|
189
214
|
{
|
|
190
215
|
return Setting::where('key', 'fleet-ops.driver-onboard')->value('value');
|
|
191
216
|
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* HMAC signature for a Navigator link expiring at the given unix timestamp.
|
|
220
|
+
*/
|
|
221
|
+
public static function linkSignature(int $expires): string
|
|
222
|
+
{
|
|
223
|
+
return hash_hmac('sha256', 'fleet-ops.navigator.link-app|' . $expires, (string) config('app.key'));
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
protected function hasValidLinkSignature(Request $request): bool
|
|
227
|
+
{
|
|
228
|
+
$expires = (int) $request->query('expires');
|
|
229
|
+
$signature = (string) $request->query('signature');
|
|
230
|
+
|
|
231
|
+
return $signature !== '' && $expires >= time() && hash_equals(static::linkSignature($expires), $signature);
|
|
232
|
+
}
|
|
192
233
|
}
|
|
@@ -16,6 +16,7 @@ use Fleetbase\FleetOps\Models\Vendor;
|
|
|
16
16
|
use Fleetbase\FleetOps\Orchestration\Engines\DriverAssignmentEngine;
|
|
17
17
|
use Fleetbase\FleetOps\Orchestration\Engines\RouteSequencingEngine;
|
|
18
18
|
use Fleetbase\FleetOps\Orchestration\OrchestrationEngineRegistry;
|
|
19
|
+
use Fleetbase\FleetOps\Traits\AuthorizesMethods;
|
|
19
20
|
use Fleetbase\Http\Controllers\Controller;
|
|
20
21
|
use Fleetbase\Models\Setting;
|
|
21
22
|
use Illuminate\Http\JsonResponse;
|
|
@@ -39,8 +40,19 @@ use Illuminate\Support\Str;
|
|
|
39
40
|
*/
|
|
40
41
|
class OrchestrationController extends Controller
|
|
41
42
|
{
|
|
43
|
+
use AuthorizesMethods;
|
|
44
|
+
|
|
42
45
|
public function __construct(protected OrchestrationEngineRegistry $registry)
|
|
43
46
|
{
|
|
47
|
+
$this->authorizeMethods([
|
|
48
|
+
'orders' => 'list order',
|
|
49
|
+
'run' => 'optimize order',
|
|
50
|
+
'preview' => 'list order',
|
|
51
|
+
'commit' => 'assign-driver-for order',
|
|
52
|
+
'engines' => 'list order',
|
|
53
|
+
'orderConfigFields' => 'list order',
|
|
54
|
+
'importOrders' => 'import order',
|
|
55
|
+
]);
|
|
44
56
|
}
|
|
45
57
|
|
|
46
58
|
/**
|