active_admin_access_control 0.2.0
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 +7 -0
- data/lib/active_admin_access_control/version.rb +5 -0
- data/lib/active_admin_access_control.rb +7 -0
- data/lib/generators/active_admin_access_control/helper.rb +19 -0
- data/lib/generators/active_admin_access_control/install_generator.rb +59 -0
- data/lib/generators/active_admin_access_control/templates/admin/permissions.rb +16 -0
- data/lib/generators/active_admin_access_control/templates/admin/roles.rb +5 -0
- data/lib/generators/active_admin_access_control/templates/migration/add_role_to_admin_user.rb +5 -0
- data/lib/generators/active_admin_access_control/templates/migration/create_permissions.rb +12 -0
- data/lib/generators/active_admin_access_control/templates/migration/create_roles.rb +9 -0
- data/lib/generators/active_admin_access_control/templates/model/ability.rb +22 -0
- data/lib/generators/active_admin_access_control/templates/model/permission.rb +7 -0
- data/lib/generators/active_admin_access_control/templates/model/role.rb +6 -0
- metadata +69 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 45103a57818560d2dcdddeb6de3bb06d7be2f80d5743ff010d81f9aee99087a2
|
4
|
+
data.tar.gz: 49f4118a637d059b4f8a5c7e80c61e441a28919e89c9017085a7e49180382bc3
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c8922396f19f1d31cbd684c64e93312da1670569b2155fef10593b9ee6cb2547d43a3f7f0b259b3d7ba3c72f55d1b5c99e07e2c56fb396015e944b8cbb89bf57
|
7
|
+
data.tar.gz: ba0ef9a0f505f06b28c87a5f338a611fcc106e1aac824e295d2de945cbeac9d7511548b09149bd1cfdcf428b0bf95cbedfbe9740b22258feac4d3997dbbf35a6
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module ActiveAdminAccessControl
|
2
|
+
module Generators
|
3
|
+
module Helper
|
4
|
+
def self.included(klass)
|
5
|
+
klass.send :extend, ClassMethods
|
6
|
+
end
|
7
|
+
|
8
|
+
private
|
9
|
+
|
10
|
+
module ClassMethods
|
11
|
+
# Define the next_migration_number method (necessary for the migration_template method to work)
|
12
|
+
def next_migration_number(dirname)
|
13
|
+
sleep 1
|
14
|
+
Time.new.utc.strftime("%Y%m%d%H%M%S")
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require "rails/generators/migration"
|
2
|
+
require "generators/active_admin_access_control/helper"
|
3
|
+
|
4
|
+
module ActiveAdminAccessControl
|
5
|
+
module Generators
|
6
|
+
class InstallGenerator < ::Rails::Generators::Base
|
7
|
+
include Rails::Generators::Migration
|
8
|
+
include ActiveAdminAccessControl::Generators::Helper
|
9
|
+
source_root File.expand_path("./templates", __dir__)
|
10
|
+
|
11
|
+
def copy_migration_files
|
12
|
+
migration_template "migration/create_roles.rb", "db/migrate/create_roles.rb"
|
13
|
+
migration_template "migration/create_permissions.rb", "db/migrate/create_permissions.rb"
|
14
|
+
migration_template "migration/add_role_to_admin_user.rb", "db/migrate/add_role_to_admin_user.rb"
|
15
|
+
end
|
16
|
+
|
17
|
+
def copy_model_file
|
18
|
+
template "model/ability.rb", "app/models/ability.rb"
|
19
|
+
template "model/role.rb", "app/models/role.rb"
|
20
|
+
template "model/permission.rb", "app/models/permission.rb"
|
21
|
+
end
|
22
|
+
|
23
|
+
def configure_active_admin
|
24
|
+
gsub_file "config/initializers/active_admin.rb",
|
25
|
+
"# config.authorization_adapter = ActiveAdmin::CanCanAdapter",
|
26
|
+
"config.authorization_adapter = ActiveAdmin::CanCanAdapter"
|
27
|
+
end
|
28
|
+
|
29
|
+
def configure_seed_file
|
30
|
+
gsub_file "config/initializers/active_admin.rb",
|
31
|
+
"# config.authorization_adapter = ActiveAdmin::CanCanAdapter",
|
32
|
+
"config.authorization_adapter = ActiveAdmin::CanCanAdapter"
|
33
|
+
end
|
34
|
+
|
35
|
+
def copy_admin_permissions_file
|
36
|
+
template "admin/permissions.rb", "app/admin/permissions.rb"
|
37
|
+
template "admin/roles.rb", "app/admin/roles.rb"
|
38
|
+
end
|
39
|
+
|
40
|
+
def add_to_seed
|
41
|
+
append_to_file 'db/seeds.rb', "\n# Automatically added by Active Admin Access Control\n#{seed_data}"
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def seed_data
|
47
|
+
<<~SEED
|
48
|
+
role = Role.find_or_create_by(name: 'admin')
|
49
|
+
AdminUser.find_or_initialize_by(email: 'admin@example.com').tap do |user|
|
50
|
+
user.password = 'password'
|
51
|
+
user.password_confirmation = 'password'
|
52
|
+
user.role_id = role.id
|
53
|
+
user.save!
|
54
|
+
end
|
55
|
+
SEED
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
ActiveAdmin.register Permission do
|
2
|
+
permit_params :role_id, :class_name, :state, :action
|
3
|
+
|
4
|
+
menu parent: "Roles & Permissions"
|
5
|
+
|
6
|
+
form do |f|
|
7
|
+
f.semantic_errors # shows errors on :base
|
8
|
+
f.inputs do
|
9
|
+
f.input :role_id, as: :select, collection: Role.all.map { |r| [r.name, r.id] }
|
10
|
+
f.input :class_name, as: :select, collection: ActiveAdmin.application.namespaces[:admin].resources.map { |resource| resource.resource_name.to_s }
|
11
|
+
f.input :state
|
12
|
+
f.input :action, as: :select, collection: [ "read", "manage", "create", "update", "destroy"]
|
13
|
+
end
|
14
|
+
f.actions
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Ability
|
4
|
+
include CanCan::Ability
|
5
|
+
|
6
|
+
def initialize(user)
|
7
|
+
return if user.blank?
|
8
|
+
|
9
|
+
if user.role.name.downcase.include?("admin")
|
10
|
+
can :manage, :all
|
11
|
+
else
|
12
|
+
permission_settings(user)
|
13
|
+
end
|
14
|
+
can :read, ActiveAdmin::Page
|
15
|
+
end
|
16
|
+
|
17
|
+
def permission_settings(user)
|
18
|
+
user.role.permissions.map do |permission|
|
19
|
+
can permission.action.to_sym, permission.class_name.constantize if permission.can?
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
metadata
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: active_admin_access_control
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Lakhveer Singh Rajput
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2024-02-07 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: railties
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
description: Through the gem you can create the dynamic role and permissions for different
|
28
|
+
types of users to access active admin panel
|
29
|
+
email:
|
30
|
+
- rajputlakhveer@gmail.com
|
31
|
+
executables: []
|
32
|
+
extensions: []
|
33
|
+
extra_rdoc_files: []
|
34
|
+
files:
|
35
|
+
- lib/active_admin_access_control.rb
|
36
|
+
- lib/active_admin_access_control/version.rb
|
37
|
+
- lib/generators/active_admin_access_control/helper.rb
|
38
|
+
- lib/generators/active_admin_access_control/install_generator.rb
|
39
|
+
- lib/generators/active_admin_access_control/templates/admin/permissions.rb
|
40
|
+
- lib/generators/active_admin_access_control/templates/admin/roles.rb
|
41
|
+
- lib/generators/active_admin_access_control/templates/migration/add_role_to_admin_user.rb
|
42
|
+
- lib/generators/active_admin_access_control/templates/migration/create_permissions.rb
|
43
|
+
- lib/generators/active_admin_access_control/templates/migration/create_roles.rb
|
44
|
+
- lib/generators/active_admin_access_control/templates/model/ability.rb
|
45
|
+
- lib/generators/active_admin_access_control/templates/model/permission.rb
|
46
|
+
- lib/generators/active_admin_access_control/templates/model/role.rb
|
47
|
+
homepage: https://github.com/rajputlakhveer/active_admin_access_control
|
48
|
+
licenses: []
|
49
|
+
metadata: {}
|
50
|
+
post_install_message:
|
51
|
+
rdoc_options: []
|
52
|
+
require_paths:
|
53
|
+
- lib
|
54
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: 2.3.0
|
59
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
64
|
+
requirements: []
|
65
|
+
rubygems_version: 3.0.8
|
66
|
+
signing_key:
|
67
|
+
specification_version: 4
|
68
|
+
summary: Dynamic Role & Permissions For Active Admin.
|
69
|
+
test_files: []
|