import { resolveRoleByUserField } from './resolveRoleByUserField';

type UserLike = { role?: string };

/**
 * Gắn roleCode + rolePermissions từ collection roles (theo tên hoặc mã vai trò trên user).
 */
export async function attachUserRoleFields<T extends UserLike>(
  user: T
): Promise<T & { roleCode?: string; rolePermissions: Record<string, boolean> }> {
  const u = user as T & { roleCode?: string; rolePermissions: Record<string, boolean> };
  if (!user?.role) {
    u.roleCode = undefined;
    u.rolePermissions = {};
    return u;
  }
  const role = await resolveRoleByUserField(user.role);
  if (!role) {
    u.roleCode = undefined;
    u.rolePermissions = {};
    return u;
  }
  u.roleCode = role.code;
  u.rolePermissions = { ...(role.permissions || {}) };
  return u;
}
