Module: EasyAdmin::Permissions

Extended by:
ActiveSupport::Autoload
Defined in:
lib/easy_admin/permissions.rb,
lib/easy_admin/permissions/dsl.rb,
lib/easy_admin/permissions/models.rb,
lib/easy_admin/permissions/role_dsl.rb,
lib/easy_admin/permissions/component.rb,
lib/easy_admin/permissions/controller.rb,
lib/easy_admin/permissions/configuration.rb,
lib/easy_admin/permissions/role_definition.rb,
lib/easy_admin/permissions/user_extensions.rb,
lib/easy_admin/permissions/resource_permissions.rb,
lib/easy_admin/permissions/role_denied_component.rb,
lib/easy_admin/permissions/permission_denied_component.rb,
lib/generators/easy_admin/permissions/install_generator.rb,
lib/generators/easy_admin/permissions/templates/models/role.rb,
lib/generators/easy_admin/permissions/templates/models/user_role.rb,
lib/generators/easy_admin/permissions/templates/models/permission.rb,
app/components/easy_admin/permissions/user_role_assignment_component.rb,
app/components/easy_admin/permissions/user_role_permissions_component.rb,
lib/generators/easy_admin/permissions/templates/models/role_permission.rb

Defined Under Namespace

Modules: Component, Controller, Generators, Models, UserExtensions Classes: Configuration, DSL, Permission, PermissionDeniedComponent, ResourcePermissions, Role, RoleDSL, RoleDefinition, RoleDeniedComponent, RolePermission, RolePermissionDSL, UserRole, UserRoleAssignmentComponent, UserRolePermissionsComponent

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configurationObject



23
24
25
# File 'lib/easy_admin/permissions.rb', line 23

def configuration
  @configuration ||= Configuration.new
end

.role_definitionsObject

Get defined roles



51
52
53
# File 'lib/easy_admin/permissions.rb', line 51

def role_definitions
  @role_definitions ||= RoleDSL.new
end

Class Method Details

.actions_for_resource(resource_name) ⇒ Object

Get actions for a specific resource



92
93
94
# File 'lib/easy_admin/permissions.rb', line 92

def actions_for_resource(resource_name)
  ResourcePermissions.actions_for_resource(resource_name)
end

.authorized?(user, permission_name, context: nil) ⇒ Boolean

Core permission check - used by Action Policy policies

Returns:

  • (Boolean)


66
67
68
69
70
71
# File 'lib/easy_admin/permissions.rb', line 66

def authorized?(user, permission_name, context: nil)
  return true unless enabled?
  return true if user.id == 1
  
  user&.has_permission?(permission_name, context: context) || false
end

.available_resourcesObject

Get available EasyAdmin resources



87
88
89
# File 'lib/easy_admin/permissions.rb', line 87

def available_resources
  ResourcePermissions.available_resources
end

.available_rolesObject

Get all available roles



56
57
58
# File 'lib/easy_admin/permissions.rb', line 56

def available_roles
  role_definitions.all_roles
end

.configure {|configuration| ... } ⇒ Object

Yields:



27
28
29
# File 'lib/easy_admin/permissions.rb', line 27

def configure
  yield(configuration)
end

.define(&block) ⇒ Object

Main method to define permissions and roles



37
38
39
40
41
# File 'lib/easy_admin/permissions.rb', line 37

def define(&block)
  DSL.evaluate(&block).tap do |data|
    DSL.seed_database(data)
  end
end

.define_roles(&block) ⇒ Object

DSL for defining roles



44
45
46
47
48
# File 'lib/easy_admin/permissions.rb', line 44

def define_roles(&block)
  @role_definitions = RoleDSL.new
  @role_definitions.instance_eval(&block)
  @role_definitions
end

.enabled?Boolean

Check if permissions are enabled

Returns:

  • (Boolean)


32
33
34
# File 'lib/easy_admin/permissions.rb', line 32

def enabled?
  configuration.enabled
end

.generate_all_permissionsObject

Generate all possible permissions for available resources



97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/easy_admin/permissions.rb', line 97

def generate_all_permissions
  permissions = {}
  available_resources.each do |resource|
    actions_for_resource(resource).each do |action|
      permission_key = "#{resource}:#{action}"
      permissions[permission_key] = {
        resource: resource,
        action: action,
        name: permission_key
      }
    end
  end
  permissions
end

.get_role(slug) ⇒ Object

Get role by slug



61
62
63
# File 'lib/easy_admin/permissions.rb', line 61

def get_role(slug)
  role_definitions.get_role(slug)
end

.has_role?(user, role_name, context: nil) ⇒ Boolean

Check if user has role

Returns:

  • (Boolean)


74
75
76
77
# File 'lib/easy_admin/permissions.rb', line 74

def has_role?(user, role_name, context: nil)
  return false unless user
  user.has_role?(role_name, context: context)
end

.user_permissions_for_role(role_slug) ⇒ Object

Get user permissions based on role



80
81
82
83
84
# File 'lib/easy_admin/permissions.rb', line 80

def user_permissions_for_role(role_slug)
  role = get_role(role_slug)
  return {} unless role
  role.permissions
end