@@ -1,49 +1,41 @@
|
||||
import { create } from "zustand";
|
||||
import { persist } from "zustand/middleware";
|
||||
import { apiClient } from "@/shared/api/axios.instance";
|
||||
import type {
|
||||
AuthState,
|
||||
LoginCredentials,
|
||||
RegisterData,
|
||||
User,
|
||||
LoginResponse,
|
||||
} from "../types/auth.types";
|
||||
|
||||
// Mock API functions - замените на реальные запросы
|
||||
const mockLogin = async (
|
||||
credentials: LoginCredentials,
|
||||
): Promise<{ user: User; token: string }> => {
|
||||
// Имитация API запроса
|
||||
await new Promise((resolve) => setTimeout(resolve, 1000));
|
||||
|
||||
if (credentials.login === "admin" && credentials.password === "admin") {
|
||||
return {
|
||||
user: {
|
||||
id: "1",
|
||||
login: credentials.login,
|
||||
firstName: "Admin",
|
||||
lastName: "User",
|
||||
},
|
||||
token: "mock-jwt-token",
|
||||
};
|
||||
}
|
||||
throw new Error("Invalid credentials");
|
||||
const login = async (credentials: LoginCredentials): Promise<LoginResponse> => {
|
||||
const response = await apiClient.post<LoginResponse>(
|
||||
"/auth/login",
|
||||
credentials,
|
||||
);
|
||||
return response.data;
|
||||
};
|
||||
|
||||
const mockRegister = async (
|
||||
data: RegisterData,
|
||||
): Promise<{ user: User; token: string }> => {
|
||||
await new Promise((resolve) => setTimeout(resolve, 1000));
|
||||
|
||||
return {
|
||||
user: {
|
||||
id: Date.now().toString(),
|
||||
login: data.login,
|
||||
firstName: data.firstName,
|
||||
lastName: data.lastName,
|
||||
},
|
||||
token: "mock-jwt-token",
|
||||
};
|
||||
const register = async (data: RegisterData): Promise<LoginResponse> => {
|
||||
const response = await apiClient.post<LoginResponse>("/auth/register", {
|
||||
login: data.login,
|
||||
password: data.password,
|
||||
name: data.firstName,
|
||||
last_name: data.lastName,
|
||||
});
|
||||
return response.data;
|
||||
};
|
||||
|
||||
const mapResponseToUser = (response: LoginResponse): User => ({
|
||||
login: response.login,
|
||||
name: response.name,
|
||||
last_name: response.last_name,
|
||||
permission_admin: response.permission_admin,
|
||||
permission_manage_agent: response.permission_manage_agent,
|
||||
permission_view: response.permission_view,
|
||||
});
|
||||
|
||||
export const useAuthStore = create<AuthState>()(
|
||||
persist(
|
||||
(set) => ({
|
||||
@@ -55,8 +47,9 @@ export const useAuthStore = create<AuthState>()(
|
||||
login: async (credentials: LoginCredentials) => {
|
||||
set({ isLoading: true, error: null });
|
||||
try {
|
||||
const { user, token } = await mockLogin(credentials);
|
||||
set({ user, token, isLoading: false });
|
||||
const response = await login(credentials);
|
||||
const user = mapResponseToUser(response);
|
||||
set({ user, token: response.token, isLoading: false });
|
||||
} catch (error) {
|
||||
set({
|
||||
error: error instanceof Error ? error.message : "Login failed",
|
||||
@@ -69,8 +62,9 @@ export const useAuthStore = create<AuthState>()(
|
||||
register: async (data: RegisterData) => {
|
||||
set({ isLoading: true, error: null });
|
||||
try {
|
||||
const { user, token } = await mockRegister(data);
|
||||
set({ user, token, isLoading: false });
|
||||
const response = await register(data);
|
||||
const user = mapResponseToUser(response);
|
||||
set({ user, token: response.token, isLoading: false });
|
||||
} catch (error) {
|
||||
set({
|
||||
error:
|
||||
|
||||
Reference in New Issue
Block a user