Changements de comportement
Cette page rassemble les changements susceptibles d'affecter une application qui utilise déjà Arrel. Les notes de chaque version se trouvent dans Releases.
1.0.0-rc.1
Ces changements renforcent la sécurité du panneau. Si vous mettez à jour depuis une version antérieure, passez-les en revue un par un.
Un Resource que l'utilisateur ne peut pas lister est fermé
Avant, un modèle sans Policy laissait canCreate(), canEdit() et canDelete() ouverts, et on pouvait les atteindre séparément. Maintenant, si canViewAny() est faux, le Resource répond 403 sur tous les endpoints.
Que faire : rien, si tous vos modèles ont une Policy avec viewAny. Si un Resource n'avait pas de Policy et que vous vouliez qu'il soit accessible, il l'est toujours. Si vous vouliez qu'il ne le soit pas, définissez une Policy.
Les actions sans authorize() exigent le droit de modifier
Une action sur mesure qui ne déclare pas authorize() exige maintenant canEdit() sur l'enregistrement, ou canCreate() si elle est standalone(). Avant, tout utilisateur qui voyait le Resource pouvait l'exécuter.
Que faire : déclarez authorize() sur les actions qui doivent rester ouvertes à plus d'utilisateurs que ceux qui peuvent modifier.
Action::make('export')
->authorize(fn (): bool => auth()->user()->can('posts.export'))Les options des actions ne sont servies qu'à ceux qui peuvent les exécuter
Les options qu'une action offre à ses champs de relation ne sont maintenant servies qu'aux utilisateurs qui peuvent exécuter l'action.
La portée d'un champ Relation s'applique à la sauvegarde
Un champ Relation avec query() refuse maintenant, à la sauvegarde, un enregistrement que la portée masque, avec une erreur de validation. Cela vaut pour les formulaires d'un Resource, d'un Relation manager et d'une action.
Que faire : vérifiez qu'aucun formulaire n'envoie des identifiants que query() exclut, par exemple parce que la valeur vient d'une autre source.
Limites de tentatives
- La connexion admet cinq tentatives échouées par e-mail et adresse. Il y a une nouvelle clé de traduction,
arrel::auth.throttle, avec le message. - Une connexion qui attend le second facteur prend fin après cinq codes incorrects.
- Les envois de fichiers sont limités à 60 par minute et par utilisateur.
Signatures
Action::validationRules() et validationRules() du trait de schema acceptent l'enregistrement propriétaire comme dernier argument facultatif. Si vous remplacez l'une de ces méthodes, ajoutez-y le paramètre.
Corrections pouvant changer un comportement
canEdit()vérifie l'habilitéupdatede la Policy, pasedit.- Un modèle qui bloque sa propre suppression (avec une
RuntimeExceptiondansdeleting) répond 422 au lieu d'échouer. - À la sauvegarde d'un enregistrement, seuls les fichiers réellement envoyés dans le répertoire temporaire sont déplacés.