|
@@ -2,7 +2,7 @@
|
|
|
|
|
|
|
|
import { createContext, useContext, useState, useCallback, useEffect, type ReactNode } from 'react'
|
|
import { createContext, useContext, useState, useCallback, useEffect, type ReactNode } from 'react'
|
|
|
import type { User } from '@/types'
|
|
import type { User } from '@/types'
|
|
|
-import { api, setAccessToken, refreshAccessToken, hasSessionCookie } from '@/lib/api'
|
|
|
|
|
|
|
+import { api, setAccessToken, refreshAccessToken, hasSessionCookie, setSessionCookie, clearSessionCookie } from '@/lib/api'
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* Состояние аутентификации, доступное через контекст
|
|
* Состояние аутентификации, доступное через контекст
|
|
@@ -44,6 +44,7 @@ export function AuthProvider({ children }: { children: ReactNode }) {
|
|
|
const res = await api.get<User>('/auth/me')
|
|
const res = await api.get<User>('/auth/me')
|
|
|
setUser(res)
|
|
setUser(res)
|
|
|
} catch {
|
|
} catch {
|
|
|
|
|
+ clearSessionCookie()
|
|
|
setAccessToken(null)
|
|
setAccessToken(null)
|
|
|
setUser(null)
|
|
setUser(null)
|
|
|
}
|
|
}
|
|
@@ -57,12 +58,14 @@ export function AuthProvider({ children }: { children: ReactNode }) {
|
|
|
const res = await api.post<{ user: User; access_token: string }>('/auth/login', { email, password })
|
|
const res = await api.post<{ user: User; access_token: string }>('/auth/login', { email, password })
|
|
|
setAccessToken(res.access_token)
|
|
setAccessToken(res.access_token)
|
|
|
setUser(res.user)
|
|
setUser(res.user)
|
|
|
|
|
+ setSessionCookie()
|
|
|
}, [])
|
|
}, [])
|
|
|
|
|
|
|
|
const register = useCallback(async (email: string, password: string, role: string, name?: string) => {
|
|
const register = useCallback(async (email: string, password: string, role: string, name?: string) => {
|
|
|
const res = await api.post<{ user: User; access_token: string }>('/auth/register', { email, password, role, name })
|
|
const res = await api.post<{ user: User; access_token: string }>('/auth/register', { email, password, role, name })
|
|
|
setAccessToken(res.access_token)
|
|
setAccessToken(res.access_token)
|
|
|
setUser(res.user)
|
|
setUser(res.user)
|
|
|
|
|
+ setSessionCookie()
|
|
|
}, [])
|
|
}, [])
|
|
|
|
|
|
|
|
const logout = useCallback(async () => {
|
|
const logout = useCallback(async () => {
|
|
@@ -72,6 +75,7 @@ export function AuthProvider({ children }: { children: ReactNode }) {
|
|
|
}
|
|
}
|
|
|
setAccessToken(null)
|
|
setAccessToken(null)
|
|
|
setUser(null)
|
|
setUser(null)
|
|
|
|
|
+ clearSessionCookie()
|
|
|
}, [])
|
|
}, [])
|
|
|
|
|
|
|
|
return (
|
|
return (
|