Changes
This commit is contained in:
94
src/routes/admin.ts
Normal file
94
src/routes/admin.ts
Normal file
@@ -0,0 +1,94 @@
|
||||
import { FastifyInstance } from "fastify";
|
||||
|
||||
export default async function adminRoutes(server: FastifyInstance) {
|
||||
server.post("/admin/add-user-to-tenant", async (req, reply) => {
|
||||
const body = req.body as {
|
||||
user_id: string;
|
||||
tenant_id: string;
|
||||
role?: string;
|
||||
mode?: "single" | "multi";
|
||||
};
|
||||
|
||||
if (!body.user_id || !body.tenant_id) {
|
||||
return reply.code(400).send({ error: "user_id and tenant_id required" });
|
||||
}
|
||||
|
||||
// Default: "multi"
|
||||
const mode = body.mode ?? "multi";
|
||||
|
||||
if (mode === "single") {
|
||||
// Erst alle alten Verknüpfungen löschen
|
||||
await server.supabase
|
||||
.from("auth_tenant_users")
|
||||
.delete()
|
||||
.eq("user_id", body.user_id);
|
||||
}
|
||||
|
||||
const { error } = await server.supabase
|
||||
.from("auth_tenant_users")
|
||||
.insert({
|
||||
tenant_id: body.tenant_id,
|
||||
user_id: body.user_id,
|
||||
role: body.role ?? "member",
|
||||
});
|
||||
|
||||
if (error) {
|
||||
return reply.code(400).send({ error: error.message });
|
||||
}
|
||||
|
||||
// Neuen Eintrag setzen
|
||||
|
||||
|
||||
return { success: true, mode };
|
||||
});
|
||||
|
||||
/**
|
||||
* Alle Tenants eines Users abfragen
|
||||
*/
|
||||
server.get("/admin/user-tenants/:user_id", async (req, reply) => {
|
||||
const { user_id } = req.params as { user_id: string };
|
||||
|
||||
if (!user_id) {
|
||||
return reply.code(400).send({ error: "user_id required" });
|
||||
}
|
||||
|
||||
const {data:user, error: userError} = await server.supabase.from("auth_users").select("*,tenants(*)").eq("id", user_id).single();
|
||||
|
||||
console.log(userError)
|
||||
console.log(user)
|
||||
|
||||
if(!user) {
|
||||
return reply.code(400).send({ error: "faulty user_id presented" });
|
||||
} else {
|
||||
return { user_id, tenants: user.tenants };
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
/**
|
||||
* Alle User eines Tenants abfragen
|
||||
* TODO: Aktuell nur Multi Tenant
|
||||
*/
|
||||
/*server.get("/admin/tenant-users/:tenant_id", async (req, reply) => {
|
||||
const { tenant_id } = req.params as { tenant_id: string };
|
||||
|
||||
if (!tenant_id) {
|
||||
return reply.code(400).send({ error: "tenant_id required" });
|
||||
}
|
||||
|
||||
const { data, error } = await server.supabase
|
||||
.from("auth_tenant_users")
|
||||
.select(`
|
||||
user_id,
|
||||
role,
|
||||
users ( id, email, created_at )
|
||||
`)
|
||||
.eq("tenant_id", tenant_id);
|
||||
|
||||
if (error) {
|
||||
return reply.code(400).send({ error: error.message });
|
||||
}
|
||||
|
||||
return { tenant_id, users: data };
|
||||
});*/
|
||||
}
|
||||
Reference in New Issue
Block a user