From da3a162adb898931d0a69fd221e04882df2baa18 Mon Sep 17 00:00:00 2001 From: maxim Date: Wed, 19 Mar 2025 22:15:59 +0300 Subject: [PATCH] add `mock` user into `authProvider` --- src/authProvider.ts | 34 +++++++++++++++++++++++++++++++ src/components/CustomDataGrid.tsx | 6 ++++-- src/pages/login/index.tsx | 4 ++-- 3 files changed, 40 insertions(+), 4 deletions(-) diff --git a/src/authProvider.ts b/src/authProvider.ts index 195f5d5..660ad51 100644 --- a/src/authProvider.ts +++ b/src/authProvider.ts @@ -13,9 +13,33 @@ class AuthError extends Error { } } +const MOCK_USER = { + email: 'test@wn.ru', + password: 'testwn', + name: 'Константин Иванов', + avatar: 'https://i.pravatar.cc/300', + // roles: ['admin'], +} + export const authProvider: AuthProvider = { login: async ({email, password}) => { try { + if (email === MOCK_USER.email && password === MOCK_USER.password) { + const mockResponse = { + token: 'mock-jwt-token', + user: MOCK_USER, + } + + localStorage.setItem(TOKEN_KEY, mockResponse.token) + localStorage.setItem('user', JSON.stringify(mockResponse.user)) + + return { + success: true, + redirectTo: '/', + } + } + + // If not mock user, try real API const response = await axios.post(`${API_URL}/auth/login`, { email, password, @@ -63,6 +87,8 @@ export const authProvider: AuthProvider = { }, check: async () => { const token = localStorage.getItem(TOKEN_KEY) + const user = localStorage.getItem('user') + if (!token) { return { authenticated: false, @@ -70,6 +96,14 @@ export const authProvider: AuthProvider = { } } + // If using mock token, skip API verification + if (token === 'mock-jwt-token' && user) { + return { + authenticated: true, + } + } + + // For real tokens, verify with API try { const response = await axios.get(`${API_URL}/auth/me`, { headers: { diff --git a/src/components/CustomDataGrid.tsx b/src/components/CustomDataGrid.tsx index f16fb76..9e75048 100644 --- a/src/components/CustomDataGrid.tsx +++ b/src/components/CustomDataGrid.tsx @@ -1,5 +1,5 @@ import {DataGrid, type DataGridProps, type GridColumnVisibilityModel} from '@mui/x-data-grid' -import {Stack, Button} from '@mui/material' +import {Stack, Button, Typography} from '@mui/material' import {ExportButton} from '@refinedev/mui' import {useExport} from '@refinedev/core' import React, {useState, useEffect, useMemo} from 'react' @@ -113,7 +113,9 @@ export const CustomDataGrid = ({hasCoordinates = false, columns = [], resource, )} - + + Экспорт + ) diff --git a/src/pages/login/index.tsx b/src/pages/login/index.tsx index b0cc9cb..5b95356 100644 --- a/src/pages/login/index.tsx +++ b/src/pages/login/index.tsx @@ -8,8 +8,8 @@ export const Login = () => { title={} />} formProps={{ defaultValues: { - email: 'demo@refine.dev', - password: 'demodemo', + email: 'test@wn.ru', + password: 'testwn', }, }} />