cc-dashboard/web/package.json
Vadym Samoilenko 96e6f4ee14 feat: replace local auth with Azure AD SSO (MSAL PKCE)
- New POST /api/auth/microsoft endpoint validates Azure ID token via JWKS
- Removed POST /api/auth/login and /change-password
- Added azure_oid + nullable password_hash to users (migration 0007)
- Auto-provisions all @oliver.agency accounts on first SSO login
- Case-insensitive email matching links existing vadymsamoilenko@ account
- DEV_AUTH_BYPASS flag for local development without MSAL
- Frontend: MSAL loginPopup replaces email/password form
- Added scripts/grant_admin.py for role management

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-07 10:43:19 +01:00

53 lines
1.4 KiB
JSON

{
"name": "cc-dashboard-web",
"version": "1.0.0",
"private": true,
"type": "module",
"scripts": {
"dev": "vite",
"build": "vue-tsc --noEmit && vite build",
"preview": "vite preview",
"lint": "eslint . --ext .vue,.ts,.tsx",
"typecheck": "vue-tsc --noEmit",
"test:unit": "vitest run"
},
"dependencies": {
"vue": "^3.5.0",
"vue-router": "^4.3.0",
"pinia": "^2.2.0",
"@vueuse/core": "^11.0.0",
"axios": "^1.7.0",
"@tanstack/vue-query": "^5.51.0",
"date-fns": "^3.6.0",
"date-fns-tz": "^3.1.3",
"zod": "^3.23.8",
"vee-validate": "^4.13.2",
"@vee-validate/zod": "^4.13.2",
"vue-sonner": "^1.1.4",
"marked": "^12.0.0",
"class-variance-authority": "^0.7.0",
"clsx": "^2.1.1",
"tailwind-merge": "^2.4.0",
"radix-vue": "^1.9.9",
"@radix-icons/vue": "^1.0.0",
"lucide-vue-next": "^0.427.0",
"@azure/msal-browser": "^3.20.0"
},
"devDependencies": {
"@vitejs/plugin-vue": "^5.1.0",
"vite": "^5.4.0",
"typescript": "^5.5.0",
"vue-tsc": "^2.1.0",
"tailwindcss": "^3.4.10",
"autoprefixer": "^10.4.20",
"postcss": "^8.4.41",
"@typescript-eslint/eslint-plugin": "^7.18.0",
"@typescript-eslint/parser": "^7.18.0",
"eslint": "^8.57.0",
"eslint-plugin-vue": "^9.27.0",
"vitest": "^2.0.5",
"@vue/test-utils": "^2.4.6",
"happy-dom": "^14.12.3",
"prettier": "^3.3.3"
}
}