Saltar al contenido

Capabilities por plataforma

El modelo de la fase V tiene una dimensión más cuando hay cinco sistemas: permisos que solo existen en algunos, y ventanas que no existen en otros.

Qué cambia

Cómo se organiza

Tauri permite declarar en cada capability para qué plataformas vale, y eso resuelve el problema sin duplicar:

JSON
{  "identifier": "escritorio-procesos",  "platforms": ["macOS", "windows", "linux"],  "windows": ["main"],  "permissions": ["shell:allow-execute"]}

Y la ventaja de esta separación es de seguridad: un permiso de ejecución de procesos declarado solo para escritorio no existe en móvil, así que ni siquiera se puede intentar usarlo ahí.

La superficie, ahora por cinco

Y la consecuencia que merece atención: la cuenta del nivel 26.3 se hace por plataforma.

  • Cada plataforma tiene su superficie, que es la suma de lo común más lo suyo.
  • Y las auditorías del nivel 33 se hacen sobre cada una.
  • Con un matiz que ayuda: móvil suele tener menos superficie, porque no puede lanzar procesos ni tocar ficheros libremente. Nivel 62.5.

Lo que hay que evitar es lo contrario: poner en la capability común un permiso que solo hace falta en una plataforma, porque entonces está en las cinco.

Lo que solo existe en una

Y el caso que hay que manejar con cuidado: una función que solo existe en una plataforma.

  • En el core: compilación condicional, con la función entera bajo condición. Nivel 66.3.
  • En las capabilities: declarada solo para esa plataforma.
  • Y en la interfaz: no mostrarla donde no exista, en vez de mostrarla y que falle.

Los tres tienen que estar de acuerdo. Un comando condicional cuya opción sigue apareciendo en el menú de otra plataforma produce un botón que falla — el error del nivel 67.1, regla cuatro.