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.
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'habilitatupdatede la Policy, noedit.- Un model que bloqueja el seu propi esborrat (amb una
RuntimeExceptionadeleting) respon 422 en lloc de fallar. - En desar un registre, només es mouen els fitxers que realment s'han pujat al directori temporal.