42 lines
1.5 KiB
TypeScript
42 lines
1.5 KiB
TypeScript
import { FastifyRequest, FastifyReply, FastifyInstance } from 'fastify';
|
|
import { publicLinkService } from '../../modules/publiclinks.service';
|
|
|
|
|
|
export default async function publiclinksAuthenticatedRoutes(server: FastifyInstance) {
|
|
server.post("/publiclinks", async (req, reply) => {
|
|
try {
|
|
const tenantId = 21; // Hardcoded für Test, später: req.user.tenantId
|
|
|
|
const { name, isProtected, pin, customToken, config, defaultProfileId } = req.body as { name:string, isProtected:boolean, pin:string, customToken:string, config:Object, defaultProfileId:string};
|
|
|
|
const newLink = await publicLinkService.createLink(server, tenantId,
|
|
name,
|
|
isProtected,
|
|
pin,
|
|
customToken,
|
|
config,
|
|
defaultProfileId);
|
|
|
|
return reply.code(201).send({
|
|
success: true,
|
|
data: {
|
|
id: newLink.id,
|
|
token: newLink.token,
|
|
fullUrl: `/public/${newLink.token}`, // Helper für Frontend
|
|
isProtected: newLink.isProtected
|
|
}
|
|
});
|
|
|
|
} catch (error: any) {
|
|
server.log.error(error);
|
|
|
|
// Einfache Fehlerbehandlung
|
|
if (error.message.includes("bereits vergeben")) {
|
|
return reply.code(409).send({ error: error.message });
|
|
}
|
|
|
|
return reply.code(500).send({ error: "Fehler beim Erstellen des Links", details: error.message });
|
|
}
|
|
})
|
|
}
|