fix: enable benefits blocks
This commit is contained in:
@@ -3,6 +3,9 @@ import Overview from "@/components/MyPages/Blocks/Overview"
|
|||||||
import Shortcuts from "@/components/MyPages/Blocks/Shortcuts"
|
import Shortcuts from "@/components/MyPages/Blocks/Shortcuts"
|
||||||
import { modWebviewLink } from "@/utils/webviews"
|
import { modWebviewLink } from "@/utils/webviews"
|
||||||
|
|
||||||
|
import CurrentBenefitsBlock from "../../Blocks/Benefits/CurrentLevel"
|
||||||
|
import NextLevelBenefitsBlock from "../../Blocks/Benefits/NextLevel"
|
||||||
|
|
||||||
import {
|
import {
|
||||||
AccountPageContentProps,
|
AccountPageContentProps,
|
||||||
ContentProps,
|
ContentProps,
|
||||||
@@ -16,6 +19,10 @@ function DynamicComponent({ component, props }: AccountPageContentProps) {
|
|||||||
switch (component) {
|
switch (component) {
|
||||||
case DynamicContentComponents.membership_overview:
|
case DynamicContentComponents.membership_overview:
|
||||||
return <Overview title={props.title} />
|
return <Overview title={props.title} />
|
||||||
|
case DynamicContentComponents.current_benefits:
|
||||||
|
return <CurrentBenefitsBlock {...props} />
|
||||||
|
case DynamicContentComponents.next_benefits:
|
||||||
|
return <NextLevelBenefitsBlock {...props} />
|
||||||
default:
|
default:
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { TRPCError } from "@trpc/server"
|
import { TRPCError } from "@trpc/server"
|
||||||
import { headers } from "next/headers"
|
|
||||||
import { redirect } from "next/navigation"
|
import { redirect } from "next/navigation"
|
||||||
|
|
||||||
import { Lang } from "@/constants/languages"
|
import { Lang } from "@/constants/languages"
|
||||||
|
import { overview } from "@/constants/routes/webviews"
|
||||||
import { appRouter } from "@/server"
|
import { appRouter } from "@/server"
|
||||||
import { createContext } from "@/server/context"
|
import { createContext } from "@/server/context"
|
||||||
import { internalServerError } from "@/server/errors/next"
|
import { internalServerError } from "@/server/errors/next"
|
||||||
@@ -24,7 +24,9 @@ export function serverClient() {
|
|||||||
if (error.code === "UNAUTHORIZED") {
|
if (error.code === "UNAUTHORIZED") {
|
||||||
const lang = ctx?.lang || Lang.en
|
const lang = ctx?.lang || Lang.en
|
||||||
if (ctx?.webToken) {
|
if (ctx?.webToken) {
|
||||||
const returnUrl = ctx.url
|
console.log({ ctx })
|
||||||
|
const returnUrl = ctx.pathname || overview[lang]
|
||||||
|
|
||||||
const redirectUrl = `/${lang}/webview/refresh?returnurl=${encodeURIComponent(returnUrl)}`
|
const redirectUrl = `/${lang}/webview/refresh?returnurl=${encodeURIComponent(returnUrl)}`
|
||||||
console.error(
|
console.error(
|
||||||
"Unautorized in webview, redirecting to: ",
|
"Unautorized in webview, redirecting to: ",
|
||||||
|
|||||||
@@ -46,6 +46,40 @@ const nextConfig = {
|
|||||||
|
|
||||||
return config
|
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() {
|
rewrites() {
|
||||||
return {
|
return {
|
||||||
beforeFiles: [
|
beforeFiles: [
|
||||||
|
|||||||
84
test.js
84
test.js
@@ -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)
|
|
||||||
Reference in New Issue
Block a user