- 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>
30 lines
760 B
TypeScript
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')
|
|
})
|