Project

General

Profile

« Previous | Next » 

Revision 9b33f22f

Added by Lukas Zapletal almost 9 years ago

Fixes #11206 - plugin API now expose default role permissions

(cherry picked from commit 758d57a3c067dbd07f5bfbd66617b6865dab9d66)

View differences:

app/services/foreman/plugin.rb
end
def_field :name, :description, :url, :author, :author_url, :version, :path
attr_reader :id, :logging
attr_reader :id, :logging, :default_roles
def initialize(id)
@id = id.to_sym
@logging = Plugin::Logging.new(@id)
@default_roles = {}
end
def after_initialize
......
# Add a new role if it doesn't exist
def role(name, permissions)
return false if pending_migrations
@default_roles[name] = permissions
return false if pending_migrations || Rails.env.test?
Role.transaction do
role = Role.find_or_create_by_name(name)
lib/tasks/plugins.rake
desc "List Installed plugins"
task :plugins => :environment do
puts 'Collecting plugin information'
Foreman::Plugin.all.map{ |p| puts p.to_s }
namespace :plugin do
desc "List Installed plugins"
task :list => :environment do
puts 'Collecting plugin information'
Foreman::Plugin.all.map{ |p| puts p.to_s }
end
desc 'Validate permissions for built-in roles'
task :validate_roles => :environment do
Foreman::Plugin.all.each do |plugin|
plugin.default_roles.each do |role, expected_perms|
actual_perms = Role.find_by_name(role).permissions.collect(&:name).collect(&:to_sym)
missing = actual_perms - expected_perms
puts "Role '#{role}' is missing permissions #{missing.inspect}" unless missing.empty?
end
end
end
end

Also available in: Unified diff