Fixed auth middleware
This commit is contained in:
parent
dd72be5ad8
commit
5cdcb8bb02
@ -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);
|
||||||
|
|||||||
@ -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',
|
|
||||||
);
|
);
|
||||||
|
|||||||
@ -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');
|
||||||
|
|||||||
@ -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);
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user