Module: Ruolo::Models::User
- Defined in:
- lib/ruolo/models/user.rb
Overview
A mixin to include in downstream user classes that adds useful helper methods for dealing with roles and permissions.
Instance Method Summary collapse
-
#permission?(permission) ⇒ Boolean
Given the name of a permission determine whether the user’s role membership includes it.
-
#role?(role) ⇒ Boolean
Given a role name or array of role names determine if the user has that/those roles.
-
#set_roles(wanted_roles) ⇒ void
Given a set of all roles that the user should have add/remove roles as necessary.
Instance Method Details
#permission?(permission) ⇒ Boolean
Given the name of a permission determine whether the user’s role membership includes it.
27 28 29 |
# File 'lib/ruolo/models/user.rb', line 27 def () roles.map { |role| role..map(&:name) }.flatten.uniq.include?() end |
#role?(role) ⇒ Boolean
Given a role name or array of role names determine if the user has that/those roles.
36 37 38 |
# File 'lib/ruolo/models/user.rb', line 36 def role?(role) !(roles.map(&:name) & Array(role)).empty? end |
#set_roles(wanted_roles) ⇒ void
This method returns an undefined value.
Given a set of all roles that the user should have add/remove roles as necessary.
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/ruolo/models/user.rb', line 45 def set_roles(wanted_roles) current_roles = roles.map(&:name) remove = current_roles.reject { |r| wanted_roles.include?(r) } add = wanted_roles.reject { |r| current_roles.include?(r) } Ruolo.configuration.connection.transaction do remove.each do |role| remove_role(Ruolo::Models::Role.where(name: role).first) end add.each do |role| add_role(Ruolo::Models::Role.where(name: role).first) end end end |