✅ Backend Implementation: - Add Azure AD JWT token validation middleware - Create hybrid authentication system supporting both Azure AD and password auth - Implement auto-provisioning for new Azure AD users - Add admin controls to toggle password authentication - Update all API routes to use hybrid authentication - Add database fields for authentication (password, lastLoginAt) - Create comprehensive auth routes with validation endpoints ✅ Frontend Implementation: - Install and configure Azure MSAL browser library - Create Azure AD authentication service with popup/redirect support - Build hybrid authentication service managing both auth methods - Update Login.vue with modern dual-authentication UI - Implement dynamic password auth toggle based on admin settings - Update App.vue for proper session management and validation - Modify API service to handle both token types ✅ Security Features: - Azure AD tenant validation (Oliver Agency) - Role-based access control with auto-admin assignment - JWT token validation for both auth methods - Automatic user provisioning with proper defaults - Session validation and automatic logout on token expiry ✅ Admin Features: - Toggle password authentication on/off - Manage users from both authentication methods - Full role and agent access control - Azure AD user auto-provisioning as regular users ✅ Configuration: - Azure AD: Tenant e519c2e6-bc6d-4fdf-8d9c-923c2f002385 - Client ID: 9079054c-9620-4757-a256-23413042f1ef - Development redirect URI support - Fallback password authentication for testing 🔧 Technical Stack: - Azure MSAL Browser & Node libraries - JWT token validation and hybrid middleware - Database schema updates with migrations - Vue.js integration with MSAL - Express.js hybrid authentication routes 🚀 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
33 lines
744 B
JSON
33 lines
744 B
JSON
{
|
|
"name": "ideas-generator-2025-admin",
|
|
"version": "1.0.0",
|
|
"description": "Frontend for Ideas Generator 2025",
|
|
"main": "index.js",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "vite build",
|
|
"preview": "vite preview",
|
|
"serve": "vite preview --port 8080"
|
|
},
|
|
"keywords": [
|
|
"vue",
|
|
"vite",
|
|
"ideas-generator"
|
|
],
|
|
"author": "",
|
|
"license": "ISC",
|
|
"dependencies": {
|
|
"@azure/msal-browser": "^4.22.0",
|
|
"axios": "^1.6.0",
|
|
"chart.js": "^4.5.0",
|
|
"highlight.js": "^11.9.0",
|
|
"marked": "^11.1.1",
|
|
"vue": "^3.4.0",
|
|
"vue-chartjs": "^5.3.2",
|
|
"vue-router": "^4.2.5"
|
|
},
|
|
"devDependencies": {
|
|
"@vitejs/plugin-vue": "^4.5.2",
|
|
"vite": "^5.0.10"
|
|
}
|
|
}
|