// lib/utils/invite-code.ts import crypto from "crypto" /** * Gera um código de convite único * Formato: cmhrtjzk6001jox4z9dzb5al */ export function generateInviteCode(): string { return crypto .randomBytes(16) .toString("base64") .replace(/[^a-z0-9]/gi, "") .toLowerCase() .substring(0, 24) } /** * Valida formato do código de convite */ export function isValidInviteCode(code: string): boolean { return /^[a-z0-9]{24}$/.test(code) } /** * Gera slug único para workspace * Formato: employee-name-manager-name-xyz123 */ export function generateWorkspaceSlug(employeeName: string, managerName: string): string { const slugify = (text: string) => text .toLowerCase() .normalize("NFD") .replace(/[\u0300-\u036f]/g, "") .replace(/[^a-z0-9]+/g, "-") .replace(/^-+|-+$/g, "") .substring(0, 20) const random = crypto.randomBytes(3).toString("hex") return `${slugify(employeeName)}-${slugify(managerName)}-${random}` }