F4ilji
b8fd42d9f8
fix(security): add permission middleware to dashboard routes
...
Each route group now requires view_any_{resource} permission.
Without the permission, Spatie returns 403 Forbidden.
VIKON updates and integration-credentials remain unprotected.
2026-07-16 11:57:20 +05:00
F4ilji
4e2105190b
fix(tests): replace RefreshDatabase with DatabaseTransactions
...
- Prevents local DB data loss when running 'php artisan test'
- ViconApiConfigTest uses updateOrCreate to avoid unique constraint
- Delete + Cache::flush for 'not configured' test case
2026-07-10 17:11:27 +05:00
F4ilji
520533ef1f
fix(ssr): null-safe campaign access to prevent TypeError during SSR
2026-07-06 14:11:38 +05:00
F4ilji
9bac98d175
fix(logging): route EmailFetchException to email channel instead of app
2026-07-06 13:39:26 +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
9943f7ab90
fix error
2026-07-06 12:35:40 +05:00
F4ilji
769b2ff342
feat(logging): migrate remaining files to app channel — all Log:: calls now use domain channels
2026-07-05 23:32:01 +05:00
F4ilji
6bc1b3e921
feat(logging): migrate Education container to education channel
2026-07-05 23:30:30 +05:00
F4ilji
cd9b682994
feat(logging): migrate AI tasks to ai channel
2026-07-05 23:29:39 +05:00
F4ilji
49dd578e50
feat(logging): migrate email pipeline to email channel
2026-07-05 23:28:23 +05:00
F4ilji
720aa4d0ae
feat(logging): migrate VikonIntegration to vikon channel
2026-07-05 23:13:51 +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
bec37c0e22
fix(vikon): use auth_domain for OAuth authorize URL instead of api_domain
2026-07-05 22:31:51 +05:00
F4ilji
a32572f5e8
fix(vikon): remove env override for version, use hardcoded default
2026-07-05 17:44:45 +05:00
F4ilji
eb142b2513
refactor(vikon): use Redis cache for version instead of file
2026-07-05 15:11:17 +05:00
F4ilji
ad8a4d861b
fix(vikon): read version from file and update after core update
2026-07-05 15:06:14 +05:00
F4ilji
b0ff3bf397
feat(vikon): cleanup _old/_new artifacts after successful sync
2026-07-05 13:58:00 +05:00
F4ilji
416403b6ce
debug(vikon): add detailed logging for ZIP size and FM sync stats
2026-07-05 13:33:13 +05:00
F4ilji
b9ff255878
fix(vikon): use cURL streaming for ZIP downloads to avoid memory/timeout issues
2026-07-05 13:26:10 +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
efce5be699
fix(vikon): use moduleData['id'] instead of array key, handle additional_access_flags
2026-07-05 12:25:15 +05:00
F4ilji
97c4ab99f1
debug(vikon): log raw API response structure for parts mapping
2026-07-05 12:19:14 +05:00
F4ilji
a162154f70
fix(vikon): cast API module IDs to int for Vue compatibility
2026-07-05 12:12:04 +05:00
F4ilji
0a5f99e6ae
refactor(vikon): remove hardcoded module IDs and use config everywhere
2026-07-05 11:40:02 +05:00
F4ilji
8cf195efb0
refactor(vikon): fetch parts from VIKON API instead of hardcoded config
2026-07-05 11:32:54 +05:00
F4ilji
af1fb094d2
fix(vikon): check HTTP status instead of JSON field for part generation check
2026-07-05 10:55:37 +05:00
F4ilji
3d9982e5be
fix(vikon): handle numeric status codes from VIKON API (1=completed, -1=failed)
2026-07-05 10:46:02 +05:00
F4ilji
2bf2f4a861
fix(vikon): send POST data as form-urlencoded to match VIKON API expectations
2026-07-05 10:31:40 +05:00
F4ilji
e83cd0109d
fix(vikon): correct VIKON API endpoint names for part updates
2026-07-05 10:21:27 +05:00
F4ilji
11b2def517
test(vikon): add validateFileTypes mock to UpdatePartActionTest
2026-07-05 03:02:03 +05:00
F4ilji
e8e36156e9
fix(vikon): add file type validation and temp cleanup in UpdatePartAction
2026-07-05 03:01:12 +05:00
F4ilji
059705d60d
test(vikon): add feature tests for part update endpoint
2026-07-05 02:58:32 +05:00
F4ilji
1d423adc12
feat(vikon): add part selection UI to Vue dashboard
2026-07-05 02:52:50 +05:00
F4ilji
b259809960
feat(vikon): add updatePart endpoint with request validation
2026-07-05 02:50:41 +05:00
F4ilji
15f72b4de1
feat(vikon): add restoreAfterFail for crash recovery in FilesystemTask
2026-07-05 02:47:40 +05:00
F4ilji
da90011ad3
feat(vikon): add UpdatePartAction for partial module updates
2026-07-05 02:45:47 +05:00
F4ilji
4764d4e2d9
feat(vikon): add PollPartStatusTask for part update polling
2026-07-05 02:41:23 +05:00
F4ilji
a624b83f18
feat(vikon): add atomicSwap to FilesystemTask for crash-safe updates
2026-07-05 02:35:25 +05:00
F4ilji
e3511462f7
fix(vikon): skip existing files during FM sync, match original PHP diff behavior
...
Original vikon_core sync_root_dir.php only downloads files that are
missing locally or have size 0. Added local file size check before
downloading to avoid re-fetching 14GB+ of existing files.
2026-07-04 23:25:59 +05:00
F4ilji
b538b4119f
fix(vikon): all FM files go to files/ dir, matching original PHP getFsPathByModule
...
Original vikon_core Path::getFsPathByModule() returns moduleRoot/files/,
not moduleRoot. Root FM files, 3-letter subdirs, and new files all go
under files/ directory. index.html etc come from core ZIP, not FM sync.
2026-07-04 23:02:43 +05:00
F4ilji
cccdbbbbd8
fix(vikon): keep ZIP and extracted files in temp after update
2026-07-04 22:41:39 +05:00
F4ilji
a33d93e163
fix(vikon): root files to module root, 3-letter dirs to files/{code}/
...
- UpdateCoreAction: split syncDirFiles into syncRootDir (→module root)
and syncSubDir (→files/{dirId})
- SyncFilesAction: same split, matching original PHP vikon_core behavior
- index.html, file_stubs/ etc go to module root
- 3-letter FM codes (eib, eid, rir) go inside files/
2026-07-04 22:40:30 +05:00
F4ilji
a7d0628a13
fix(vikon): use module root as FM sync base path instead of files/ subdir
...
Root files (index.html, file_stubs/) and non-3-letter directories now go
to module root where VIKON expects them, not into files/ subdirectory.
dir_name from FM API is relative to module root.
2026-07-04 22:31:10 +05:00
F4ilji
bf3bcc4eca
fix(vikon): revert syncDirFiles - keep 3-letter dirIds as subdirectories
2026-07-04 22:18:20 +05:00
F4ilji
c4314e2f43
fix(vikon): use getFileByIdentityInfo dir_name for correct file paths
2026-07-04 22:15:59 +05:00
F4ilji
d7c9de2bd6
fix(vikon): restore syncDirFiles subdirs - files go to files/{dirId}/
2026-07-04 21:55:29 +05:00
F4ilji
241ac576fe
fix(vikon): revert syncDirFiles - save files directly in files/ without subdirs
2026-07-04 21:52:21 +05:00
F4ilji
997ef6d483
fix(vikon): syncDirFiles saves to correct subdirectory, increase timeouts to 600s
2026-07-04 21:49:17 +05:00
F4ilji
b115cb93fd
fix(vikon): increase nginx fastcgi_read_timeout to 600s, PHP set_time_limit 600
2026-07-04 21:40:51 +05:00