Benutzerdaten beim Speichern/Bestellen in Tabelle Benutzer speichern
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { API_ACCESS_TOKEN_COOKIE_NAME } from "#lib/constants.js";
|
||||
import { Aufnahme, Objekt } from "#lib/client/prisma.js";
|
||||
import { Aufnahme, Benutzer, Objekt } from "#lib/client/prisma.js";
|
||||
import { api } from "astro-typesafe-api/client";
|
||||
import Cookies from "js-cookie";
|
||||
|
||||
@@ -162,3 +162,31 @@ export async function objektSpeichern(objekt: Objekt & { id?: string }): Promise
|
||||
return id;
|
||||
}
|
||||
}
|
||||
|
||||
export async function benutzerSpeichern(benutzer: Partial<Benutzer>): Promise<string> {
|
||||
const completeBenutzer: Benutzer = {
|
||||
id: benutzer.id,
|
||||
name: benutzer.name ?? null,
|
||||
email: benutzer.email,
|
||||
passwort: benutzer.passwort,
|
||||
adresse: benutzer.adresse ?? null,
|
||||
anrede: benutzer.anrede ?? null,
|
||||
firma: benutzer.firma ?? null,
|
||||
vorname: benutzer.vorname ?? null,
|
||||
ort: benutzer.ort ?? null,
|
||||
plz: benutzer.plz ?? null,
|
||||
profilbild: benutzer.profilbild ?? null,
|
||||
telefon: benutzer.telefon ?? null,
|
||||
updated_at: new Date(),
|
||||
verified: false
|
||||
};
|
||||
|
||||
await api.user.POST.fetch(completeBenutzer
|
||||
, {
|
||||
headers: {
|
||||
Authorization: `Bearer ${Cookies.get(API_ACCESS_TOKEN_COOKIE_NAME)}`
|
||||
}
|
||||
});
|
||||
|
||||
return benutzer.id;
|
||||
}
|
||||
@@ -32,6 +32,8 @@
|
||||
import { getMaximumDevitationInPercent } from "#client/lib/helpers.js";
|
||||
import { endEnergieVerbrauchVerbrauchsausweis_2016_Client } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016_Client.js";
|
||||
import { endEnergieVerbrauchVerbrauchsausweisGewerbe_2016_Client } from "#lib/Berechnungen/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbe_2016_Client.js";
|
||||
import { benutzerSpeichern } from "#client/lib/speichern.js";
|
||||
import { exclude } from "#lib/exclude.js";
|
||||
|
||||
export let user: Partial<BenutzerClient>;
|
||||
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbe | BedarfsausweisWohnen;
|
||||
@@ -249,6 +251,18 @@
|
||||
} else {
|
||||
result = await ausweisSpeichern(ausweis, objekt, aufnahme, bilder, unterlagen, ausweisart)
|
||||
}
|
||||
|
||||
let resultUser: Awaited<ReturnType<typeof benutzerSpeichern>> | Awaited<ReturnType<typeof benutzerSpeichern>> | null = null;
|
||||
|
||||
const benutzerObjekt = exclude({
|
||||
...user,
|
||||
name,
|
||||
vorname,
|
||||
telefon
|
||||
}, ["rolle"]);
|
||||
|
||||
resultUser = await benutzerSpeichern(benutzerObjekt);
|
||||
|
||||
} catch(e) {
|
||||
addNotification({
|
||||
dismissable: true,
|
||||
@@ -312,6 +326,17 @@
|
||||
}
|
||||
}
|
||||
|
||||
let resultUser: Awaited<ReturnType<typeof benutzerSpeichern>> | Awaited<ReturnType<typeof benutzerSpeichern>> | null = null;
|
||||
|
||||
const benutzerObjekt = exclude({
|
||||
...user,
|
||||
name,
|
||||
vorname,
|
||||
telefon
|
||||
}, ["rolle"]);
|
||||
|
||||
resultUser = await benutzerSpeichern(benutzerObjekt);
|
||||
|
||||
if (rechnung && rechnung.status === "paid") {
|
||||
window.location.href = "/dashboard"
|
||||
return;
|
||||
|
||||
@@ -5,7 +5,7 @@ import { adminMiddleware, authorizationMiddleware } from "#lib/middleware/author
|
||||
import { hashPassword } from "#lib/password.js";
|
||||
import { createLexOfficeCustomer } from "#lib/server/lexoffice.js";
|
||||
import { sendRegisterMail } from "#lib/server/mail/registrierung.js";
|
||||
import { prisma } from "#lib/server/prisma.js";
|
||||
import { Benutzer, prisma } from "#lib/server/prisma.js";
|
||||
import { APIError, defineApiRoute } from "astro-typesafe-api/server";
|
||||
import { BenutzerSchema } from "src/generated/zod/benutzer.js";
|
||||
import { z } from "zod";
|
||||
@@ -15,8 +15,7 @@ export const POST = defineApiRoute({
|
||||
id: true,
|
||||
lex_office_id: true,
|
||||
rolle: true,
|
||||
created_at: true,
|
||||
updated_at: true
|
||||
created_at: true
|
||||
}),
|
||||
middleware: authorizationMiddleware,
|
||||
async fetch(input, context, user) {
|
||||
@@ -24,24 +23,28 @@ export const POST = defineApiRoute({
|
||||
// TODO: Email wurde geändert, neue Bestätigunsmail schicken.
|
||||
}
|
||||
|
||||
const updateData: any = {};
|
||||
if (input.adresse) updateData.adresse = input.adresse;
|
||||
if (input.anrede) updateData.anrede = input.anrede;
|
||||
if (input.email) updateData.email = input.email;
|
||||
if (input.firma) updateData.firma = input.firma;
|
||||
if (input.name) updateData.name = input.name;
|
||||
if (input.vorname) updateData.vorname = input.vorname;
|
||||
if (input.ort) updateData.ort = input.ort;
|
||||
// if (input.passwort) updateData.passwort = hashPassword(input.passwort);
|
||||
if (input.plz) updateData.plz = input.plz;
|
||||
if (input.profilbild) updateData.profilbild = input.profilbild;
|
||||
if (input.telefon) updateData.telefon = input.telefon;
|
||||
if (input.verified) updateData.telefon = input.verified;
|
||||
|
||||
await prisma.benutzer.update({
|
||||
where: {
|
||||
id: user.id
|
||||
},
|
||||
data: {
|
||||
adresse: input.adresse,
|
||||
anrede: input.anrede,
|
||||
email: input.email,
|
||||
firma: input.firma,
|
||||
name: input.name,
|
||||
vorname: input.vorname,
|
||||
ort: input.ort,
|
||||
passwort: hashPassword(input.passwort),
|
||||
plz: input.plz,
|
||||
profilbild: input.profilbild,
|
||||
telefon: input.telefon,
|
||||
}
|
||||
})
|
||||
data: updateData
|
||||
});
|
||||
|
||||
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user