Revision 9b33f22f
Added by Lukas Zapletal almost 9 years ago
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
Fixes #11206 - plugin API now expose default role permissions
(cherry picked from commit 758d57a3c067dbd07f5bfbd66617b6865dab9d66)