Skip to content

Commit 5d0cabe

Browse files
committed
fix(web,mobile): fix router guard blocking login pages and window.db race condition
1 parent bfe00f6 commit 5d0cabe

3 files changed

Lines changed: 13 additions & 14 deletions

File tree

packages/mobile/src/database/index.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -220,10 +220,6 @@ export async function getDatabase(): Promise<RxDatabase> {
220220
}
221221
}
222222

223-
if (import.meta.env.DEV && import.meta.env.VITE_DEVELOP) {
224-
;(window as unknown as { db: RxDatabase }).db = dbInstance // write to window for debugging
225-
}
226-
227223
console.log('setting up collections...')
228224
try {
229225
await dbInstance.addCollections({
@@ -260,6 +256,9 @@ export async function getDatabase(): Promise<RxDatabase> {
260256
schema: TenantAppSchema
261257
}
262258
})
259+
if (import.meta.env.DEV && import.meta.env.VITE_DEVELOP) {
260+
;(window as unknown as { db: RxDatabase }).db = dbInstance // write to window for debugging
261+
}
263262
} catch (error) {
264263
console.error('Error adding collections:', error)
265264
if (

packages/web/src/router/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ router.beforeEach((to, _from, next) => {
136136
return;
137137
}
138138

139-
if (to.meta.userType && authStore.userType !== to.meta.userType) {
139+
if (to.meta.userType && authStore.userType && authStore.userType !== to.meta.userType) {
140140
next({ name: "home" });
141141
return;
142142
}

packages/web/src/stores/__tests__/auth.spec.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@ describe('useAuthStore', () => {
9595
const store = useAuthStore()
9696
await store.loginAsAgent({ email: 'agent@test.com', password: 'pass' })
9797

98-
expect(localStorage.getItem('web_token')).toBe(mockToken)
99-
expect(localStorage.getItem('web_user_type')).toBe('agent')
98+
expect(sessionStorage.getItem('web_token')).toBe(mockToken)
99+
expect(sessionStorage.getItem('web_user_type')).toBe('agent')
100100
})
101101
})
102102

@@ -162,22 +162,22 @@ describe('useAuthStore', () => {
162162
expect(store.token).toBeNull()
163163
expect(store.agentPayload).toBeNull()
164164
expect(store.citizenPayload).toBeNull()
165-
expect(localStorage.getItem('web_token')).toBeNull()
165+
expect(sessionStorage.getItem('web_token')).toBeNull()
166166
expect(sessionStorage.getItem('web_citizen_token')).toBeNull()
167167
})
168168
})
169169

170170
describe('initializeAuth', () => {
171-
it('restores agent session from localStorage', () => {
171+
it('restores agent session from sessionStorage', () => {
172172
const mockToken = createMockJwt({
173173
id: '1',
174174
email: 'agent@test.com',
175175
role: 'USER',
176176
exp: Math.floor(Date.now() / 1000) + 3600,
177177
})
178178

179-
localStorage.setItem('web_token', mockToken)
180-
localStorage.setItem('web_user_type', 'agent')
179+
sessionStorage.setItem('web_token', mockToken)
180+
sessionStorage.setItem('web_user_type', 'agent')
181181

182182
const store = useAuthStore()
183183
store.initializeAuth()
@@ -214,14 +214,14 @@ describe('useAuthStore', () => {
214214
exp: Math.floor(Date.now() / 1000) - 100, // expired
215215
})
216216

217-
localStorage.setItem('web_token', mockToken)
218-
localStorage.setItem('web_user_type', 'agent')
217+
sessionStorage.setItem('web_token', mockToken)
218+
sessionStorage.setItem('web_user_type', 'agent')
219219

220220
const store = useAuthStore()
221221
store.initializeAuth()
222222

223223
expect(store.isAuthenticated).toBe(false)
224-
expect(localStorage.getItem('web_token')).toBeNull()
224+
expect(sessionStorage.getItem('web_token')).toBeNull()
225225
})
226226

227227
it('logs out when citizen token is expired', () => {

0 commit comments

Comments
 (0)