Guest User

Untitled

a guest
Apr 26th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.81 KB | None | 0 0
  1. module Post
  2. class AnonymousAbilities
  3. include Kan::Abilities
  4.  
  5. role(:anonymous) do |user, _|
  6. user.id.nil?
  7. end
  8.  
  9. register(:read) { [] }
  10. end
  11.  
  12. class BaseAbilities
  13. include Kan::Abilities
  14.  
  15. role(:all) do |_, _|
  16. !!user.id
  17. end
  18.  
  19. register(:read) { |user, repo| repo.all_with_limit(user) }
  20. end
  21.  
  22.  
  23. class PayedUserAbilities
  24. include Kan::Abilities
  25.  
  26. role(:author) do |user, post|
  27. !!user.id and user.payed
  28. end
  29.  
  30. register(:read) { |user, repo| repo.all(user) }
  31. end
  32. end
  33.  
  34. abilities = Kan::Application.new(
  35. post: [Post::AnonymousAbilities.new, Post::BaseAbilities.new, Post::PayedUserAbilities.new]
  36. )
  37.  
  38. abilities['post.read'].call(anonymous, post) # => []
  39. abilities['post.read'].call(regular, post) # => [5 items]
  40. abilities['post.read'].call(payed, post) # => [all items]
Add Comment
Please, Sign In to add comment