Qualcosa che ho riscontrato alcune volte durante la creazione di plugin è la necessità di modificare l’esito dei controlli can_* di Guardian. L’ho riscontrato di nuovo nel plugin ActivityPub:
Ho appena sollevato una bozza di PR che aggiunge un nuovo metodo API lato server che consente di registrare controlli prima e dopo i metodi can_* di guardian, offrendo la possibilità di modificare l’esito del metodo. Ad esempio:
add_guardian_check(:before, :edit_post) do |guardian, result, post|
!post.activity_pub_remote?
end
Sono curioso di ricevere feedback sia sull’approccio che sull’esecuzione prima di pubblicarlo per la revisione.
Non vedo problemi con la registrazione before_*. La registrazione after_* è un po’ più complicata. Dal punto di vista della sicurezza, la registrazione after_* significa che i plugin possono sovrascrivere il core in modi che potrebbero essere non sicuri. Ovviamente i plugin possono farlo in molti modi, ma l’API dei plugin non dovrebbe facilitarlo ulteriormente.
Inoltre, cosa succede se più plugin consumano l’hook after_*? Quale vince?