Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PoC: plugins #34

Open
davydovanton opened this issue Oct 11, 2018 · 1 comment
Open

PoC: plugins #34

davydovanton opened this issue Oct 11, 2018 · 1 comment
Labels
enhancement ideas ideas and thinking for next release question

Comments

@davydovanton
Copy link
Owner

davydovanton commented Oct 11, 2018

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:

  1. Easy integrate outside core code (plugin container can help here, I think)
  2. 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
@davydovanton
Copy link
Owner Author

cc @IvanShamatov @apotonick

@davydovanton davydovanton added enhancement question ideas ideas and thinking for next release labels Dec 18, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement ideas ideas and thinking for next release question
Projects
None yet
Development

No branches or pull requests

1 participant