Kundendaten Rechnung Typ Aktualisiert
This commit is contained in:
42
src/lib/server/validateAccessToken.ts
Normal file
42
src/lib/server/validateAccessToken.ts
Normal file
@@ -0,0 +1,42 @@
|
||||
import { createCaller } from "#lib/caller";
|
||||
import { API_ACCESS_TOKEN_COOKIE_NAME, API_REFRESH_TOKEN_COOKIE_NAME } from "#lib/constants";
|
||||
import type { AstroGlobal } from "astro";
|
||||
import moment from "moment";
|
||||
|
||||
|
||||
export async function validateAccessTokenServer(astro: Readonly<AstroGlobal<Record<string, any>>>) {
|
||||
const accessToken = astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME).value;
|
||||
const refreshToken = astro.cookies.get(API_REFRESH_TOKEN_COOKIE_NAME).value;
|
||||
|
||||
if (accessToken) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Wir haben keinen Access Token mehr, vielleicht ist dieser ausgelaufen.
|
||||
// Schauen wir mal, ob wir einen Refresh Token haben.
|
||||
|
||||
if (!refreshToken) {
|
||||
// Wir haben keinen Refresh Token, also müssen wir uns neu anmelden.
|
||||
return false;
|
||||
}
|
||||
|
||||
// Wir haben einen Refresh Token, also versuchen wir uns damit anzumelden.
|
||||
// Wenn das klappt, dann haben wir auch einen neuen Access Token.
|
||||
// Wenn das nicht klappt, dann müssen wir uns neu anmelden.
|
||||
try {
|
||||
const { accessToken: newAccessToken, exp } = await createCaller(astro).v1.benutzer.getAccessToken({
|
||||
refreshToken
|
||||
})
|
||||
|
||||
astro.cookies.set(API_ACCESS_TOKEN_COOKIE_NAME, newAccessToken, {
|
||||
domain: `.${astro.url.host}`,
|
||||
path: "/",
|
||||
expires: moment.unix(exp).toDate()
|
||||
});
|
||||
return true;
|
||||
} catch (e) {
|
||||
astro.cookies.delete(API_ACCESS_TOKEN_COOKIE_NAME);
|
||||
astro.cookies.delete(API_REFRESH_TOKEN_COOKIE_NAME);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1,83 +0,0 @@
|
||||
import Cookies from "js-cookie";
|
||||
import { API_ACCESS_TOKEN_COOKIE_NAME, API_REFRESH_TOKEN_COOKIE_NAME } from "./constants";
|
||||
import { client } from "src/trpc";
|
||||
import { AstroCookies, AstroGlobal } from "astro";
|
||||
import { createCaller } from "./caller";
|
||||
|
||||
export async function validateAccessTokenServer(astro: Readonly<AstroGlobal<Record<string, any>>>) {
|
||||
const accessToken = astro.cookies.get(API_ACCESS_TOKEN_COOKIE_NAME).value;
|
||||
const refreshToken = astro.cookies.get(API_REFRESH_TOKEN_COOKIE_NAME).value;
|
||||
|
||||
if (accessToken) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Wir haben keinen Access Token mehr, vielleicht ist dieser ausgelaufen.
|
||||
// Schauen wir mal, ob wir einen Refresh Token haben.
|
||||
|
||||
if (!refreshToken) {
|
||||
// Wir haben keinen Refresh Token, also müssen wir uns neu anmelden.
|
||||
return false;
|
||||
}
|
||||
|
||||
// Wir haben einen Refresh Token, also versuchen wir uns damit anzumelden.
|
||||
// Wenn das klappt, dann haben wir auch einen neuen Access Token.
|
||||
// Wenn das nicht klappt, dann müssen wir uns neu anmelden.
|
||||
try {
|
||||
const { accessToken: newAccessToken, exp } = await createCaller(astro).v1.benutzer.getAccessToken.query({
|
||||
refreshToken
|
||||
})
|
||||
|
||||
const options = {
|
||||
domain: `.${window.location.hostname}`,
|
||||
path: "/",
|
||||
expires: exp
|
||||
}
|
||||
|
||||
astro.cookies.set(API_ACCESS_TOKEN_COOKIE_NAME, newAccessToken, options);
|
||||
return true;
|
||||
} catch (e) {
|
||||
astro.cookies.delete(API_ACCESS_TOKEN_COOKIE_NAME);
|
||||
astro.cookies.delete(API_REFRESH_TOKEN_COOKIE_NAME);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
export async function validateAccessTokenClient() {
|
||||
const accessToken = Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME);
|
||||
const refreshToken = Cookies.get(API_REFRESH_TOKEN_COOKIE_NAME);
|
||||
|
||||
if (accessToken) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Wir haben keinen Access Token mehr, vielleicht ist dieser ausgelaufen.
|
||||
// Schauen wir mal, ob wir einen Refresh Token haben.
|
||||
|
||||
if (!refreshToken) {
|
||||
// Wir haben keinen Refresh Token, also müssen wir uns neu anmelden.
|
||||
return false;
|
||||
}
|
||||
|
||||
// Wir haben einen Refresh Token, also versuchen wir uns damit anzumelden.
|
||||
// Wenn das klappt, dann haben wir auch einen neuen Access Token.
|
||||
// Wenn das nicht klappt, dann müssen wir uns neu anmelden.
|
||||
try {
|
||||
const { accessToken: newAccessToken, exp } = await client.v1.benutzer.getAccessToken.query({
|
||||
refreshToken
|
||||
})
|
||||
|
||||
const options = {
|
||||
domain: `.${window.location.hostname}`,
|
||||
path: "/",
|
||||
expires: exp
|
||||
}
|
||||
|
||||
Cookies.set(API_ACCESS_TOKEN_COOKIE_NAME, newAccessToken, options);
|
||||
return true;
|
||||
} catch (e) {
|
||||
Cookies.remove(API_ACCESS_TOKEN_COOKIE_NAME);
|
||||
Cookies.remove(API_REFRESH_TOKEN_COOKIE_NAME);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
43
src/lib/validateAccessTokenServer.ts
Normal file
43
src/lib/validateAccessTokenServer.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
import Cookies from "js-cookie";
|
||||
import { API_ACCESS_TOKEN_COOKIE_NAME, API_REFRESH_TOKEN_COOKIE_NAME } from "./constants";
|
||||
import { client } from "src/trpc";
|
||||
|
||||
|
||||
export async function validateAccessTokenClient() {
|
||||
const accessToken = Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME);
|
||||
const refreshToken = Cookies.get(API_REFRESH_TOKEN_COOKIE_NAME);
|
||||
|
||||
if (accessToken) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Wir haben keinen Access Token mehr, vielleicht ist dieser ausgelaufen.
|
||||
// Schauen wir mal, ob wir einen Refresh Token haben.
|
||||
|
||||
if (!refreshToken) {
|
||||
// Wir haben keinen Refresh Token, also müssen wir uns neu anmelden.
|
||||
return false;
|
||||
}
|
||||
|
||||
// Wir haben einen Refresh Token, also versuchen wir uns damit anzumelden.
|
||||
// Wenn das klappt, dann haben wir auch einen neuen Access Token.
|
||||
// Wenn das nicht klappt, dann müssen wir uns neu anmelden.
|
||||
try {
|
||||
const { accessToken: newAccessToken, exp } = await client.v1.benutzer.getAccessToken.query({
|
||||
refreshToken
|
||||
})
|
||||
|
||||
const options = {
|
||||
domain: `.${window.location.hostname}`,
|
||||
path: "/",
|
||||
expires: exp
|
||||
}
|
||||
|
||||
Cookies.set(API_ACCESS_TOKEN_COOKIE_NAME, newAccessToken, options);
|
||||
return true;
|
||||
} catch (e) {
|
||||
Cookies.remove(API_ACCESS_TOKEN_COOKIE_NAME);
|
||||
Cookies.remove(API_REFRESH_TOKEN_COOKIE_NAME);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user