Skip to content

Canvis de comportament ​

Aquesta pàgina recull els canvis que poden afectar una aplicació que ja fa servir Arrel. Les notes de cada versió són a Releases.

1.0.0-rc.1 ​

Aquests canvis refermen la seguretat del panell. Si actualitzes des d'una versió anterior, revisa'ls un a un.

Un Resource que l'usuari no pot llistar queda tancat ​

Abans, un model sense Policy deixava canCreate(), canEdit() i canDelete() oberts, i es podien assolir per separat. Ara, si canViewAny() és fals, el Resource respon 403 a tots els endpoints.

Què fer: res, si tots els teus models tenen Policy amb viewAny. Si un Resource no tenia Policy i volies que fos accessible, continua sent-ho. Si volies que no ho fos, defineix una Policy.

Les accions sense authorize() exigeixen permís d'edició ​

Una acció a mida que no declara authorize() ara exigeix canEdit() sobre el registre, o canCreate() si és standalone(). Abans, qualsevol usuari que veiés el Resource la podia executar.

Què fer: declara authorize() a les accions que han de quedar obertes a més usuaris que els que poden editar.

php
Action::make('export')
    ->authorize(fn (): bool => auth()->user()->can('posts.export'))

Les opcions de les accions només es serveixen a qui les pot executar ​

Les opcions que una acció ofereix als seus camps de relació ara només es serveixen als usuaris que poden executar l'acció.

L'abast d'un camp Relation s'aplica en desar ​

Un camp Relation amb query() ara refusa en desar un registre que l'abast amaga, amb un error de validació. Això val als formularis d'un Resource, d'un Relation manager i d'una acció.

Què fer: comprova que cap formulari envia identificadors que query() exclou, per exemple perquè el valor ve d'una altra font.

Límits d'intents ​

  • L'inici de sessió admet cinc intents fallits per correu i adreça. Hi ha una nova clau de traducció, arrel::auth.throttle, amb el missatge.
  • Un inici de sessió que espera el segon factor s'acaba després de cinc codis incorrectes.
  • Les pujades de fitxers estan limitades a 60 per minut i usuari.

Signatures ​

Action::validationRules() i validationRules() del trait d'schema accepten el registre propietari com a darrer argument opcional. Si sobreescrius algun d'aquests mètodes, afegeix-hi el paràmetre.

Correccions que poden canviar un comportament ​

  • canEdit() comprova l'habilitat update de la Policy, no edit.
  • Un model que bloqueja el seu propi esborrat (amb una RuntimeException a deleting) respon 422 en lloc de fallar.
  • En desar un registre, només es mouen els fitxers que realment s'han pujat al directori temporal.