// La aplicación decide los permisos, nunca el texto del modelo. function authorize(action, role) { const allowed = role === "reader" ? ["read_public"] : []; if (!allowed.includes(action)) throw new Error("Acción no autorizada"); return true; } authorize("read_public", "reader"); console.log("Lectura autorizada"); try { authorize("delete_database", "reader"); throw new Error("Fallo en el control de permisos"); } catch (error) { if (error.message !== "Acción no autorizada") throw error; console.log("Acción peligrosa bloqueada"); }