Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module Post
- class AnonymousAbilities
- include Kan::Abilities
- role(:anonymous) do |user, _|
- user.id.nil?
- end
- register(:read) { [] }
- end
- class BaseAbilities
- include Kan::Abilities
- role(:all) do |_, _|
- !!user.id
- end
- register(:read) { |user, repo| repo.all_with_limit(user) }
- end
- class PayedUserAbilities
- include Kan::Abilities
- role(:author) do |user, post|
- !!user.id and user.payed
- end
- register(:read) { |user, repo| repo.all(user) }
- end
- end
- abilities = Kan::Application.new(
- post: [Post::AnonymousAbilities.new, Post::BaseAbilities.new, Post::PayedUserAbilities.new]
- )
- abilities['post.read'].call(anonymous, post) # => []
- abilities['post.read'].call(regular, post) # => [5 items]
- abilities['post.read'].call(payed, post) # => [all items]
Add Comment
Please, Sign In to add comment