Phase 4: Vue client auth store, Bearer token injection, router guards, login page
...
Server:
- AuthControllerTrait now supports both session and Bearer token auth
(resolves user from Authorization: Bearer header via shserv_sessions)
Vue client:
- Add api/auth.js module for access token management
- Inject Authorization: Bearer header in http.js
- Handle 401 in client.js: clear token + redirect to /auth/login
- New Pinia auth store (stores/auth.js): init, refreshToken, logout, hasPermission
- New usePermission composable
- Router guards: redirect unauthenticated to /login, permission-based route blocking
- New LoginPage.vue with gnexus-auth login button
- AppShell: conditional nav items by permission, user bar with logout
- main.js: initialize auth before mounting app
- MSW mocks: /auth/me, /auth/logout, /auth/refresh
- Fix AppShell.spec.js for Pinia + router setup
All 167 tests pass.
Eugene Sukhodolskiy
committed
1 day ago