fix: enable benefits blocks

This commit is contained in:
Christel Westerberg
2024-05-16 17:01:16 +02:00
parent 9e4f41ee46
commit e195f70d79
4 changed files with 45 additions and 86 deletions

View File

@@ -3,6 +3,9 @@ import Overview from "@/components/MyPages/Blocks/Overview"
import Shortcuts from "@/components/MyPages/Blocks/Shortcuts"
import { modWebviewLink } from "@/utils/webviews"
import CurrentBenefitsBlock from "../../Blocks/Benefits/CurrentLevel"
import NextLevelBenefitsBlock from "../../Blocks/Benefits/NextLevel"
import {
AccountPageContentProps,
ContentProps,
@@ -16,6 +19,10 @@ function DynamicComponent({ component, props }: AccountPageContentProps) {
switch (component) {
case DynamicContentComponents.membership_overview:
return <Overview title={props.title} />
case DynamicContentComponents.current_benefits:
return <CurrentBenefitsBlock {...props} />
case DynamicContentComponents.next_benefits:
return <NextLevelBenefitsBlock {...props} />
default:
return null
}

View File

@@ -1,8 +1,8 @@
import { TRPCError } from "@trpc/server"
import { headers } from "next/headers"
import { redirect } from "next/navigation"
import { Lang } from "@/constants/languages"
import { overview } from "@/constants/routes/webviews"
import { appRouter } from "@/server"
import { createContext } from "@/server/context"
import { internalServerError } from "@/server/errors/next"
@@ -24,7 +24,9 @@ export function serverClient() {
if (error.code === "UNAUTHORIZED") {
const lang = ctx?.lang || Lang.en
if (ctx?.webToken) {
const returnUrl = ctx.url
console.log({ ctx })
const returnUrl = ctx.pathname || overview[lang]
const redirectUrl = `/${lang}/webview/refresh?returnurl=${encodeURIComponent(returnUrl)}`
console.error(
"Unautorized in webview, redirecting to: ",

View File

@@ -46,6 +46,40 @@ const nextConfig = {
return config
},
redirects() {
return [
{
source: myPages.da,
destination: overview.da,
permanent: false,
},
{
source: myPages.de,
destination: overview.de,
permanent: false,
},
{
source: myPages.en,
destination: overview.en,
permanent: false,
},
{
source: myPages.fi,
destination: overview.fi,
permanent: false,
},
{
source: myPages.no,
destination: overview.no,
permanent: false,
},
{
source: myPages.sv,
destination: overview.sv,
permanent: false,
},
]
},
rewrites() {
return {
beforeFiles: [

84
test.js
View File

@@ -1,84 +0,0 @@
function base64ToUint8Array(base64String) {
const binaryString = atob(base64String)
const byteArray = new Uint8Array(binaryString.length)
for (let i = 0; i < binaryString.length; i++) {
byteArray[i] = binaryString.charCodeAt(i)
}
return byteArray
}
function utf8ToUint8Array(utf8String) {
return new TextEncoder().encode(utf8String)
}
function uint8ArrayToBase64(uint8Array) {
let binaryString = ""
const len = uint8Array.byteLength
for (let i = 0; i < len; i++) {
binaryString += String.fromCharCode(uint8Array[i])
}
return btoa(binaryString)
}
function uint8ArrayToUtf8(uint8Array) {
return new TextDecoder().decode(uint8Array)
}
async function decryptData(keyBase64, ivBase64, encryptedDataBase64) {
const keyBuffer = await crypto.subtle.importKey(
"raw",
base64ToUint8Array(keyBase64),
"AES-CBC",
false,
["decrypt"]
)
const encryptedDataBuffer = base64ToUint8Array(encryptedDataBase64)
const ivBuffer = base64ToUint8Array(ivBase64)
const decryptedDataBuffer = await crypto.subtle.decrypt(
{ name: "AES-CBC", iv: ivBuffer },
keyBuffer,
encryptedDataBuffer
)
const decryptedData = uint8ArrayToUtf8(new Uint8Array(decryptedDataBuffer))
return decryptedData
}
async function encryptData(keyBase64, ivBase64, data) {
const keyBuffer = await crypto.subtle.importKey(
"raw",
base64ToUint8Array(keyBase64),
"AES-CBC",
false,
["encrypt"]
)
const dataBuffer = utf8ToUint8Array(data)
const ivBuffer = base64ToUint8Array(ivBase64)
const encryptedDataBuffer = await crypto.subtle.encrypt(
{ name: "AES-CBC", iv: ivBuffer },
keyBuffer,
dataBuffer
)
const encryptedData = uint8ArrayToBase64(new Uint8Array(encryptedDataBuffer))
return encryptedData
}
const keyBase64 = "MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI="
const ivBase64 = btoa("abcdefghijklmnop")
const data = "_0XBPWQQ_60d7f996-04e1-4e2f-b7e9-1d1139b808ea"
// Encrypt the data
const encryptedData = await encryptData(keyBase64, ivBase64, data)
// Decrypt the data
const decryptedData = await decryptData(keyBase64, ivBase64, encryptedData)
// const tegwpjke = await encryptData(
// "MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=",
// btoa("abcdefghijklmnop"),
// "_0XBPWQQ_60d7f996-04e1-4e2f-b7e9-1d1139b808ea"
// )
// console.log(tegwpjke)