feat(auth): add sign-in/sign-up/sign-out controllers with Zod validation
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
import { z } from "zod";
|
||||
|
||||
import { InputParseError } from "../../entities/errors";
|
||||
import type { Cookie } from "../../entities/cookie";
|
||||
import { signInUseCase } from "../../application/use-cases/sign-in.use-case";
|
||||
|
||||
const inputSchema = z.object({
|
||||
username: z.string().min(3).max(31),
|
||||
password: z.string().min(6).max(255),
|
||||
});
|
||||
|
||||
export async function signInController(
|
||||
input: Partial<z.infer<typeof inputSchema>>,
|
||||
): Promise<Cookie> {
|
||||
const parsed = inputSchema.safeParse(input);
|
||||
if (!parsed.success) {
|
||||
throw new InputParseError("Invalid sign-in input", { cause: parsed.error });
|
||||
}
|
||||
const { cookie } = await signInUseCase(parsed.data);
|
||||
return cookie;
|
||||
}
|
||||
Reference in New Issue
Block a user