Project

General

Profile

Download (5.83 KB) Statistics
| Branch: | Tag: | Revision:
require (Rails.root + 'db/seeds.d/020-permissions_list.rb')

class RolesList
class << self
def seeded_roles
{
Role::MANAGER => { :permissions => base_manage_permissions + view_permissions + manage_organizations_permissions + settings_permissions,
:description => 'Role granting all available permissions. With this role, user is able to do everything that admin can except for changing settings.' },
Role::ORG_ADMIN => { :permissions => base_manage_permissions + view_permissions,
:description => 'Role granting all permissions except for managing organizations. It can be used to delegate administration of specific organization to a user. In order to create such role, clone this role and assign desired organizations' },
Role::SYSTEM_ADMIN => { :permissions => (settings_permissions + manage_organizations_permissions + system_admin_extra_permissions + escalate_roles_permission),
:description => 'Role granting permissions for managing organizations, locations, users, usergroups, auth sources, roles, filters and settings. This is a very powerful role that can potentially gain access to all resources.' },

'Edit partition tables' => { :permissions => [:view_ptables, :create_ptables, :edit_ptables, :destroy_ptables], :description => 'Role granting permissions required for managing partition tables' },
'View hosts' => { :permissions => [:view_hosts],
:description => 'Role granting permission only to view hosts' },
'Edit hosts' => { :permissions => [:view_hosts, :edit_hosts, :create_hosts, :destroy_hosts, :build_hosts],
:description => 'Role granting permissions to update hosts. For features provided by plugins, you might need to combine this role with roles provided by those plugins' },
Role::VIEWER => { :permissions => view_permissions, :description => 'Role granting read only access. Users with this role can see all data but can not do any modifications' },
Role::SITE_MANAGER => { :permissions => [:view_architectures, :view_audit_logs, :view_authenticators, :access_dashboard,
:view_domains, :view_facts, :view_hostgroups, :view_hosts, :view_smart_proxies_puppetca,
:view_smart_proxies_autosign, :create_hosts, :edit_hosts, :destroy_hosts,
:build_hosts, :view_media, :create_media, :edit_media, :destroy_media,
:view_models, :view_operatingsystems, :view_ptables, :view_config_reports, :destroy_config_reports,
:view_smart_proxies, :edit_smart_proxies, :view_subnets, :edit_subnets,
:view_usergroups, :create_usergroups, :edit_usergroups, :destroy_usergroups,
:view_users, :edit_users, :view_realms, :view_mail_notifications,
:view_params, :view_ssh_keys, :view_personal_access_tokens],
:description => 'Role granting mostly view permissions but also permissions required for managing hosts in the infrastructure. Users with this role can update puppet parameters, create and edit hosts, manage installation media, subnets, usergroups and edit existing users.' },
'Bookmarks manager' => { :permissions => [:create_bookmarks, :edit_bookmarks, :destroy_bookmarks],
:description => 'Role granting permissions for managing search bookmarks. Usually useful in combination with Viewer role. This role also grants the permission to update all public bookmarks.' },
'Auditor' => { :permissions => [:view_audit_logs],
:description => 'Role granting permission to view only the Audit log and nothing else.',
},
}
end

def default_role
{
'Default role' => { permissions: [],
description: 'Role that is automatically assigned to every user in the system. Adding a permission grants it to everybody',
},
}
end

def roles
seeded_roles.merge default_role
end

def role_names
roles.map { |name, permissions| name }
end

def base_manage_permissions
PermissionsList.permissions.reject { |resource, name| name.start_with?('view_') }
.map { |p| p.last.to_sym } - manage_organizations_permissions - role_managements_permissions - settings_permissions - escalate_roles_permission
end

def manage_organizations_permissions
[
:create_organizations, :destroy_organizations
]
end

def escalate_roles_permission
[:escalate_roles]
end

def system_admin_extra_permissions
[
:view_organizations, :edit_organizations, :assign_organizations,
:view_locations, :edit_locations, :assign_locations, :create_locations, :destroy_locations,
:view_users, :create_users, :edit_users, :destroy_users,
:view_usergroups, :create_usergroups, :edit_usergroups, :destroy_usergroups,
:view_roles, :create_roles, :edit_roles, :destroy_roles,
:view_authenticators, :create_authenticators, :edit_authenticators, :destroy_authenticators,
:view_filters, :create_filters, :edit_filters, :destroy_filters
]
end

def role_managements_permissions
[
:create_roles, :edit_roles, :destroy_roles,
:create_filters, :edit_filters, :destroy_filters
]
end

def view_permissions
PermissionsList.permissions.select { |resource, name| name.start_with?('view_') && name != 'view_settings' }.map { |p| p.last.to_sym }
end

def settings_permissions
[:view_settings, :edit_settings]
end
end
end
(3-3/20)