Merge branch 'main' into MED-111
This commit is contained in:
4
.env
4
.env
@@ -69,3 +69,7 @@ NEXT_PUBLIC_MEDUSA_PUBLISHABLE_KEY=
|
||||
NEXT_PUBLIC_MONTONIO_ACCESS_KEY=7da5d7fa-3383-4997-9435-46aa818f4ead
|
||||
MONTONIO_SECRET_KEY=rNZkzwxOiH93mzkdV53AvhSsbGidrgO2Kl5lE/IT7cvo
|
||||
MONTONIO_API_URL=https://sandbox-stargate.montonio.com
|
||||
|
||||
# MEDUSA
|
||||
MEDUSA_BACKEND_URL=http://localhost:9000
|
||||
MEDUSA_BACKEND_PUBLIC_URL=http://localhost:9000
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# https://app.supabase.com/project/_/settings/api
|
||||
NEXT_PUBLIC_SUPABASE_URL=your-project-url
|
||||
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
|
||||
NEXT_PUBLIC_SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
|
||||
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
|
||||
|
||||
MEDIPOST_URL=your-medipost-url
|
||||
MEDIPOST_USER=your-medipost-user
|
||||
|
||||
@@ -39,7 +39,17 @@ async function VerifyPage(props: Props) {
|
||||
redirect(pathsConfig.auth.signIn);
|
||||
}
|
||||
|
||||
return <MultiFactorChallengeContainer userId={user.id} />;
|
||||
const nextPath = (await props.searchParams).next;
|
||||
const redirectPath = nextPath ?? pathsConfig.app.home;
|
||||
|
||||
return (
|
||||
<MultiFactorChallengeContainer
|
||||
userId={user.id}
|
||||
paths={{
|
||||
redirectPath,
|
||||
}}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
export default withI18n(VerifyPage);
|
||||
|
||||
@@ -30,8 +30,7 @@ async function syncData() {
|
||||
const password = process.env.MEDIPOST_PASSWORD;
|
||||
const sender = process.env.MEDIPOST_MESSAGE_SENDER;
|
||||
const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL;
|
||||
const supabaseServiceRoleKey =
|
||||
process.env.NEXT_PUBLIC_SUPABASE_SERVICE_ROLE_KEY;
|
||||
const supabaseServiceRoleKey = process.env.SUPABASE_SERVICE_ROLE_KEY;
|
||||
|
||||
if (
|
||||
!baseUrl ||
|
||||
@@ -68,7 +67,7 @@ async function syncData() {
|
||||
}
|
||||
: {};
|
||||
|
||||
const { data } = await axios.get(baseUrl, {
|
||||
const { data, status } = await axios.get(baseUrl, {
|
||||
params: {
|
||||
Action: 'GetPublicMessageList',
|
||||
User: user,
|
||||
@@ -79,11 +78,16 @@ async function syncData() {
|
||||
},
|
||||
});
|
||||
|
||||
if (!data || status !== 200) {
|
||||
console.error("Failed to get public message list, status: ", status, data);
|
||||
throw new Error('Failed to get public message list');
|
||||
}
|
||||
|
||||
if (data.code && data.code !== 0) {
|
||||
throw new Error('Failed to get public message list');
|
||||
}
|
||||
|
||||
if (!data.messages.length) {
|
||||
if (!data.messages?.length) {
|
||||
return supabase.schema('audit').from('sync_entries').insert({
|
||||
operation: 'ANALYSES_SYNC',
|
||||
comment: 'No new data received',
|
||||
|
||||
@@ -12,8 +12,7 @@ async function syncData() {
|
||||
|
||||
const baseUrl = process.env.CONNECTED_ONLINE_URL;
|
||||
const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL;
|
||||
const supabaseServiceRoleKey =
|
||||
process.env.NEXT_PUBLIC_SUPABASE_SERVICE_ROLE_KEY;
|
||||
const supabaseServiceRoleKey = process.env.SUPABASE_SERVICE_ROLE_KEY;
|
||||
|
||||
if (!baseUrl || !supabaseUrl || !supabaseServiceRoleKey) {
|
||||
throw new Error('Could not access all necessary environment variables');
|
||||
|
||||
@@ -18,7 +18,7 @@ export default async function logRequestResult(
|
||||
) {
|
||||
const supabaseServiceUser = createClient(
|
||||
process.env.NEXT_PUBLIC_SUPABASE_URL!,
|
||||
process.env.NEXT_PUBLIC_SUPABASE_SERVICE_ROLE_KEY!,
|
||||
process.env.SUPABASE_SERVICE_ROLE_KEY!,
|
||||
{
|
||||
auth: {
|
||||
persistSession: false,
|
||||
|
||||
@@ -331,7 +331,7 @@ export async function syncPublicMessage(
|
||||
) {
|
||||
const supabase = createCustomClient(
|
||||
process.env.NEXT_PUBLIC_SUPABASE_URL!,
|
||||
process.env.NEXT_PUBLIC_SUPABASE_SERVICE_ROLE_KEY!,
|
||||
process.env.SUPABASE_SERVICE_ROLE_KEY!,
|
||||
{
|
||||
auth: {
|
||||
persistSession: false,
|
||||
@@ -386,7 +386,7 @@ export async function composeOrderXML(
|
||||
) {
|
||||
const supabase = createCustomClient(
|
||||
process.env.NEXT_PUBLIC_SUPABASE_URL!,
|
||||
process.env.NEXT_PUBLIC_SUPABASE_SERVICE_ROLE_KEY!,
|
||||
process.env.SUPABASE_SERVICE_ROLE_KEY!,
|
||||
{
|
||||
auth: {
|
||||
persistSession: false,
|
||||
@@ -539,7 +539,7 @@ export async function syncPrivateMessage(
|
||||
) {
|
||||
const supabase = createCustomClient(
|
||||
process.env.NEXT_PUBLIC_SUPABASE_URL!,
|
||||
process.env.NEXT_PUBLIC_SUPABASE_SERVICE_ROLE_KEY!,
|
||||
process.env.SUPABASE_SERVICE_ROLE_KEY!,
|
||||
{
|
||||
auth: {
|
||||
persistSession: false,
|
||||
|
||||
@@ -8,14 +8,14 @@ import { StoreCartLineItem, StoreProductVariant } from '@medusajs/types';
|
||||
import { MontonioOrderHandlerService } from '@/packages/billing/montonio/src';
|
||||
import { requireUserInServerComponent } from '../server/require-user-in-server-component';
|
||||
|
||||
const medusaBackendUrl = process.env.MEDUSA_BACKEND_URL!;
|
||||
const medusaBackendPublicUrl = process.env.MEDUSA_BACKEND_PUBLIC_URL!;
|
||||
const siteUrl = process.env.NEXT_PUBLIC_SITE_URL!;
|
||||
|
||||
const env = z
|
||||
.object({
|
||||
medusaBackendUrl: z
|
||||
medusaBackendPublicUrl: z
|
||||
.string({
|
||||
required_error: 'MEDUSA_BACKEND_URL is required',
|
||||
required_error: 'MEDUSA_BACKEND_PUBLIC_URL is required',
|
||||
})
|
||||
.min(1),
|
||||
siteUrl: z
|
||||
@@ -25,7 +25,7 @@ const env = z
|
||||
.min(1),
|
||||
})
|
||||
.parse({
|
||||
medusaBackendUrl,
|
||||
medusaBackendPublicUrl,
|
||||
siteUrl,
|
||||
});
|
||||
|
||||
@@ -81,7 +81,7 @@ export async function handleNavigateToPayment({ language, paymentSessionId }: {
|
||||
}
|
||||
|
||||
const paymentLink = await new MontonioOrderHandlerService().getMontonioPaymentLink({
|
||||
notificationUrl: `${env.medusaBackendUrl}/api/billing/webhook`,
|
||||
notificationUrl: `${env.medusaBackendPublicUrl}/hooks/payment/montonio_montonio`,
|
||||
returnUrl: `${env.siteUrl}/home/cart/montonio-callback`,
|
||||
amount: cart.total,
|
||||
currency: cart.currency_code.toUpperCase(),
|
||||
|
||||
@@ -34,18 +34,20 @@ import {
|
||||
import { Spinner } from '@kit/ui/spinner';
|
||||
import { Trans } from '@kit/ui/trans';
|
||||
|
||||
import pathsConfig from '~/config/paths.config';
|
||||
|
||||
export function MultiFactorChallengeContainer({
|
||||
paths,
|
||||
userId,
|
||||
}: React.PropsWithChildren<{
|
||||
userId: string;
|
||||
paths: {
|
||||
redirectPath: string;
|
||||
};
|
||||
}>) {
|
||||
const router = useRouter();
|
||||
|
||||
const verifyMFAChallenge = useVerifyMFAChallenge({
|
||||
onSuccess: () => {
|
||||
router.replace(pathsConfig.app.home);
|
||||
router.replace(paths.redirectPath);
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
@@ -114,12 +114,23 @@ export async function middleware(request: NextRequest) {
|
||||
|
||||
let cacheId = cacheIdCookie?.value || crypto.randomUUID();
|
||||
|
||||
const regionMap = await getRegionMap(cacheId);
|
||||
let regionMap;
|
||||
try {
|
||||
regionMap = await getRegionMap(cacheId);
|
||||
} catch (error) {
|
||||
console.error("Error fetching regions", error);
|
||||
return {
|
||||
redirect: {
|
||||
destination: '/auth/sign-in',
|
||||
permanent: false,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
const countryCode = regionMap && (await getCountryCode(request, regionMap));
|
||||
|
||||
const urlHasCountryCode =
|
||||
countryCode && request.nextUrl.pathname.split("/")[1].includes(countryCode);
|
||||
countryCode && request.nextUrl.pathname.split("/")[1]?.includes(countryCode);
|
||||
|
||||
// if one of the country codes is in the url and the cache id is set, return next
|
||||
if (urlHasCountryCode && cacheIdCookie) {
|
||||
|
||||
Reference in New Issue
Block a user