import { ValueObject } from "@/core/common/domain"; import { Result } from "@/core/common/helpers"; import { z } from "zod"; const RoleSchema = z.enum(["Admin", "User", "Manager", "Editor"]); interface UserRolesProps { value: string[]; } export class UserRoles extends ValueObject { static create(roles: string[]): Result { const result = UserRoles.validate(roles); return result.success ? Result.ok(new UserRoles({ value: result.data })) : Result.fail(new Error("Invalid user roles")); } private static validate(roles: string[]) { return z.array(RoleSchema).safeParse(roles); } hasRole(role: string): boolean { return this.props.value.includes(role); } getValue() { return this.props.value; } }