easy-admin-rails 0.1.15 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/builds/easy_admin.base.js +254 -18
- data/app/assets/builds/easy_admin.base.js.map +4 -4
- data/app/assets/builds/easy_admin.css +112 -18
- data/app/components/easy_admin/base_component.rb +1 -0
- data/app/components/easy_admin/form_tabs_component.rb +5 -2
- data/app/components/easy_admin/navbar_component.rb +5 -1
- data/app/components/easy_admin/permissions/user_role_assignment_component.rb +254 -0
- data/app/components/easy_admin/permissions/user_role_permissions_component.rb +186 -0
- data/app/components/easy_admin/resources/index_component.rb +1 -4
- data/app/components/easy_admin/sidebar_component.rb +67 -2
- data/app/controllers/easy_admin/application_controller.rb +131 -1
- data/app/controllers/easy_admin/batch_actions_controller.rb +27 -0
- data/app/controllers/easy_admin/concerns/belongs_to_editing.rb +201 -0
- data/app/controllers/easy_admin/concerns/inline_field_editing.rb +297 -0
- data/app/controllers/easy_admin/concerns/resource_authorization.rb +55 -0
- data/app/controllers/easy_admin/concerns/resource_filtering.rb +178 -0
- data/app/controllers/easy_admin/concerns/resource_loading.rb +149 -0
- data/app/controllers/easy_admin/concerns/resource_pagination.rb +135 -0
- data/app/controllers/easy_admin/dashboard_controller.rb +2 -1
- data/app/controllers/easy_admin/dashboards_controller.rb +6 -40
- data/app/controllers/easy_admin/resources_controller.rb +13 -762
- data/app/controllers/easy_admin/row_actions_controller.rb +25 -0
- data/app/helpers/easy_admin/fields_helper.rb +61 -9
- data/app/javascript/easy_admin/controllers/event_emitter_controller.js +2 -4
- data/app/javascript/easy_admin/controllers/infinite_scroll_controller.js +0 -10
- data/app/javascript/easy_admin/controllers/jsoneditor_controller.js +1 -4
- data/app/javascript/easy_admin/controllers/permission_toggle_controller.js +227 -0
- data/app/javascript/easy_admin/controllers/role_preview_controller.js +93 -0
- data/app/javascript/easy_admin/controllers/select_field_controller.js +1 -2
- data/app/javascript/easy_admin/controllers/settings_button_controller.js +1 -2
- data/app/javascript/easy_admin/controllers/settings_sidebar_controller.js +1 -4
- data/app/javascript/easy_admin/controllers/turbo_stream_redirect.js +0 -2
- data/app/javascript/easy_admin/controllers.js +5 -1
- data/app/models/easy_admin/admin_user.rb +6 -0
- data/app/policies/admin_user_policy.rb +36 -0
- data/app/policies/application_policy.rb +83 -0
- data/app/views/easy_admin/application/authorization_failure.turbo_stream.erb +8 -0
- data/app/views/easy_admin/dashboards/card.html.erb +5 -0
- data/app/views/easy_admin/dashboards/card.turbo_stream.erb +7 -0
- data/app/views/easy_admin/dashboards/card_error.html.erb +3 -0
- data/app/views/easy_admin/dashboards/card_error.turbo_stream.erb +5 -0
- data/app/views/easy_admin/dashboards/show.turbo_stream.erb +7 -0
- data/app/views/easy_admin/resources/belongs_to_edit_attached.html.erb +6 -0
- data/app/views/easy_admin/resources/belongs_to_edit_attached.turbo_stream.erb +8 -0
- data/app/views/easy_admin/resources/belongs_to_reattach.html.erb +5 -0
- data/app/views/easy_admin/resources/edit.html.erb +1 -1
- data/app/views/easy_admin/resources/edit_field.html.erb +5 -0
- data/app/views/easy_admin/resources/edit_field.turbo_stream.erb +7 -0
- data/app/views/easy_admin/resources/index.html.erb +1 -1
- data/app/views/easy_admin/resources/index_frame.html.erb +8 -142
- data/app/views/easy_admin/resources/update_belongs_to_attached.turbo_stream.erb +25 -0
- data/app/views/layouts/easy_admin/application.html.erb +15 -2
- data/config/initializers/easy_admin_permissions.rb +73 -0
- data/db/seeds/easy_admin_permissions.rb +121 -0
- data/lib/easy-admin-rails.rb +2 -0
- data/lib/easy_admin/permissions/component.rb +168 -0
- data/lib/easy_admin/permissions/configuration.rb +37 -0
- data/lib/easy_admin/permissions/controller.rb +164 -0
- data/lib/easy_admin/permissions/dsl.rb +160 -0
- data/lib/easy_admin/permissions/models.rb +44 -0
- data/lib/easy_admin/permissions/permission_denied_component.rb +121 -0
- data/lib/easy_admin/permissions/resource_permissions.rb +231 -0
- data/lib/easy_admin/permissions/role_definition.rb +45 -0
- data/lib/easy_admin/permissions/role_denied_component.rb +159 -0
- data/lib/easy_admin/permissions/role_dsl.rb +73 -0
- data/lib/easy_admin/permissions/user_extensions.rb +129 -0
- data/lib/easy_admin/permissions.rb +113 -0
- data/lib/easy_admin/resource/base.rb +119 -0
- data/lib/easy_admin/resource/configuration.rb +148 -0
- data/lib/easy_admin/resource/dsl.rb +117 -0
- data/lib/easy_admin/resource/field_registry.rb +189 -0
- data/lib/easy_admin/resource/form_builder.rb +123 -0
- data/lib/easy_admin/resource/layout_builder.rb +249 -0
- data/lib/easy_admin/resource/scope_manager.rb +252 -0
- data/lib/easy_admin/resource/show_builder.rb +359 -0
- data/lib/easy_admin/resource.rb +8 -835
- data/lib/easy_admin/resource_modules.rb +11 -0
- data/lib/easy_admin/version.rb +1 -1
- data/lib/generators/easy_admin/permissions/install_generator.rb +90 -0
- data/lib/generators/easy_admin/permissions/templates/initializers/permissions.rb +37 -0
- data/lib/generators/easy_admin/permissions/templates/migrations/create_permission_tables.rb +27 -0
- data/lib/generators/easy_admin/permissions/templates/migrations/update_users_for_permissions.rb +6 -0
- data/lib/generators/easy_admin/permissions/templates/models/permission.rb +9 -0
- data/lib/generators/easy_admin/permissions/templates/models/role.rb +9 -0
- data/lib/generators/easy_admin/permissions/templates/models/role_permission.rb +9 -0
- data/lib/generators/easy_admin/permissions/templates/models/user_role.rb +9 -0
- data/lib/generators/easy_admin/permissions/templates/policies/application_policy.rb +47 -0
- data/lib/generators/easy_admin/permissions/templates/policies/user_policy.rb +36 -0
- data/lib/generators/easy_admin/permissions/templates/seeds/permissions.rb +89 -0
- metadata +62 -5
- data/db/migrate/20250101000001_create_easy_admin_admin_users.rb +0 -45
@@ -0,0 +1,11 @@
|
|
1
|
+
# Autoloader for all resource modules
|
2
|
+
# This file ensures all resource modules are loaded in the correct order
|
3
|
+
|
4
|
+
require_relative 'resource/configuration'
|
5
|
+
require_relative 'resource/field_registry'
|
6
|
+
require_relative 'resource/scope_manager'
|
7
|
+
require_relative 'resource/layout_builder'
|
8
|
+
require_relative 'resource/form_builder'
|
9
|
+
require_relative 'resource/show_builder'
|
10
|
+
require_relative 'resource/dsl'
|
11
|
+
require_relative 'resource/base'
|
data/lib/easy_admin/version.rb
CHANGED
@@ -0,0 +1,90 @@
|
|
1
|
+
require 'rails/generators/active_record'
|
2
|
+
|
3
|
+
module EasyAdmin
|
4
|
+
module Permissions
|
5
|
+
module Generators
|
6
|
+
class InstallGenerator < Rails::Generators::Base
|
7
|
+
include ActiveRecord::Generators::Migration
|
8
|
+
|
9
|
+
source_root File.expand_path('templates', __dir__)
|
10
|
+
|
11
|
+
desc 'Install EasyAdmin Permission Engine'
|
12
|
+
|
13
|
+
class_option :user_model, type: :string, default: 'User',
|
14
|
+
desc: 'The name of your user model'
|
15
|
+
class_option :contexts, type: :array, default: [],
|
16
|
+
desc: 'Context types for scoped permissions (e.g., Organization Project)'
|
17
|
+
|
18
|
+
def create_models
|
19
|
+
template 'models/role.rb', 'app/models/easy_admin/permissions/role.rb'
|
20
|
+
template 'models/user_role.rb', 'app/models/easy_admin/permissions/user_role.rb'
|
21
|
+
# No permission or role_permission models needed - using JSON field approach
|
22
|
+
end
|
23
|
+
|
24
|
+
def create_migrations
|
25
|
+
migration_template 'migrations/create_permission_tables.rb',
|
26
|
+
'db/migrate/create_easy_admin_permission_tables.rb'
|
27
|
+
|
28
|
+
if options[:user_model] != 'User' || has_user_model_changes?
|
29
|
+
migration_template 'migrations/update_users_for_permissions.rb',
|
30
|
+
'db/migrate/update_users_for_easy_admin_permissions.rb'
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def create_initializer
|
35
|
+
template 'initializers/permissions.rb', 'config/initializers/easy_admin_permissions.rb'
|
36
|
+
end
|
37
|
+
|
38
|
+
def create_base_policy
|
39
|
+
template 'policies/application_policy.rb', 'app/policies/application_policy.rb'
|
40
|
+
template 'policies/user_policy.rb', "app/policies/#{options[:user_model].underscore}_policy.rb"
|
41
|
+
end
|
42
|
+
|
43
|
+
def update_user_model
|
44
|
+
inject_into_class "app/models/#{options[:user_model].underscore}.rb", options[:user_model].classify do
|
45
|
+
" include EasyAdmin::Permissions::UserExtensions\n"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def create_seeds
|
50
|
+
template 'seeds/permissions.rb', 'db/seeds/easy_admin_permissions.rb'
|
51
|
+
end
|
52
|
+
|
53
|
+
def show_instructions
|
54
|
+
say "\n" + "="*60
|
55
|
+
say "EasyAdmin Permission Engine installed successfully!"
|
56
|
+
say "="*60
|
57
|
+
say "\nNext steps:"
|
58
|
+
say "1. Run: rails db:migrate"
|
59
|
+
say "2. Add to your seeds: load Rails.root.join('db/seeds/easy_admin_permissions.rb')"
|
60
|
+
say "3. Run: rails db:seed"
|
61
|
+
say "4. Configure permissions in config/initializers/easy_admin_permissions.rb"
|
62
|
+
say "5. Add action_policy gem to your Gemfile: gem 'action_policy'"
|
63
|
+
say "6. Run: bundle install"
|
64
|
+
say "\nFor more information, see the documentation."
|
65
|
+
say "="*60 + "\n"
|
66
|
+
end
|
67
|
+
|
68
|
+
private
|
69
|
+
|
70
|
+
def migration_version
|
71
|
+
"[#{ActiveRecord::VERSION::MAJOR}.#{ActiveRecord::VERSION::MINOR}]"
|
72
|
+
end
|
73
|
+
|
74
|
+
def user_model_name
|
75
|
+
options[:user_model]
|
76
|
+
end
|
77
|
+
|
78
|
+
def context_types
|
79
|
+
options[:contexts]
|
80
|
+
end
|
81
|
+
|
82
|
+
def has_user_model_changes?
|
83
|
+
# Check if we need to add permissions_cache column
|
84
|
+
!File.exist?("app/models/#{options[:user_model].underscore}.rb") ||
|
85
|
+
!File.read("app/models/#{options[:user_model].underscore}.rb").include?('permissions_cache')
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# Configure EasyAdmin Permissions
|
2
|
+
EasyAdmin::Permissions.configure do |config|
|
3
|
+
config.enabled = true
|
4
|
+
config.cache_duration = 1.hour
|
5
|
+
end
|
6
|
+
|
7
|
+
# Define roles (permissions are managed individually via JSON field)
|
8
|
+
# Note: This will only run if the database tables exist
|
9
|
+
if ActiveRecord::Base.connection.table_exists?(:easy_admin_roles)
|
10
|
+
EasyAdmin::Permissions.define do
|
11
|
+
# Role definitions - just name, slug, and description
|
12
|
+
# Individual permissions are managed via users.permissions_cache JSON field
|
13
|
+
|
14
|
+
role :super_admin,
|
15
|
+
description: "Full system access - all permissions can be granted individually"
|
16
|
+
|
17
|
+
role :admin,
|
18
|
+
description: "Administrative access - permissions managed per user"
|
19
|
+
|
20
|
+
role :moderator,
|
21
|
+
description: "Content moderation access"
|
22
|
+
|
23
|
+
role :editor,
|
24
|
+
description: "Content editing permissions"
|
25
|
+
|
26
|
+
role :viewer,
|
27
|
+
description: "Read-only access"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# Individual user permissions are managed via the permissions_cache JSON field
|
32
|
+
# Example permissions that can be assigned:
|
33
|
+
# - admin_users:read, admin_users:create, admin_users:update, admin_users:delete
|
34
|
+
# - posts:read, posts:create, posts:update, posts:delete
|
35
|
+
# - comments:read, comments:create, comments:update, comments:delete
|
36
|
+
# - users:read, users:create, users:update, users:delete
|
37
|
+
# - payment_methods:read, payment_methods:create, payment_methods:update, payment_methods:delete
|
@@ -0,0 +1,27 @@
|
|
1
|
+
class CreateEasyAdminPermissionTables < ActiveRecord::Migration<%= migration_version %>
|
2
|
+
def change
|
3
|
+
# Roles table - only table needed, permissions are stored in JSON field
|
4
|
+
create_table :easy_admin_roles do |t|
|
5
|
+
t.string :name, null: false
|
6
|
+
t.string :slug, null: false
|
7
|
+
t.string :description
|
8
|
+
t.boolean :active, default: true
|
9
|
+
t.timestamps
|
10
|
+
|
11
|
+
t.index :name, unique: true
|
12
|
+
t.index :slug, unique: true
|
13
|
+
t.index :active
|
14
|
+
end
|
15
|
+
|
16
|
+
# User-Role join table (simplified - no permissions table needed)
|
17
|
+
create_table :easy_admin_user_roles do |t|
|
18
|
+
t.references :user, null: false, foreign_key: true
|
19
|
+
t.references :role, null: false, foreign_key: { to_table: :easy_admin_roles }
|
20
|
+
t.boolean :active, default: true
|
21
|
+
t.timestamps
|
22
|
+
|
23
|
+
t.index [:user_id, :role_id], unique: true, name: 'index_easy_admin_user_roles_unique'
|
24
|
+
t.index [:user_id, :active], name: 'index_easy_admin_user_roles_active'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/generators/easy_admin/permissions/templates/migrations/update_users_for_permissions.rb
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
class UpdateUsersForEasyAdminPermissions < ActiveRecord::Migration<%= migration_version %>
|
2
|
+
def change
|
3
|
+
add_column :<%= user_model_name.tableize %>, :permissions_cache, :json, default: {}, null: false
|
4
|
+
add_index :<%= user_model_name.tableize %>, :permissions_cache, using: :gin
|
5
|
+
end
|
6
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
class ApplicationPolicy < ActionPolicy::Base
|
2
|
+
# Configure authorization context
|
3
|
+
authorize :user, allow_nil: true
|
4
|
+
|
5
|
+
# Default rule delegates to EasyAdmin permissions
|
6
|
+
default_rule :manage?, with: :admin_user?
|
7
|
+
|
8
|
+
# Basic authorization rules using EasyAdmin permissions
|
9
|
+
def index?
|
10
|
+
user_has_permission?("#{resource_name}:read")
|
11
|
+
end
|
12
|
+
|
13
|
+
def show?
|
14
|
+
user_has_permission?("#{resource_name}:read")
|
15
|
+
end
|
16
|
+
|
17
|
+
def create?
|
18
|
+
user_has_permission?("#{resource_name}:create")
|
19
|
+
end
|
20
|
+
|
21
|
+
def update?
|
22
|
+
user_has_permission?("#{resource_name}:update")
|
23
|
+
end
|
24
|
+
|
25
|
+
def destroy?
|
26
|
+
user_has_permission?("#{resource_name}:delete")
|
27
|
+
end
|
28
|
+
|
29
|
+
# Admin bypass
|
30
|
+
def manage?
|
31
|
+
admin_user?
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def user_has_permission?(permission_name, context: nil)
|
37
|
+
EasyAdmin::Permissions.authorized?(user, permission_name, context: context)
|
38
|
+
end
|
39
|
+
|
40
|
+
def admin_user?
|
41
|
+
user&.admin? || false
|
42
|
+
end
|
43
|
+
|
44
|
+
def resource_name
|
45
|
+
record.class.name.underscore.pluralize
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
class <%= user_model_name %>Policy < ApplicationPolicy
|
2
|
+
# Users can always view their own profile
|
3
|
+
def show?
|
4
|
+
own_record? || super
|
5
|
+
end
|
6
|
+
|
7
|
+
# Users can update their own basic information
|
8
|
+
def update?
|
9
|
+
own_record? || super
|
10
|
+
end
|
11
|
+
|
12
|
+
# Only users with permissions can create other users
|
13
|
+
def create?
|
14
|
+
user_has_permission?("users:create")
|
15
|
+
end
|
16
|
+
|
17
|
+
# Only users with permissions can delete other users
|
18
|
+
def destroy?
|
19
|
+
!own_record? && user_has_permission?("users:delete")
|
20
|
+
end
|
21
|
+
|
22
|
+
# Role management permissions
|
23
|
+
def assign_roles?
|
24
|
+
user_has_permission?("users:manage_roles")
|
25
|
+
end
|
26
|
+
|
27
|
+
def remove_roles?
|
28
|
+
user_has_permission?("users:manage_roles")
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def own_record?
|
34
|
+
user && record && user.id == record.id
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
# EasyAdmin Permission System Seeds
|
2
|
+
# Load these seeds after running: rails easy_admin:permissions:install
|
3
|
+
|
4
|
+
puts "🔐 Setting up EasyAdmin Permission System..."
|
5
|
+
|
6
|
+
# Auto-discover and seed all EasyAdmin resource permissions
|
7
|
+
puts " Auto-discovering EasyAdmin resources..."
|
8
|
+
resource_permission_count = EasyAdmin::Permissions.seed_resource_permissions!
|
9
|
+
|
10
|
+
# Define roles using the new DSL with resource-based permissions
|
11
|
+
puts " Creating roles with EasyAdmin resource permissions..."
|
12
|
+
|
13
|
+
EasyAdmin::Permissions.define do
|
14
|
+
# Auto-discover all available resources and create permissions
|
15
|
+
auto_discover_resources
|
16
|
+
|
17
|
+
# Define roles with resource-based permissions
|
18
|
+
easy_admin_role "Super Admin",
|
19
|
+
slug: "super_admin",
|
20
|
+
description: "Full system access to all resources",
|
21
|
+
resources: {
|
22
|
+
user: [:index, :show, :new, :create, :edit, :update, :destroy],
|
23
|
+
admin_user: [:index, :show, :new, :create, :edit, :update, :destroy],
|
24
|
+
post: [:index, :show, :new, :create, :edit, :update, :destroy],
|
25
|
+
comment: [:index, :show, :new, :create, :edit, :update, :destroy],
|
26
|
+
category: [:index, :show, :new, :create, :edit, :update, :destroy],
|
27
|
+
payment_method: [:index, :show, :new, :create, :edit, :update, :destroy]
|
28
|
+
}
|
29
|
+
|
30
|
+
easy_admin_role "Admin",
|
31
|
+
slug: "admin",
|
32
|
+
description: "Administrative access with user management",
|
33
|
+
resources: {
|
34
|
+
user: [:index, :show, :edit, :update],
|
35
|
+
admin_user: [:index, :show, :new, :create, :edit, :update],
|
36
|
+
post: [:index, :show, :new, :create, :edit, :update, :destroy],
|
37
|
+
comment: [:index, :show, :edit, :update, :destroy],
|
38
|
+
category: [:index, :show, :new, :create, :edit, :update],
|
39
|
+
payment_method: [:index, :show]
|
40
|
+
}
|
41
|
+
|
42
|
+
easy_admin_role "Manager",
|
43
|
+
slug: "manager",
|
44
|
+
description: "Content management with limited user access",
|
45
|
+
resources: {
|
46
|
+
user: [:index, :show],
|
47
|
+
post: [:index, :show, :new, :create, :edit, :update],
|
48
|
+
comment: [:index, :show, :edit, :update],
|
49
|
+
category: [:index, :show, :new, :create, :edit, :update],
|
50
|
+
payment_method: [:index, :show]
|
51
|
+
}
|
52
|
+
|
53
|
+
easy_admin_role "Editor",
|
54
|
+
slug: "editor",
|
55
|
+
description: "Content editing permissions",
|
56
|
+
resources: {
|
57
|
+
post: [:index, :show, :new, :create, :edit, :update],
|
58
|
+
comment: [:index, :show, :edit, :update],
|
59
|
+
category: [:index, :show]
|
60
|
+
}
|
61
|
+
|
62
|
+
easy_admin_role "Viewer",
|
63
|
+
slug: "viewer",
|
64
|
+
description: "Read-only access to resources",
|
65
|
+
resources: {
|
66
|
+
user: [:index, :show],
|
67
|
+
post: [:index, :show],
|
68
|
+
comment: [:index, :show],
|
69
|
+
category: [:index, :show],
|
70
|
+
payment_method: [:index, :show]
|
71
|
+
}
|
72
|
+
end
|
73
|
+
|
74
|
+
puts "✅ EasyAdmin Permission System setup complete!"
|
75
|
+
puts " - #{resource_permission_count} resource permissions created"
|
76
|
+
puts " - 5 roles created with resource-based permissions"
|
77
|
+
puts ""
|
78
|
+
puts "Available resources discovered:"
|
79
|
+
EasyAdmin::Permissions.available_resources.each do |resource|
|
80
|
+
actions = EasyAdmin::Permissions.actions_for_resource(resource)
|
81
|
+
puts " - #{resource}: #{actions.join(', ')}"
|
82
|
+
end
|
83
|
+
puts ""
|
84
|
+
puts "Next steps:"
|
85
|
+
puts "1. Configure permissions in config/initializers/easy_admin_permissions.rb"
|
86
|
+
puts "2. Assign roles to users: user.assign_role(:admin)"
|
87
|
+
puts "3. Check permissions: user.has_permission?('users:index')"
|
88
|
+
puts "4. Use in Action Policy: authorize!(record, to: :show?)"
|
89
|
+
puts ""
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: easy-admin-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Slaurmagan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-09-
|
11
|
+
date: 2025-09-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -269,6 +269,8 @@ files:
|
|
269
269
|
- app/components/easy_admin/navbar_component.rb
|
270
270
|
- app/components/easy_admin/notification_component.rb
|
271
271
|
- app/components/easy_admin/pagination_component.rb
|
272
|
+
- app/components/easy_admin/permissions/user_role_assignment_component.rb
|
273
|
+
- app/components/easy_admin/permissions/user_role_permissions_component.rb
|
272
274
|
- app/components/easy_admin/quick_filters_component.rb
|
273
275
|
- app/components/easy_admin/resource_pagination_component.rb
|
274
276
|
- app/components/easy_admin/resources/index_component.rb
|
@@ -292,6 +294,12 @@ files:
|
|
292
294
|
- app/concerns/easy_admin/resource_versions.rb
|
293
295
|
- app/controllers/easy_admin/application_controller.rb
|
294
296
|
- app/controllers/easy_admin/batch_actions_controller.rb
|
297
|
+
- app/controllers/easy_admin/concerns/belongs_to_editing.rb
|
298
|
+
- app/controllers/easy_admin/concerns/inline_field_editing.rb
|
299
|
+
- app/controllers/easy_admin/concerns/resource_authorization.rb
|
300
|
+
- app/controllers/easy_admin/concerns/resource_filtering.rb
|
301
|
+
- app/controllers/easy_admin/concerns/resource_loading.rb
|
302
|
+
- app/controllers/easy_admin/concerns/resource_pagination.rb
|
295
303
|
- app/controllers/easy_admin/confirmation_modal_controller.rb
|
296
304
|
- app/controllers/easy_admin/dashboard_controller.rb
|
297
305
|
- app/controllers/easy_admin/dashboards_controller.rb
|
@@ -328,6 +336,8 @@ files:
|
|
328
336
|
- app/javascript/easy_admin/controllers/modal_controller.js
|
329
337
|
- app/javascript/easy_admin/controllers/navbar_scroll_controller.js
|
330
338
|
- app/javascript/easy_admin/controllers/notification_controller.js
|
339
|
+
- app/javascript/easy_admin/controllers/permission_toggle_controller.js
|
340
|
+
- app/javascript/easy_admin/controllers/role_preview_controller.js
|
331
341
|
- app/javascript/easy_admin/controllers/row_action_controller.js
|
332
342
|
- app/javascript/easy_admin/controllers/row_modal_controller.js
|
333
343
|
- app/javascript/easy_admin/controllers/select_field_controller.js
|
@@ -343,29 +353,44 @@ files:
|
|
343
353
|
- app/javascript/easy_admin/controllers/version_revert_controller.js
|
344
354
|
- app/models/easy_admin/admin_user.rb
|
345
355
|
- app/models/easy_admin/application_record.rb
|
356
|
+
- app/policies/admin_user_policy.rb
|
357
|
+
- app/policies/application_policy.rb
|
358
|
+
- app/views/easy_admin/application/authorization_failure.turbo_stream.erb
|
346
359
|
- app/views/easy_admin/dashboard/index.html.erb
|
360
|
+
- app/views/easy_admin/dashboards/card.html.erb
|
361
|
+
- app/views/easy_admin/dashboards/card.turbo_stream.erb
|
362
|
+
- app/views/easy_admin/dashboards/card_error.html.erb
|
363
|
+
- app/views/easy_admin/dashboards/card_error.turbo_stream.erb
|
347
364
|
- app/views/easy_admin/dashboards/show.html.erb
|
365
|
+
- app/views/easy_admin/dashboards/show.turbo_stream.erb
|
348
366
|
- app/views/easy_admin/passwords/edit.html.erb
|
349
367
|
- app/views/easy_admin/passwords/new.html.erb
|
350
368
|
- app/views/easy_admin/registrations/new.html.erb
|
351
369
|
- app/views/easy_admin/resources/_redirect.turbo_stream.erb
|
352
370
|
- app/views/easy_admin/resources/_table_rows.html.erb
|
371
|
+
- app/views/easy_admin/resources/belongs_to_edit_attached.html.erb
|
372
|
+
- app/views/easy_admin/resources/belongs_to_edit_attached.turbo_stream.erb
|
373
|
+
- app/views/easy_admin/resources/belongs_to_reattach.html.erb
|
353
374
|
- app/views/easy_admin/resources/edit.html.erb
|
375
|
+
- app/views/easy_admin/resources/edit_field.html.erb
|
376
|
+
- app/views/easy_admin/resources/edit_field.turbo_stream.erb
|
354
377
|
- app/views/easy_admin/resources/index.html.erb
|
355
378
|
- app/views/easy_admin/resources/index.turbo_stream.erb
|
356
379
|
- app/views/easy_admin/resources/index_frame.html.erb
|
357
380
|
- app/views/easy_admin/resources/new.html.erb
|
358
381
|
- app/views/easy_admin/resources/show.html.erb
|
382
|
+
- app/views/easy_admin/resources/update_belongs_to_attached.turbo_stream.erb
|
359
383
|
- app/views/easy_admin/sessions/new.html.erb
|
360
384
|
- app/views/easy_admin/settings/_form.html.erb
|
361
385
|
- app/views/easy_admin/settings/index.html.erb
|
362
386
|
- app/views/layouts/easy_admin/application.html.erb
|
363
387
|
- app/views/layouts/easy_admin/auth.html.erb
|
364
388
|
- config/initializers/easy_admin_card_factory.rb
|
389
|
+
- config/initializers/easy_admin_permissions.rb
|
365
390
|
- config/initializers/pagy.rb
|
366
391
|
- config/initializers/rack_mini_profiler.rb
|
367
392
|
- config/routes.rb
|
368
|
-
- db/
|
393
|
+
- db/seeds/easy_admin_permissions.rb
|
369
394
|
- lib/easy-admin-rails.rb
|
370
395
|
- lib/easy_admin/action.rb
|
371
396
|
- lib/easy_admin/batch_action.rb
|
@@ -375,7 +400,28 @@ files:
|
|
375
400
|
- lib/easy_admin/delete_action.rb
|
376
401
|
- lib/easy_admin/engine.rb
|
377
402
|
- lib/easy_admin/field.rb
|
403
|
+
- lib/easy_admin/permissions.rb
|
404
|
+
- lib/easy_admin/permissions/component.rb
|
405
|
+
- lib/easy_admin/permissions/configuration.rb
|
406
|
+
- lib/easy_admin/permissions/controller.rb
|
407
|
+
- lib/easy_admin/permissions/dsl.rb
|
408
|
+
- lib/easy_admin/permissions/models.rb
|
409
|
+
- lib/easy_admin/permissions/permission_denied_component.rb
|
410
|
+
- lib/easy_admin/permissions/resource_permissions.rb
|
411
|
+
- lib/easy_admin/permissions/role_definition.rb
|
412
|
+
- lib/easy_admin/permissions/role_denied_component.rb
|
413
|
+
- lib/easy_admin/permissions/role_dsl.rb
|
414
|
+
- lib/easy_admin/permissions/user_extensions.rb
|
378
415
|
- lib/easy_admin/resource.rb
|
416
|
+
- lib/easy_admin/resource/base.rb
|
417
|
+
- lib/easy_admin/resource/configuration.rb
|
418
|
+
- lib/easy_admin/resource/dsl.rb
|
419
|
+
- lib/easy_admin/resource/field_registry.rb
|
420
|
+
- lib/easy_admin/resource/form_builder.rb
|
421
|
+
- lib/easy_admin/resource/layout_builder.rb
|
422
|
+
- lib/easy_admin/resource/scope_manager.rb
|
423
|
+
- lib/easy_admin/resource/show_builder.rb
|
424
|
+
- lib/easy_admin/resource_modules.rb
|
379
425
|
- lib/easy_admin/resource_registry.rb
|
380
426
|
- lib/easy_admin/types/json_type.rb
|
381
427
|
- lib/easy_admin/version.rb
|
@@ -386,6 +432,17 @@ files:
|
|
386
432
|
- lib/generators/easy_admin/card/templates/card_component_spec.rb.erb
|
387
433
|
- lib/generators/easy_admin/install/templates/easy_admin.rb
|
388
434
|
- lib/generators/easy_admin/install_generator.rb
|
435
|
+
- lib/generators/easy_admin/permissions/install_generator.rb
|
436
|
+
- lib/generators/easy_admin/permissions/templates/initializers/permissions.rb
|
437
|
+
- lib/generators/easy_admin/permissions/templates/migrations/create_permission_tables.rb
|
438
|
+
- lib/generators/easy_admin/permissions/templates/migrations/update_users_for_permissions.rb
|
439
|
+
- lib/generators/easy_admin/permissions/templates/models/permission.rb
|
440
|
+
- lib/generators/easy_admin/permissions/templates/models/role.rb
|
441
|
+
- lib/generators/easy_admin/permissions/templates/models/role_permission.rb
|
442
|
+
- lib/generators/easy_admin/permissions/templates/models/user_role.rb
|
443
|
+
- lib/generators/easy_admin/permissions/templates/policies/application_policy.rb
|
444
|
+
- lib/generators/easy_admin/permissions/templates/policies/user_policy.rb
|
445
|
+
- lib/generators/easy_admin/permissions/templates/seeds/permissions.rb
|
389
446
|
- lib/generators/easy_admin/rbac/rbac_generator.rb
|
390
447
|
- lib/generators/easy_admin/rbac/templates/add_rbac_to_admin_users.rb
|
391
448
|
- lib/generators/easy_admin/rbac/templates/super_admin.rb
|
@@ -403,8 +460,8 @@ licenses:
|
|
403
460
|
metadata:
|
404
461
|
allowed_push_host: https://rubygems.org
|
405
462
|
homepage_uri: https://github.com/yourusername/easy_admin
|
406
|
-
source_code_uri: https://github.com/
|
407
|
-
changelog_uri: https://github.com/
|
463
|
+
source_code_uri: https://github.com/Slaurmagan/easy-admin
|
464
|
+
changelog_uri: https://github.com/Slaurmagan/easy-admin/blob/main/CHANGELOG.md
|
408
465
|
post_install_message:
|
409
466
|
rdoc_options: []
|
410
467
|
require_paths:
|
@@ -1,45 +0,0 @@
|
|
1
|
-
class CreateEasyAdminAdminUsers < ActiveRecord::Migration[7.0]
|
2
|
-
def change
|
3
|
-
create_table :easy_admin_admin_users do |t|
|
4
|
-
## Database authenticatable
|
5
|
-
t.string :email, null: false, default: ""
|
6
|
-
t.string :encrypted_password, null: false, default: ""
|
7
|
-
|
8
|
-
## Personal information
|
9
|
-
t.string :first_name, null: false
|
10
|
-
t.string :last_name, null: false
|
11
|
-
|
12
|
-
## Recoverable
|
13
|
-
t.string :reset_password_token
|
14
|
-
t.datetime :reset_password_sent_at
|
15
|
-
|
16
|
-
## Rememberable
|
17
|
-
t.datetime :remember_created_at
|
18
|
-
|
19
|
-
## Trackable
|
20
|
-
t.integer :sign_in_count, default: 0, null: false
|
21
|
-
t.datetime :current_sign_in_at
|
22
|
-
t.datetime :last_sign_in_at
|
23
|
-
t.string :current_sign_in_ip
|
24
|
-
t.string :last_sign_in_ip
|
25
|
-
|
26
|
-
## Confirmable
|
27
|
-
t.string :confirmation_token
|
28
|
-
t.datetime :confirmed_at
|
29
|
-
t.datetime :confirmation_sent_at
|
30
|
-
t.string :unconfirmed_email # Only if using reconfirmable
|
31
|
-
|
32
|
-
## Lockable
|
33
|
-
t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
|
34
|
-
t.string :unlock_token # Only if unlock strategy is :email or :both
|
35
|
-
t.datetime :locked_at
|
36
|
-
|
37
|
-
t.timestamps null: false
|
38
|
-
end
|
39
|
-
|
40
|
-
add_index :easy_admin_admin_users, :email, unique: true
|
41
|
-
add_index :easy_admin_admin_users, :reset_password_token, unique: true
|
42
|
-
add_index :easy_admin_admin_users, :confirmation_token, unique: true
|
43
|
-
add_index :easy_admin_admin_users, :unlock_token, unique: true
|
44
|
-
end
|
45
|
-
end
|