cc-dashboard/web/src/main.ts
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

30 lines
760 B
TypeScript

import { createApp } from 'vue'
import { createPinia } from 'pinia'
import { VueQueryPlugin } from '@tanstack/vue-query'
import App from './App.vue'
import router from './router'
import { setupInterceptors } from './api/client'
import { useAuthStore } from './stores/auth'
import { initMsal } from './api/msal'
import './styles/globals.css'
// Initialize MSAL before mounting — handles redirect callback if present
initMsal().then(() => {
const app = createApp(App)
const pinia = createPinia()
app.use(pinia)
app.use(router)
app.use(VueQueryPlugin)
const authStore = useAuthStore()
setupInterceptors(
() => authStore.getToken(),
() => {
authStore.logout()
router.push({ name: 'login' })
}
)
app.mount('#app')
})