module Ruolo::Models::User
A mixin to include in downstream user classes that adds useful helper methods for dealing with roles and permissions.
Public Instance Methods
permission?(permission)
click to toggle source
Given the name of a permission determine whether the user's role membership includes it.
@param permission [String] the name of the permission @return [Boolean] if the user has the permission or not
# File lib/ruolo/models/user.rb, line 27 def permission?(permission) roles.map { |role| role.permissions.map(&:name) }.flatten.uniq.include?(permission) end
role?(role)
click to toggle source
Given a role name or array of role names determine if the user has that/those roles.
@param role [String|Array<String>] role(s) to check @return [Boolean] if the user has the given role(s)
# File lib/ruolo/models/user.rb, line 36 def role?(role) !(roles.map(&:name) & Array(role)).empty? end
set_roles(wanted_roles)
click to toggle source
Given a set of all roles that the user should have add/remove roles as necessary.
@param wanted_roles [Array<String>] list of role names @return [void]
# 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