Fixed auth middleware

This commit is contained in:
Umar Adilov 2025-05-03 14:00:59 +05:00
parent dd72be5ad8
commit 5cdcb8bb02
4 changed files with 33 additions and 31 deletions

View File

@ -14,7 +14,6 @@ const routeHandler = async (req: NextRequest) => {
.merge(z.object({ type: z.enum(['bonus', 'corporate']) })) .merge(z.object({ type: z.enum(['bonus', 'corporate']) }))
.parse(body); .parse(body);
try {
const oriyoResponse = await oriyoClient.get('/client/login', { const oriyoResponse = await oriyoClient.get('/client/login', {
params: { params: {
type: validatedBody.type, type: validatedBody.type,
@ -23,24 +22,21 @@ const routeHandler = async (req: NextRequest) => {
}, },
}); });
const parsedResponse = JSON.parse(oriyoResponse.data); if (oriyoResponse.data.error)
if (!parsedResponse.token) {
return NextResponse.json({ error: 'Credentials error' }, { status: 401 }); return NextResponse.json({ error: 'Credentials error' }, { status: 401 });
}
const response = NextResponse.json({ success: true }); const response = NextResponse.json({ success: true });
response.cookies.set(`${validatedBody.type}__token`, oriyoResponse.data, { response.cookies.set(
`${validatedBody.type}__token`,
JSON.stringify(oriyoResponse.data),
{
path: '/', path: '/',
maxAge: 2 * 60 * 60, maxAge: 2 * 60 * 60,
}); },
);
return response; return response;
} catch (error) {
console.error('login error:', error);
return NextResponse.json({ error: 'Server error' }, { status: 500 });
}
}; };
export const POST = validationErrorHandler(routeHandler); export const POST = validationErrorHandler(routeHandler);

View File

@ -21,7 +21,6 @@ const routeHandler = async (req: NextRequest, requestCookie: RequestCookie) => {
}); });
}; };
export const GET = authorizationMiddleware( export const GET = validationErrorHandler(
validationErrorHandler(routeHandler), authorizationMiddleware(routeHandler, 'bonus__token'),
'bonus__token',
); );

View File

@ -1,4 +1,5 @@
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'; import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
import { has } from 'lodash';
import { toast } from 'sonner'; import { toast } from 'sonner';
const baseQuery = fetchBaseQuery({ const baseQuery = fetchBaseQuery({
@ -22,8 +23,16 @@ export const baseAPI = createApi({
if (result.error) { if (result.error) {
switch (result.error.status) { switch (result.error.status) {
case 401: case 401:
if (
has(result.error.data, 'error') &&
result.error.data.error === 'Credentials error'
) {
toast.error('Login credentials error'); toast.error('Login credentials error');
break; break;
}
window.location.href = '/login';
break;
case 500: case 500:
toast.error('Server error, please try later'); toast.error('Server error, please try later');

View File

@ -1,6 +1,6 @@
'use client'; 'use client';
import { format, subMonths } from 'date-fns'; import { format } from 'date-fns';
import { ru } from 'date-fns/locale'; import { ru } from 'date-fns/locale';
import { CalendarIcon } from 'lucide-react'; import { CalendarIcon } from 'lucide-react';
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
@ -8,7 +8,7 @@ import { useEffect, useState } from 'react';
import { import {
TransactionRequest, TransactionRequest,
TransactionResponse, TransactionResponse,
} from '@/entities/bonus/model/types/bonus-client-info.type'; } from '@/entities/transactions/model/types';
import { useTextController } from '@/shared/language/hooks/use-text-controller'; import { useTextController } from '@/shared/language/hooks/use-text-controller';
import { Button } from '@/shared/shadcn-ui/button'; import { Button } from '@/shared/shadcn-ui/button';
@ -46,10 +46,8 @@ export const TransactionsTable = ({
data, data,
onChange, onChange,
}: TransactionsTableProps) => { }: TransactionsTableProps) => {
const [startDate, setStartDate] = useState<Date | undefined>( const [startDate, setStartDate] = useState<Date | undefined>(undefined);
subMonths(new Date(), 1), const [endDate, setEndDate] = useState<Date | undefined>(undefined);
);
const [endDate, setEndDate] = useState<Date | undefined>(new Date());
const [currentPage, setCurrentPage] = useState(1); const [currentPage, setCurrentPage] = useState(1);
const [itemsPerPage, setItemsPerPage] = useState(10); const [itemsPerPage, setItemsPerPage] = useState(10);