Дашборд, зоны, устройства, правила автоматизации и профиль теперь Vue 3 + Inertia вместо Blade+Alpine — гостевые страницы Breeze (логин/регистрация) сознательно оставлены на Blade, чтобы не трогать уже протестированную аутентификацию. Контроллеры возвращают Inertia::render() вместо view(), переиспользуют существующие API Resources и FormRequest. Ключевой нюанс: Resource/ResourceCollection, переданные напрямую в проп Inertia, заворачиваются в ключ "data" (Inertia вызывает toResponse() у Responsable-объектов) — везде используется ->resolve() и явное резолвление вложенных ресурсов (zone/device_type внутри Device и т.п.), иначе вложенные поля тоже задваивались бы обёрткой. Alpine.js и все Blade-вьюхи защищённой части удалены как мёртвый код. Тесты (ZoneControllerTest/DeviceControllerTest) переведены на assertInertia(). UserFactory теперь явно задаёт role=owner — без этого Eloquent не подтягивает DB-default обратно в модель после create(), что уронило бы общий auth.user проп на любой странице.
45 lines
1.5 KiB
JavaScript
45 lines
1.5 KiB
JavaScript
// Single source of truth for the app's URLs on the JS side — mirrors
|
|
// routes/web.php. The route list here is small and stable enough that a
|
|
// full Ziggy (route-name-to-JS) integration would be more machinery than
|
|
// the app needs; if the route count grows a lot, revisit that.
|
|
export const routes = {
|
|
dashboard: '/dashboard',
|
|
zones: {
|
|
index: '/zones',
|
|
create: '/zones/create',
|
|
store: '/zones',
|
|
edit: (id) => `/zones/${id}/edit`,
|
|
update: (id) => `/zones/${id}`,
|
|
destroy: (id) => `/zones/${id}`,
|
|
},
|
|
devices: {
|
|
index: '/devices',
|
|
show: (id) => `/devices/${id}`,
|
|
create: '/devices/create',
|
|
store: '/devices',
|
|
edit: (id) => `/devices/${id}/edit`,
|
|
update: (id) => `/devices/${id}`,
|
|
destroy: (id) => `/devices/${id}`,
|
|
turnOn: (id) => `/devices/${id}/turn-on`,
|
|
turnOff: (id) => `/devices/${id}/turn-off`,
|
|
setLevel: (id) => `/devices/${id}/set-level`,
|
|
},
|
|
automationRules: {
|
|
index: '/automation-rules',
|
|
create: '/automation-rules/create',
|
|
store: '/automation-rules',
|
|
edit: (id) => `/automation-rules/${id}/edit`,
|
|
update: (id) => `/automation-rules/${id}`,
|
|
destroy: (id) => `/automation-rules/${id}`,
|
|
},
|
|
profile: {
|
|
edit: '/profile',
|
|
update: '/profile',
|
|
destroy: '/profile',
|
|
},
|
|
password: {
|
|
update: '/password',
|
|
},
|
|
logout: '/logout',
|
|
};
|