# Guardian: проверка API до и после

**URL:** <https://meta.discourse.org/t/guardian-before-and-after-checks-api/307241>\
**Category:** Development\
**Created:** [08.Май.2024 11:53:23 UTC](https://meta.discourse.org/t/guardian-before-and-after-checks-api/307241 "2024-05-08T11:53:23Z")\
**Posts on this page:** 1\
**Showing post:** 4

<div class="post-metadata">

**Author:** ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)\
**Post date:** [29.Июль.2024 08:02:46 UTC](https://meta.discourse.org/t/guardian-before-and-after-checks-api/307241/4 "2024-07-29T08:02:46Z")

</div>

> [@pmusaraj](#):
>
> С точки зрения безопасности регистрация `after_*` означает, что плагины могут переопределять ядро способами, которые могут быть небезопасными. Очевидно, что плагины могут делать это множеством способов, но API плагинов не должен ещё больше этому способствовать.

Да, я понимаю, что вы имеете в виду.

> [@pmusaraj](#):
>
> Также, что произойдёт, если несколько плагинов обработают хук `after_*`? Кто победит?

Проверки принимают аргумент приоритета. См. эту спецификацию:

```plaintext
it "respects check priority" do
  plugin.add_guardian_check(:after, :edit_post, 2) { false }
  plugin.add_guardian_check(:after, :edit_post, 0) { true }
  plugin.add_guardian_check(:after, :edit_post, 1) { false }
  expect(Guardian.new(user).can_edit_post?(post)).to be_truthy
end

```

Как насчёт того, чтобы ограничить этот PR только проверками `before`? Это решит текущие задачи и немного уменьшит количество переменных в игре.

---

_[View the full topic](https://meta.discourse.org/t/guardian-before-and-after-checks-api/307241)._
