kan
kan copied to clipboard
PoC: plugins
We can use kan not only roles and user. Also, same interface is good for working with permissions, experiments and etc.
That's why we can start use plugin system for helping use kan with other areas.
I have no idea how it should look like, but we can start discussion and find what the best way for this.
My general points around plugin system:
- Easy integrate outside core code (plugin container can help here, I think)
- Ability to use different plugins with different instances of library
Also, we can move callbacks and notifications to plugins too
API ideas
Kan::Plugin.register(:roles) { Kan::Plugin::Roles }
Kan::Plugin.register(:custom) { CustomKanPlugin }
class Post::Abilities
include Kan::Abilities
extend Kan::Plugin[:roles]
register('read') { |_, _| true }
register('edit') { |user, post| user.id == post.user_id }
register('delete') { |_, _| false }
end
cc @IvanShamatov @apotonick