feat: add supertokens
This commit is contained in:
20
modules/workspace/routes/workspaces/create/handle.ts
Normal file
20
modules/workspace/routes/workspaces/create/handle.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import { ForbiddenError } from "@platform/relay";
|
||||
|
||||
import { Workspace } from "../../../aggregates/workspace.ts";
|
||||
import { eventStore } from "../../../event-store.ts";
|
||||
import route from "./spec.ts";
|
||||
|
||||
export default route.access("session").handle(async ({ body: { name } }, { access, principal }) => {
|
||||
const decision = await access.isAllowed({ kind: "workspace", id: "1", attr: {} }, "create");
|
||||
if (decision === false) {
|
||||
return new ForbiddenError("You do not have permission to create workspaces.");
|
||||
}
|
||||
const workspace = await eventStore.aggregate.from(Workspace).create(principal.id, name).save();
|
||||
return {
|
||||
id: workspace.id,
|
||||
ownerId: workspace.ownerId,
|
||||
name: workspace.name,
|
||||
createdAt: workspace.createdAt,
|
||||
createdBy: principal.id,
|
||||
};
|
||||
});
|
||||
14
modules/workspace/routes/workspaces/create/spec.ts
Normal file
14
modules/workspace/routes/workspaces/create/spec.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import { ForbiddenError, InternalServerError, route, UnauthorizedError, ValidationError } from "@platform/relay";
|
||||
import z from "zod";
|
||||
|
||||
import { WorkspaceSchema } from "../../../models/workspace.ts";
|
||||
|
||||
export default route
|
||||
.post("/api/v1/workspace")
|
||||
.body(
|
||||
z.strictObject({
|
||||
name: z.string(),
|
||||
}),
|
||||
)
|
||||
.errors([UnauthorizedError, ForbiddenError, ValidationError, InternalServerError])
|
||||
.response(WorkspaceSchema);
|
||||
Reference in New Issue
Block a user