Changed types
This commit is contained in:
@@ -47,7 +47,7 @@ declare module "fastify" {
|
|||||||
user?: {
|
user?: {
|
||||||
user_id: string;
|
user_id: string;
|
||||||
email: string;
|
email: string;
|
||||||
tenant_id?: string;
|
tenant_id?: number;
|
||||||
role?: string;
|
role?: string;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ export default fp(async (server: FastifyInstance) => {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// @ts-ignore
|
||||||
await server.register(swaggerUi, {
|
await server.register(swaggerUi, {
|
||||||
routePrefix: "/docs", // UI erreichbar unter http://localhost:3000/docs
|
routePrefix: "/docs", // UI erreichbar unter http://localhost:3000/docs
|
||||||
swagger: {
|
swagger: {
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
import { FastifyInstance } from "fastify";
|
import { FastifyInstance } from "fastify";
|
||||||
import bcrypt from "bcrypt";
|
import bcrypt from "bcrypt";
|
||||||
import jwt from "jsonwebtoken";
|
|
||||||
import { generateRandomPassword, hashPassword } from "../utils/password"
|
|
||||||
import { sendMail } from "../utils/mailer"
|
|
||||||
|
|
||||||
export default async function authRoutesAuthenticated(server: FastifyInstance) {
|
export default async function authRoutesAuthenticated(server: FastifyInstance) {
|
||||||
server.post("/auth/password/change", {
|
server.post("/auth/password/change", {
|
||||||
@@ -33,6 +31,7 @@ export default async function authRoutesAuthenticated(server: FastifyInstance) {
|
|||||||
|
|
||||||
const user_id = req.user?.user_id; // kommt aus JWT Middleware
|
const user_id = req.user?.user_id; // kommt aus JWT Middleware
|
||||||
if (!user_id) {
|
if (!user_id) {
|
||||||
|
// @ts-ignore
|
||||||
return reply.code(401).send({ error: "Unauthorized" });
|
return reply.code(401).send({ error: "Unauthorized" });
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -44,12 +43,14 @@ export default async function authRoutesAuthenticated(server: FastifyInstance) {
|
|||||||
.single();
|
.single();
|
||||||
|
|
||||||
if (error || !user) {
|
if (error || !user) {
|
||||||
|
// @ts-ignore
|
||||||
return reply.code(404).send({ error: "User not found" });
|
return reply.code(404).send({ error: "User not found" });
|
||||||
}
|
}
|
||||||
|
|
||||||
// Altes Passwort prüfen
|
// Altes Passwort prüfen
|
||||||
const valid = await bcrypt.compare(old_password, user.password_hash);
|
const valid = await bcrypt.compare(old_password, user.password_hash);
|
||||||
if (!valid) {
|
if (!valid) {
|
||||||
|
// @ts-ignore
|
||||||
return reply.code(401).send({ error: "Old password incorrect" });
|
return reply.code(401).send({ error: "Old password incorrect" });
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -68,6 +69,7 @@ export default async function authRoutesAuthenticated(server: FastifyInstance) {
|
|||||||
|
|
||||||
if (updateError) {
|
if (updateError) {
|
||||||
console.log(updateError);
|
console.log(updateError);
|
||||||
|
// @ts-ignore
|
||||||
return reply.code(500).send({ error: "Password update failed" });
|
return reply.code(500).send({ error: "Password update failed" });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ export default async function authRoutes(server: FastifyInstance) {
|
|||||||
const body = req.body as { email: string; password: string };
|
const body = req.body as { email: string; password: string };
|
||||||
|
|
||||||
if (!body.email || !body.password) {
|
if (!body.email || !body.password) {
|
||||||
|
// @ts-ignore
|
||||||
return reply.code(400).send({ error: "Email and password required" });
|
return reply.code(400).send({ error: "Email and password required" });
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,6 +46,7 @@ export default async function authRoutes(server: FastifyInstance) {
|
|||||||
.single();
|
.single();
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
|
// @ts-ignore
|
||||||
return reply.code(400).send({ error: error.message });
|
return reply.code(400).send({ error: error.message });
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,6 +79,7 @@ export default async function authRoutes(server: FastifyInstance) {
|
|||||||
const body = req.body as { email: string; password: string };
|
const body = req.body as { email: string; password: string };
|
||||||
|
|
||||||
if (!body.email || !body.password) {
|
if (!body.email || !body.password) {
|
||||||
|
// @ts-ignore
|
||||||
return reply.code(400).send({ error: "Email and password required" });
|
return reply.code(400).send({ error: "Email and password required" });
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -104,6 +107,7 @@ export default async function authRoutes(server: FastifyInstance) {
|
|||||||
user = (data || []).find(i => i.tenants.find(x => x.id === req.tenant.id))
|
user = (data || []).find(i => i.tenants.find(x => x.id === req.tenant.id))
|
||||||
console.log(user)
|
console.log(user)
|
||||||
if(error) {
|
if(error) {
|
||||||
|
// @ts-ignore
|
||||||
return reply.code(500).send({ error: "Internal Server Error" });
|
return reply.code(500).send({ error: "Internal Server Error" });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -116,11 +120,13 @@ export default async function authRoutes(server: FastifyInstance) {
|
|||||||
user = data
|
user = data
|
||||||
if(error) {
|
if(error) {
|
||||||
console.log(error);
|
console.log(error);
|
||||||
|
// @ts-ignore
|
||||||
return reply.code(500).send({ error: "Internal Server Error" });
|
return reply.code(500).send({ error: "Internal Server Error" });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!user) {
|
if(!user) {
|
||||||
|
// @ts-ignore
|
||||||
return reply.code(401).send({ error: "Invalid credentials" });
|
return reply.code(401).send({ error: "Invalid credentials" });
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
@@ -129,6 +135,7 @@ export default async function authRoutes(server: FastifyInstance) {
|
|||||||
|
|
||||||
const valid = await bcrypt.compare(body.password, user.password_hash);
|
const valid = await bcrypt.compare(body.password, user.password_hash);
|
||||||
if (!valid) {
|
if (!valid) {
|
||||||
|
// @ts-ignore
|
||||||
return reply.code(401).send({ error: "Invalid credentials" });
|
return reply.code(401).send({ error: "Invalid credentials" });
|
||||||
} else {
|
} else {
|
||||||
const token = jwt.sign(
|
const token = jwt.sign(
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ export default async function userRoutes(server: FastifyInstance) {
|
|||||||
server.get("/user/:id", async (req, reply) => {
|
server.get("/user/:id", async (req, reply) => {
|
||||||
const authUser = req.user // kommt aus JWT (user_id + tenant_id)
|
const authUser = req.user // kommt aus JWT (user_id + tenant_id)
|
||||||
|
|
||||||
const {id} = req.params
|
const { id } = req.params as { id?: string }
|
||||||
|
|
||||||
if (!authUser) {
|
if (!authUser) {
|
||||||
return reply.code(401).send({ error: "Unauthorized" })
|
return reply.code(401).send({ error: "Unauthorized" })
|
||||||
|
|||||||
@@ -14,12 +14,14 @@ export default async function bankingRoutes(server: FastifyInstance) {
|
|||||||
console.log(body);
|
console.log(body);
|
||||||
|
|
||||||
const {data,error} = await server.supabase.from("statementallocations").insert({
|
const {data,error} = await server.supabase.from("statementallocations").insert({
|
||||||
|
//@ts-ignore
|
||||||
...body.data,
|
...body.data,
|
||||||
tenant: req.user.tenant_id,
|
tenant: req.user.tenant_id,
|
||||||
}).select()
|
}).select()
|
||||||
|
|
||||||
await insertHistoryItem(server,{
|
await insertHistoryItem(server,{
|
||||||
entity: "bankstatements",
|
entity: "bankstatements",
|
||||||
|
//@ts-ignore
|
||||||
entityId: data.id,
|
entityId: data.id,
|
||||||
action: "created",
|
action: "created",
|
||||||
created_by: req.user.user_id,
|
created_by: req.user.user_id,
|
||||||
|
|||||||
@@ -98,7 +98,8 @@ export default async function fileRoutes(server: FastifyInstance) {
|
|||||||
server.post("/files/download/:id?", async (req, reply) => {
|
server.post("/files/download/:id?", async (req, reply) => {
|
||||||
const { id } = req.params as { id?: string }
|
const { id } = req.params as { id?: string }
|
||||||
|
|
||||||
const ids = req.body?.ids || []
|
const { ids } = req.body as { ids: string[] }
|
||||||
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (id) {
|
if (id) {
|
||||||
@@ -180,8 +181,8 @@ export default async function fileRoutes(server: FastifyInstance) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
server.post("/files/presigned/:id?", async (req, reply) => {
|
server.post("/files/presigned/:id?", async (req, reply) => {
|
||||||
const { id } = req.params as { key: string };
|
const { id } = req.params as { id: string };
|
||||||
const { ids } = req.body as { keys: string[] }
|
const { ids } = req.body as { ids: string[] }
|
||||||
|
|
||||||
if(id) {
|
if(id) {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -3,7 +3,9 @@ import {insertHistoryItem } from "../utils/history"
|
|||||||
import {diffObjects} from "../utils/diff";
|
import {diffObjects} from "../utils/diff";
|
||||||
import {sortData} from "../utils/sort";
|
import {sortData} from "../utils/sort";
|
||||||
|
|
||||||
|
|
||||||
const dataTypes: any[] = {
|
const dataTypes: any[] = {
|
||||||
|
// @ts-ignore
|
||||||
tasks: {
|
tasks: {
|
||||||
isArchivable: true,
|
isArchivable: true,
|
||||||
label: "Aufgaben",
|
label: "Aufgaben",
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ export default async function resourceRoutesSpecial(server: FastifyInstance) {
|
|||||||
return reply.code(400).send({ error: error.message });
|
return reply.code(400).send({ error: error.message });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @ts-ignore
|
||||||
const sorted =sortData(data,sort,asc === "true" ? true : false)
|
const sorted =sortData(data,sort,asc === "true" ? true : false)
|
||||||
|
|
||||||
return sorted;
|
return sorted;
|
||||||
|
|||||||
@@ -81,10 +81,15 @@ export default async function routes(server: FastifyInstance) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let correctedData = data.map(i => {
|
let correctedData = data.map(i => {
|
||||||
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: i.user_id,
|
id: i.user_id,
|
||||||
|
// @ts-ignore
|
||||||
email: i.auth_users.email,
|
email: i.auth_users.email,
|
||||||
|
// @ts-ignore
|
||||||
profile: i.auth_users.auth_profiles.find(x => x.tenant_id === authUser.tenant_id),
|
profile: i.auth_users.auth_profiles.find(x => x.tenant_id === authUser.tenant_id),
|
||||||
|
// @ts-ignore
|
||||||
full_name: i.auth_users.auth_profiles.find(x => x.tenant_id === authUser.tenant_id)?.full_name,
|
full_name: i.auth_users.auth_profiles.find(x => x.tenant_id === authUser.tenant_id)?.full_name,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -18,8 +18,10 @@ const getCreatedDocumentTotal = (item) => {
|
|||||||
totalNet = totalNet + Number(rowPrice)
|
totalNet = totalNet + Number(rowPrice)
|
||||||
|
|
||||||
if(row.taxPercent === 19) {
|
if(row.taxPercent === 19) {
|
||||||
|
// @ts-ignore
|
||||||
total19 = total19 + Number(rowPrice * 0.19)
|
total19 = total19 + Number(rowPrice * 0.19)
|
||||||
} else if(row.taxPercent === 7) {
|
} else if(row.taxPercent === 7) {
|
||||||
|
// @ts-ignore
|
||||||
total7 = total7 + Number(rowPrice * 0.07)
|
total7 = total7 + Number(rowPrice * 0.07)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -168,10 +170,10 @@ export async function buildExportZip(server: FastifyInstance, tenant: number, st
|
|||||||
|
|
||||||
|
|
||||||
let accountData = accounts.find(i => i.id === account.account)
|
let accountData = accounts.find(i => i.id === account.account)
|
||||||
let buschluessel = 9
|
let buschluessel: string = "9"
|
||||||
|
|
||||||
if(account.taxType === '19'){
|
if(account.taxType === '19'){
|
||||||
buschluessel = 9
|
buschluessel = "9"
|
||||||
} else if(account.taxType === 'null') {
|
} else if(account.taxType === 'null') {
|
||||||
buschluessel = ""
|
buschluessel = ""
|
||||||
} else if(account.taxType === '7') {
|
} else if(account.taxType === '7') {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
*/
|
*/
|
||||||
export function sortData<T extends Record<string, any>>(
|
export function sortData<T extends Record<string, any>>(
|
||||||
data: T[],
|
data: T[],
|
||||||
column?: keyof T,
|
column?: keyof T | null,
|
||||||
ascending: boolean = true
|
ascending: boolean = true
|
||||||
): T[] {
|
): T[] {
|
||||||
if (!column) return data
|
if (!column) return data
|
||||||
@@ -27,6 +27,7 @@ export function sortData<T extends Record<string, any>>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Datumsvergleich
|
// Datumsvergleich
|
||||||
|
// @ts-ignore
|
||||||
if (valA instanceof Date && valB instanceof Date) {
|
if (valA instanceof Date && valB instanceof Date) {
|
||||||
return ascending ? valA.getTime() - valB.getTime() : valB.getTime() - valA.getTime()
|
return ascending ? valA.getTime() - valB.getTime() : valB.getTime() - valA.getTime()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user