1773ed5f95
Mirror to GitHub / mirror (push) Successful in 26s
Test and Lint / backend-test (push) Successful in 1m11s
continuous-integration/drone/push Build is passing
Test and Lint / frontend-test (push) Successful in 2m28s
Version and Release / version-bump (push) Successful in 32s
Version and Release / trigger-drone (push) Has been skipped
Original: feat: enhance security logging and ensure rate limit blocks are properly tracked - Add comprehensive logging for rate limit blocks with full request details - IP address (with proper proxy detection), user agent, headers, timestamps - Rate limit info (current count, limit, remaining, reset time) - Separate tracking for auth vs general endpoints - Enhance authentication failure logging - JWT validation failures with detailed error info - Admin auth attempts without token - Failed token validation with user context - All events include IP, path, method, user agent - Improve Winston logger configuration for production - Add automatic log rotation (10MB errors, 50MB combined) - Create separate security.log for auth/rate limit events - Ensure logs directory exists automatically - Add structured JSON format for log aggregation - Support container logging with LOG_TO_CONSOLE env var - Create comprehensive documentation - Security logging guide with examples - Monitoring recommendations - Configuration reference - Add test script to verify logging functionality All rate limit settings remain configurable via admin panel: - Window duration, max requests, auth limits - Skip authenticated requests option - Public endpoints only option 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
66 lines
1.9 KiB
JSON
66 lines
1.9 KiB
JSON
{
|
|
"name": "picpeak-frontend",
|
|
"private": true,
|
|
"version": "1.0.61",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "vite build",
|
|
"build:check": "tsc -b && vite build",
|
|
"lint": "eslint .",
|
|
"preview": "vite preview"
|
|
},
|
|
"dependencies": {
|
|
"@tanstack/react-query": "^5.0.0",
|
|
"@tiptap/extension-character-count": "^2.26.1",
|
|
"@tiptap/extension-code-block-lowlight": "^2.26.1",
|
|
"@tiptap/extension-hard-break": "^2.26.1",
|
|
"@tiptap/extension-link": "^2.25.0",
|
|
"@tiptap/extension-placeholder": "^2.26.1",
|
|
"@tiptap/extension-text-align": "^2.26.1",
|
|
"@tiptap/react": "^2.25.0",
|
|
"@tiptap/starter-kit": "^2.25.0",
|
|
"@types/dompurify": "^3.0.5",
|
|
"@types/lodash": "^4.17.20",
|
|
"@types/react-google-recaptcha": "^2.1.9",
|
|
"axios": "^1.3.2",
|
|
"clsx": "^2.0.0",
|
|
"date-fns": "^2.29.3",
|
|
"dompurify": "^3.2.6",
|
|
"i18next": "^25.3.1",
|
|
"i18next-browser-languagedetector": "^8.2.0",
|
|
"i18next-http-backend": "^3.0.2",
|
|
"js-cookie": "^3.0.5",
|
|
"lodash": "^4.17.21",
|
|
"lowlight": "^2.9.0",
|
|
"lucide-react": "^0.292.0",
|
|
"react": "^18.3.1",
|
|
"react-countdown": "^2.3.5",
|
|
"react-dom": "^18.3.1",
|
|
"react-google-recaptcha": "^3.1.0",
|
|
"react-i18next": "^15.6.0",
|
|
"react-image-gallery": "^1.2.11",
|
|
"react-intersection-observer": "^9.4.3",
|
|
"react-router-dom": "^6.8.0",
|
|
"react-toastify": "^9.1.1",
|
|
"tailwind-merge": "^3.3.1"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^9.29.0",
|
|
"@types/js-cookie": "^3.0.6",
|
|
"@types/react": "^18.3.12",
|
|
"@types/react-dom": "^18.3.1",
|
|
"@vitejs/plugin-react": "^4.5.2",
|
|
"autoprefixer": "^10.4.13",
|
|
"eslint": "^9.29.0",
|
|
"eslint-plugin-react-hooks": "^5.2.0",
|
|
"eslint-plugin-react-refresh": "^0.4.20",
|
|
"globals": "^16.2.0",
|
|
"postcss": "^8.4.21",
|
|
"tailwindcss": "^3.3.0",
|
|
"typescript": "~5.8.3",
|
|
"typescript-eslint": "^8.34.1",
|
|
"vite": "^7.0.0"
|
|
}
|
|
}
|