Commit Graph
207 Commits
Author SHA1 Message Date
F4ilji 4f4bed0899 fix(menu): use 'view_any_role' instead of 'view_any_shield::role'
Permission name mismatch between menuConfig and DB was hiding the Roles tab.
2026-07-16 11:35:44 +05:00
F4ilji 8db442a34a Revert "fix(ssr): add Vue lifecycle guard plugin to suppress browser API errors in SSR hooks"
This reverts commit bb74bb48ba.
2026-07-07 11:22:32 +05:00
F4ilji bb74bb48ba fix(ssr): add Vue lifecycle guard plugin to suppress browser API errors in SSR hooks 2026-07-06 21:18:33 +05:00
F4ilji 6db62d9961 fix(ssr): suppress lifecycle hook errors (nextSibling null) at process level to prevent SSR crashes 2026-07-06 21:16:12 +05:00
F4ilji 63b71b87df fix(ssr): always return {head,body} from createInertiaApp — .then() fallback for undefined resolve 2026-07-06 18:59:24 +05:00
F4ilji f575325fa7 fix(ssr): remove window polyfill that broke Inertia SSR detection (typeof window check) 2026-07-06 18:53:06 +05:00
F4ilji 5fddb97cbf fix(ssr): return empty string on SSR failure instead of throwing to prevent undefined response 2026-07-06 18:30:26 +05:00
F4ilji 778ea67cb4 fix(ssr): add addEventListener/removeEventListener to document and window polyfills 2026-07-06 18:22:22 +05:00
F4ilji 48ab0b384e fix(ssr): add getElementById and other DOM methods to document polyfill 2026-07-06 18:05:35 +05:00
F4ilji 4c0152ae0f fix(ssr): polyfill localStorage/sessionStorage, guard BasicListBadge filters prop, remove this. from template 2026-07-06 17:57:28 +05:00
F4ilji eda69f4e37 fix(ssr): polyfill IntersectionObserver for Node.js SSR runtime 2026-07-06 17:53:46 +05:00
F4ilji 520533ef1f fix(ssr): null-safe campaign access to prevent TypeError during SSR 2026-07-06 14:11:38 +05:00
F4ilji 65f4220932 fix(vikon): store version in file instead of cache to prevent revert after TTL expiry 2026-07-06 13:28:22 +05:00
F4ilji b454c1ce97 fix(ssr): add null-check for breadcrumbs.page in Page.vue to prevent TypeError during SSR 2026-07-05 23:51:40 +05:00
F4ilji e3eda2adbc fix(vikon): revert to api_domain for authorize URL, use vikon_core redirect_uri 2026-07-05 22:39:21 +05:00
F4ilji fd7de347d4 fix: null-safe role check, enable SQLite test DB, improve TinyMCE paste handling 2026-07-05 22:34:04 +05:00
F4ilji bec37c0e22 fix(vikon): use auth_domain for OAuth authorize URL instead of api_domain 2026-07-05 22:31:51 +05:00
F4ilji a372f725cd fix(ssr): embed Ziggy routes as fallback for SSR context
ZiggyVue needs routes in its config, but page.props.ziggy from the
server may not carry them in the SSR worker. Importing the static
Ziggy config ensures routes are always available.
2026-07-05 21:56:51 +05:00
F4ilji 09771bf8ad fix(ssr): remove conflicting RouteMixin that caused 'Cannot read properties of undefined (reading index)'
RouteMixin received the full Inertia page object instead of page.props,
producing a Ziggy config without routes. ZiggyVue already provides the
route() function with the correct config, so the duplicate mixin is
unnecessary.
2026-07-05 21:47:03 +05:00
F4ilji a80a60bdbe feat(vikon): redesign UI with update all button, specialized icons, and manual ZIP upload 2026-07-05 18:00:49 +05:00
F4ilji a18765aafa feat(vikon): merge update buttons into single flow with all parts selected by default 2026-07-05 13:10:49 +05:00
F4ilji af86841ebc feat(vikon): improve part update UI with per-part status indicators and Russian messages 2026-07-05 12:53:44 +05:00
F4ilji 08c04c5615 feat(vikon): show disabled modules with warning instead of hiding them 2026-07-05 12:34:44 +05:00
F4ilji 8cf195efb0 refactor(vikon): fetch parts from VIKON API instead of hardcoded config 2026-07-05 11:32:54 +05:00
F4ilji 9a9521c570 fix(vikon): initialize selectedParts arrays to prevent crash on checkbox click 2026-07-05 11:11:24 +05:00
F4ilji d83364432e feat(vikon): replace part select with checkboxes for multi-selection 2026-07-05 09:55:45 +05:00
F4ilji 1d423adc12 feat(vikon): add part selection UI to Vue dashboard 2026-07-05 02:52:50 +05:00
F4ilji a4fef0bb3d feat(dashboard): add DashboardError.vue with full error context display 2026-07-05 01:18:04 +05:00
F4ilji 204e31c06d fix(vikon): show detailed error message with HTTP status code 2026-07-04 21:33:20 +05:00
F4ilji 87732720ef feat(vikon): merge core update + FM sync into single Update button 2026-07-04 21:25:29 +05:00
F4ilji 8e5f26da8d feat(vikon): add file sync from VIKON file manager (FM) 2026-07-04 20:41:49 +05:00
F4ilji b94e0aad87 fix(vikon): replace router.reload with alert after update success 2026-07-04 19:37:49 +05:00
F4ilji 7b9cf25631 fix(vikon): skip authenticate call on OAuth callback, tokens already saved server-side 2026-07-04 18:22:51 +05:00
F4ilji 2ccfb24d1d fix(vikon): use vikon_core redirect_uri for OAuth (registered on VIKON server)
- vikon_core/update/index.php now redirects OAuth callback to /dashboard/vikon-updates
- Vue frontend sends redirect_uri=https://www.ntspi.ru/vikon_core/update/index.php
- This URL is registered on db-nica.ru for client_id=542
2026-07-04 13:43:42 +05:00
F4ilji 94e17dfbbc fix(vikon): use api_domain for OAuth authorize URL (not auth_domain)
Original vikon_core used db-nica.ru for /oauth2/authorize, not auth.db-nica.ru.
This was causing 'Client authentication failed' error.
2026-07-04 13:33:39 +05:00
F4ilji f4f8bc8e77 feat(vikon): rewrite VikonIntegration from scratch — OAuth + core update
- HttpTask: Laravel Http facade with SSL enabled, retry, timeout
- ValidateTokenTask: token check via auth.db-nica.ru
- RefreshTokenTask: token refresh via db-nica.ru
- FilesystemTask: path traversal protection, blocked extensions (PHP/ASP/etc)
- AuthenticateAction: OAuth2 code→token exchange
- CheckAccessAction: token validation + filesystem writability check
- CheckVersionAction: version comparison against remote API
- UpdateCoreAction: ZIP download, Zip Slip protection, atomic sync with rollback
- VikonController: thin controller, 7 endpoints with Session-based token storage
- Routes: access-check, dashboard.auth, throttle:30,1 middleware
- Vue 3 Composition API frontend with progress bar
- Config: all secrets in .env via config/vikon.php
- vikon_core kept as fallback (not deleted)
2026-07-04 12:53:28 +05:00
F4ilji 47aac647ac feat(vikon): remove broken VikonIntegration container - starting fresh 2026-07-04 12:40:41 +05:00
F4ilji 709c51ea49 remove: all deploy UI/backend code, keep _deploy folder only
- Delete DeployRunCommand, DeployController, deploy API routes
- Delete Dashboard/Deploy Vue pages and components
- Remove deploy route from web.php
- Remove deploy quick action from config
- Remove DeployRunCommand from ConsoleKernel
2026-07-02 17:36:42 +05:00
F4ilji e0cb9642cd fix: add better error logging for deploy API 2026-07-02 16:55:43 +05:00
F4ilji 2b5b4ee48f error alert change 2026-07-02 16:49:55 +05:00
F4ilji aa6c5bc6be error alert change 2026-07-02 13:25:11 +05:00
F4ilji 92bb10faba fix: add CSRF token and cookies to deploy API requests 2026-07-02 13:17:24 +05:00
F4ilji 6fb0079e7c feat: add deploy route and sidebar navigation 2026-07-02 12:50:09 +05:00
F4ilji 13d7d36088 feat: add deploy dashboard page with components 2026-07-02 12:48:49 +05:00
F4ilji 8bc5c367d6 revert: remove deploy UI, controller, actions, tasks, and routes
- Remove Deploy/Index.vue, DeployController, DeploySiteAction, DeployTask
- Remove deploy routes from web.php
- Remove deploy menu item from menuConfig
- Remove deploy button and methods from Main.vue
- Remove deploy logging channel from logging.php
- Keep _deploy/ folder for future CI/CD setup
2026-07-02 12:00:48 +05:00
F4ilji 3da95da099 fix: use X-CSRF-TOKEN header to match Main.vue pattern
X-XSRF-TOKEN is for Laravel's cookie-based CSRF verification,
but this app uses meta tag CSRF. Main.vue uses X-CSRF-TOKEN
and works correctly.
2026-07-02 01:36:05 +05:00
F4ilji de4fdc2c72 fix: add credentials same-origin to Deploy fetch calls
Without this, session cookie is not sent with fetch() requests,
causing server to redirect to login (returning HTML instead of JSON).
2026-07-02 01:29:05 +05:00
F4ilji b42a733f53 error alert change 2026-07-02 01:24:58 +05:00
F4ilji 8364b220cc feat: add Integration Credentials CRUD and Deploy UI
Integration Credentials:
- Add IntegrationCredential model with encrypted payload
- Add full CRUD: ManageIntegrationCredentialsAction, 4 Tasks, Controller, Requests
- Add migration for integration_credentials table
- Add Vue pages: Index, Create, Edit
- AI tasks now read API keys from DB instead of .env
- Add sidebar menu item

Deploy UI:
- Add DeployTask with full deploy lifecycle management
- Extend DeployController with index, log, history endpoints
- Add Deploy/Index.vue with live polling and deploy log viewer
- Add sidebar menu item and QuickAction for Sveden

UI:
- Add 'key' icon to SidebarNavItem
- Change deploy button color to amber in Main.vue
2026-07-02 01:03:13 +05:00
F4ilji 938578d217 fix: handle non-JSON server responses in Sveden upload 2026-07-01 13:58:46 +05:00