active_admin_role 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.rspec +2 -0
  4. data/.rubocop.yml +17 -0
  5. data/.ruby-style.yml +242 -0
  6. data/.travis.yml +5 -0
  7. data/Appraisals +12 -0
  8. data/Gemfile +24 -0
  9. data/LICENSE.txt +21 -0
  10. data/README.md +79 -0
  11. data/Rakefile +7 -0
  12. data/active_admin_role.gemspec +21 -0
  13. data/app/models/active_admin/managed_resource.rb +64 -0
  14. data/app/models/active_admin/permission.rb +59 -0
  15. data/config/locales/en.yml +40 -0
  16. data/config/locales/ja.yml +37 -0
  17. data/gemfiles/.bundle/config +2 -0
  18. data/gemfiles/rails42.gemfile +26 -0
  19. data/gemfiles/rails50.gemfile +27 -0
  20. data/lib/active_admin_role/active_admin/dsl.rb +24 -0
  21. data/lib/active_admin_role/active_admin/resource_controller.rb +21 -0
  22. data/lib/active_admin_role/can_can/ability.rb +15 -0
  23. data/lib/active_admin_role/config.rb +17 -0
  24. data/lib/active_admin_role/engine.rb +15 -0
  25. data/lib/active_admin_role/manageable_resource.rb +44 -0
  26. data/lib/active_admin_role/model.rb +7 -0
  27. data/lib/active_admin_role/role_based_authorizable.rb +45 -0
  28. data/lib/active_admin_role/version.rb +3 -0
  29. data/lib/active_admin_role.rb +21 -0
  30. data/lib/generators/active_admin_role/USAGE +9 -0
  31. data/lib/generators/active_admin_role/helper.rb +64 -0
  32. data/lib/generators/active_admin_role/install_generator.rb +54 -0
  33. data/lib/generators/active_admin_role/templates/admin/permission.rb +71 -0
  34. data/lib/generators/active_admin_role/templates/initializer.rb +18 -0
  35. data/lib/generators/active_admin_role/templates/migration/add_role_to_admin_users.rb +5 -0
  36. data/lib/generators/active_admin_role/templates/migration/create_active_admin_managed_resources.rb +13 -0
  37. data/lib/generators/active_admin_role/templates/migration/create_active_admin_permissions.rb +13 -0
  38. data/lib/generators/active_admin_role/templates/model/ability.rb +17 -0
  39. data/tasks/test.rake +10 -0
  40. metadata +110 -0
@@ -0,0 +1,26 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 4.2.0"
6
+ gem "activeadmin", "1.0.0.pre4"
7
+ gem "devise", "~> 4.2.0"
8
+ gem "pry"
9
+ gem "appraisal"
10
+
11
+ group :development do
12
+ gem "bundler", "~> 1.13.0"
13
+ gem "rake", "~> 10.0"
14
+ gem "rubocop", "~> 0.40.0"
15
+ end
16
+
17
+ group :test do
18
+ gem "capybara"
19
+ gem "rspec-rails"
20
+ gem "database_cleaner"
21
+ gem "shoulda-matchers"
22
+ gem "sqlite3", :platforms => :mri
23
+ gem "poltergeist"
24
+ end
25
+
26
+ gemspec :path => "../"
@@ -0,0 +1,27 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 5.0.0"
6
+ gem "activeadmin", :github => "activeadmin/activeadmin"
7
+ gem "devise", "~> 4.2.0"
8
+ gem "pry"
9
+ gem "appraisal"
10
+ gem "inherited_resources", :github => "activeadmin/inherited_resources"
11
+
12
+ group :development do
13
+ gem "bundler", "~> 1.13.0"
14
+ gem "rake", "~> 10.0"
15
+ gem "rubocop", "~> 0.40.0"
16
+ end
17
+
18
+ group :test do
19
+ gem "capybara"
20
+ gem "rspec-rails"
21
+ gem "database_cleaner"
22
+ gem "shoulda-matchers"
23
+ gem "sqlite3", :platforms => :mri
24
+ gem "poltergeist"
25
+ end
26
+
27
+ gemspec :path => "../"
@@ -0,0 +1,24 @@
1
+ module ActiveAdminRole
2
+ module ActiveAdmin
3
+ module DSL
4
+ def role_changeable
5
+ scope(:all, default: true)
6
+
7
+ controller.resource_class.roles.each_key(&method(:scope))
8
+
9
+ controller.resource_class.roles.each_key do |role|
10
+ batch_action "assign as #{role}" do |ids|
11
+ formatted_ids = ids - [current_admin_user.id.to_s]
12
+ resource_class.where(id: formatted_ids).update_all(role: resource_class.roles[role])
13
+
14
+ if Rails::VERSION::MAJOR >= 5
15
+ redirect_back fallback_location: admin_root_url, notice: t("views.admin_user.notice.assigned", role: role)
16
+ else
17
+ redirect_to :back, notice: t("views.admin_user.notice.assigned", role: role)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,21 @@
1
+ module ActiveAdminRole
2
+ module ActiveAdmin
3
+ module ResourceController
4
+ def self.included(klass)
5
+ klass.class_eval do
6
+ if Rails::VERSION::MAJOR >= 4
7
+ before_action :authorize_access_resource!, except: %i(index new create show edit update destroy)
8
+ else
9
+ before_filter :authorize_access_resource!, except: %i(index new create show edit update destroy)
10
+ end
11
+ end
12
+ end
13
+
14
+ private
15
+
16
+ def authorize_access_resource!
17
+ authorize_resource!(active_admin_config.resource_class)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,15 @@
1
+ module ActiveAdminRole
2
+ module CanCan
3
+ module Ability
4
+ private
5
+
6
+ def register_role_based_abilities(user)
7
+ return if user.guest_user?
8
+
9
+ (::ActiveAdmin::Permission.indexed_cache[user.role] || []).select(&:active?).each do |permission|
10
+ send(*permission.to_condition)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,17 @@
1
+ module ActiveAdminRole
2
+ class Config
3
+ attr_accessor :roles, :super_user_roles, :guest_user_roles, :user_class_name, :default_state
4
+
5
+ def initialize
6
+ @roles = { guest: 0, support: 1, staff: 2, manager: 3, admin: 99 }
7
+ @guest_user_roles = [:guest]
8
+ @super_user_roles = [:admin]
9
+ @user_class_name = "AdminUser"
10
+ @default_state = :cannot
11
+ end
12
+
13
+ def default_state=(value)
14
+ @default_state = value.to_s == "can" ? :can : :cannot
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,15 @@
1
+ require "rails/engine"
2
+
3
+ module ActiveAdminRole
4
+ class Engine < ::Rails::Engine
5
+ initializer "active_admin_role" do
6
+ ActiveSupport.on_load :active_record do
7
+ ActiveRecord::Base.send :extend, ::ActiveAdminRole::Model
8
+ end
9
+
10
+ ActiveSupport.on_load :after_initialize do
11
+ ::ActiveAdmin::ResourceController.send :include, ::ActiveAdminRole::ActiveAdmin::ResourceController
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,44 @@
1
+ require "set"
2
+
3
+ module ActiveAdminRole
4
+ class ManageableResource
5
+ def call
6
+ ::ActiveAdmin.application.namespaces[:admin].resources.inject([]) do |result, resource|
7
+ class_name = resource.controller.resource_class.to_s
8
+ name = resource.resource_name.name
9
+ actions = collect_defined_actions(resource)
10
+
11
+ result += eval_actions(actions).map do |action|
12
+ { class_name: class_name, name: name, action: action }
13
+ end
14
+
15
+ result
16
+ end
17
+ end
18
+
19
+ private
20
+
21
+ def collect_defined_actions(resource)
22
+ if resource.respond_to?(:defined_actions)
23
+ defined_actions = resource.defined_actions
24
+ member_actions = resource.member_actions.map(&:name)
25
+ collection_actions = resource.collection_actions.map(&:name)
26
+ batch_actions = resource.batch_actions_enabled? ? [:batch_action] : []
27
+
28
+ defined_actions | member_actions | member_actions | collection_actions | batch_actions
29
+ else
30
+ resource.page_actions.map(&:name) | [:index]
31
+ end
32
+ end
33
+
34
+ def eval_actions(actions)
35
+ actions.inject(Set.new) do |result, action|
36
+ result << (actions_dictionary[action] || action).to_s
37
+ end
38
+ end
39
+
40
+ def actions_dictionary
41
+ @_actions_dictionary ||= ::ActiveAdmin::BaseController::Authorization::ACTIONS_DICTIONARY.dup
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,7 @@
1
+ module ActiveAdminRole
2
+ module Model
3
+ def role_based_authorizable
4
+ send :include, ::ActiveAdminRole::RoleBasedAuthorizable
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,45 @@
1
+ module ActiveAdminRole
2
+ module RoleBasedAuthorizable
3
+ def self.included(klass)
4
+ klass.class_eval do
5
+ extend ClassMethods
6
+
7
+ enum role: config.roles
8
+ delegate :super_user_roles, :guest_user_roles, to: :class
9
+ validates :role, presence: true
10
+ end
11
+ end
12
+
13
+ def super_user?
14
+ role.in?(super_user_roles)
15
+ end
16
+
17
+ def guest_user?
18
+ role.in?(guest_user_roles)
19
+ end
20
+
21
+ module ClassMethods
22
+ def manageable_roles
23
+ @_manageable_roles ||= roles.except(*manageless_roles)
24
+ end
25
+
26
+ def super_user_roles
27
+ @_super_user_roles ||= config.super_user_roles.try(:map, &:to_s) || []
28
+ end
29
+
30
+ def guest_user_roles
31
+ @_guest_users ||= config.guest_user_roles.try(:map, &:to_s) || []
32
+ end
33
+
34
+ private
35
+
36
+ def manageless_roles
37
+ (super_user_roles + guest_user_roles).flatten.compact
38
+ end
39
+
40
+ def config
41
+ ::ActiveAdminRole.config
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,3 @@
1
+ module ActiveAdminRole
2
+ VERSION = "0.1.0".freeze
3
+ end
@@ -0,0 +1,21 @@
1
+ require "active_admin"
2
+ require "active_admin_role/active_admin/dsl"
3
+ require "active_admin_role/active_admin/resource_controller"
4
+ require "active_admin_role/can_can/ability"
5
+ require "active_admin_role/config"
6
+ require "active_admin_role/engine"
7
+ require "active_admin_role/manageable_resource"
8
+ require "active_admin_role/model"
9
+ require "active_admin_role/role_based_authorizable"
10
+
11
+ module ActiveAdminRole
12
+ def self.configure
13
+ yield(config)
14
+ end
15
+
16
+ def self.config
17
+ @_config ||= Config.new
18
+ end
19
+ end
20
+
21
+ ::ActiveAdmin::DSL.send :include, ActiveAdminRole::ActiveAdmin::DSL
@@ -0,0 +1,9 @@
1
+ Description:
2
+ Generates the necessary files to get you up and running with ActiveAdminRole gem
3
+
4
+ Examples:
5
+ rails generate active_admin_role:install
6
+
7
+ This will generate the core migration file, the initializer file and the 'AdminUser' model class.
8
+
9
+ rails generate active_admin_role:install --model User
@@ -0,0 +1,64 @@
1
+ module ActiveAdminRole
2
+ module Generators
3
+ module Helper
4
+ def self.included(klass)
5
+ klass.send :extend, ClassMethods
6
+ end
7
+
8
+ private
9
+
10
+ def model_class_name
11
+ options[:model] ? options[:model].classify : "AdminUser"
12
+ end
13
+
14
+ def model_file_path
15
+ model_name.underscore
16
+ end
17
+
18
+ def model_path
19
+ @model_path ||= File.join("app", "models", "#{model_file_path}.rb")
20
+ end
21
+
22
+ def namespace
23
+ Rails::Generators.namespace if Rails::Generators.respond_to?(:namespace)
24
+ end
25
+
26
+ def namespaced?
27
+ !!namespace
28
+ end
29
+
30
+ def model_name
31
+ if namespaced?
32
+ [namespace.to_s] + [model_class_name]
33
+ else
34
+ [model_class_name]
35
+ end.join("::")
36
+ end
37
+
38
+ def inject_into_model
39
+ indents = " " * (namespaced? ? 2 : 1)
40
+ inject_into_class model_path, model_class_name, "#{indents}role_based_authorizable\n"
41
+ end
42
+
43
+ def migration_class_name
44
+ if Rails::VERSION::MAJOR >= 5
45
+ "ActiveRecord::Migration[#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}]"
46
+ else
47
+ "ActiveRecord::Migration"
48
+ end
49
+ end
50
+
51
+ module ClassMethods
52
+ # Define the next_migration_number method (necessary for the migration_template method to work)
53
+ def next_migration_number(dirname)
54
+ if ActiveRecord::Base.timestamped_migrations
55
+ sleep 1 # make sure each time we get a different timestamp
56
+ Time.new.utc.strftime("%Y%m%d%H%M%S")
57
+ else
58
+ format("%.3d", (current_migration_number(dirname) + 1))
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,54 @@
1
+ require "rails/generators/migration"
2
+ require "generators/active_admin_role/helper"
3
+
4
+ module ActiveAdminRole
5
+ module Generators
6
+ class InstallGenerator < ::Rails::Generators::Base
7
+ include Rails::Generators::Migration
8
+ include ActiveAdminRole::Generators::Helper
9
+
10
+ source_root File.expand_path("../templates", __FILE__)
11
+
12
+ class_option :model, optional: true,
13
+ type: :string,
14
+ banner: "model",
15
+ desc: "Specify the model class name if you will use anything other than `AdminUser`",
16
+ default: "AdminUser"
17
+
18
+ def copy_initializer_file
19
+ template "initializer.rb", "config/initializers/active_admin_role.rb"
20
+ end
21
+
22
+ def configure_model
23
+ generate :"active_admin:install #{model_class_name}" unless model_class_name.safe_constantize
24
+ inject_into_model
25
+ end
26
+
27
+ def copy_migration_files
28
+ migration_template "migration/add_role_to_admin_users.rb", "db/migrate/add_role_to_#{model_class_name.tableize}.rb", migration_class_name: migration_class_name
29
+ migration_template "migration/create_active_admin_managed_resources.rb", "db/migrate/create_active_admin_managed_resources.rb", migration_class_name: migration_class_name
30
+ migration_template "migration/create_active_admin_permissions.rb", "db/migrate/create_active_admin_permissions.rb", migration_class_name: migration_class_name
31
+ end
32
+
33
+ def copy_model_file
34
+ template "model/ability.rb", "app/models/ability.rb"
35
+ end
36
+
37
+ def configure_active_admin
38
+ gsub_file "config/initializers/active_admin.rb",
39
+ "# config.authorization_adapter = ActiveAdmin::CanCanAdapter",
40
+ "config.authorization_adapter = ActiveAdmin::CanCanAdapter"
41
+ end
42
+
43
+ def copy_admin_permission_file
44
+ template "admin/permission.rb", "app/admin/permission.rb"
45
+ end
46
+
47
+ def configure_admin_user_file
48
+ inject_into_file "app/admin/#{model_file_path}.rb",
49
+ " role_changeable\n",
50
+ after: "ActiveAdmin.register #{model_class_name} do\n"
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,71 @@
1
+ ActiveAdmin.register ::ActiveAdmin::Permission, as: "Permission" do
2
+ actions :index
3
+
4
+ filter :state, as: :select, collection: controller.resource_class.states
5
+
6
+ filter :managed_resource_action_equals, as: :select,
7
+ label: ::ActiveAdmin::ManagedResource.human_attribute_name(:action),
8
+ <%- if Rails::VERSION::MAJOR >= 5 -%>
9
+ collection: -> { ::ActiveAdmin::ManagedResource.distinct.order(:action).pluck(:action) }
10
+ <%- else -%>
11
+ collection: -> { ::ActiveAdmin::ManagedResource.uniq.order(:action).pluck(:action) }
12
+ <%- end -%>
13
+
14
+ filter :managed_resource_name_equals, as: :select,
15
+ label: ::ActiveAdmin::ManagedResource.human_attribute_name(:name),
16
+ <%- if Rails::VERSION::MAJOR >= 5 -%>
17
+ collection: -> { ::ActiveAdmin::ManagedResource.distinct.pluck(:name).sort }
18
+ <%- else -%>
19
+ collection: -> { ::ActiveAdmin::ManagedResource.uniq.pluck(:name).sort }
20
+ <%- end -%>
21
+
22
+ filter :managed_resource_class_name_equals, as: :select,
23
+ label: ::ActiveAdmin::ManagedResource.human_attribute_name(:class_name),
24
+ <%- if Rails::VERSION::MAJOR >= 5 -%>
25
+ collection: -> { ::ActiveAdmin::ManagedResource.distinct.order(:class_name).pluck(:class_name) }
26
+ <%- else -%>
27
+ collection: -> { ::ActiveAdmin::ManagedResource.uniq.order(:class_name).pluck(:class_name) }
28
+ <%- end -%>
29
+
30
+ scope :all, default: true
31
+
32
+ controller.resource_class.manageable_roles.each_key(&method(:scope))
33
+
34
+ controller.resource_class.states.each_key do |state|
35
+ batch_action state do |ids|
36
+ resource_class.clear_cache
37
+ resource_class.where(id: ids).update_all(state: resource_class.states[state])
38
+ <%- if Rails::VERSION::MAJOR >= 5 -%>
39
+ redirect_back fallback_location: admin_root_url, notice: t("views.permission.notice.state_changed", state: state)
40
+ <%- else -%>
41
+ redirect_to :back, notice: t("views.permission.notice.state_changed", state: state)
42
+ <%- end -%>
43
+ end
44
+ end
45
+
46
+ collection_action :reload, method: :post do
47
+ ::ActiveAdmin::ManagedResource.reload
48
+ <%- if Rails::VERSION::MAJOR >= 5 -%>
49
+ redirect_back(fallback_location: admin_root_url, notice: t("views.permission.notice.reloaded"))
50
+ <%- else -%>
51
+ redirect_to :back, notice: t("views.permission.notice.reloaded")
52
+ <%- end -%>
53
+ end
54
+
55
+ action_item :reload do
56
+ link_to t("views.permission.action_item.reload"), reload_admin_permissions_path, method: :post
57
+ end
58
+
59
+ includes :managed_resource
60
+
61
+ index do
62
+ selectable_column
63
+ column :role
64
+ column(:state) do |record|
65
+ status_tag(record.state, record.can? ? :ok : nil)
66
+ end
67
+ column :action
68
+ column :name
69
+ column :class_name
70
+ end
71
+ end
@@ -0,0 +1,18 @@
1
+ ActiveAdminRole.configure do |config|
2
+ # [Required:Hash]
3
+ # == Role | default: { guest: 0, support: 1, staff: 2, manager: 3, admin: 99 }
4
+ config.roles = { guest: 0, support: 1, staff: 2, manager: 3, admin: 99 }
5
+
6
+ # [Optional:Array]
7
+ # == Special roles which don't need to manage on database
8
+ config.super_user_roles = [:admin]
9
+ config.guest_user_roles = [:guest]
10
+
11
+ # [Optional:String]
12
+ # == User class name | default: 'AdminUser'
13
+ config.user_class_name = "<%= model_class_name %>"
14
+
15
+ # [Optional:Symbol]
16
+ # == Default permission | default: :cannot
17
+ config.default_state = :cannot
18
+ end
@@ -0,0 +1,5 @@
1
+ class AddRoleTo<%= model_class_name.tableize.camelize %> < <%= migration_class_name %>
2
+ def change
3
+ add_column :<%= model_class_name.tableize %>, :role, :integer, null: false, limit: 1, default: 0
4
+ end
5
+ end
@@ -0,0 +1,13 @@
1
+ class CreateActiveAdminManagedResources < <%= migration_class_name %>
2
+ def change
3
+ create_table :active_admin_managed_resources do |t|
4
+ t.string :class_name, null: false
5
+ t.string :action, null: false
6
+ t.string :name
7
+
8
+ t.timestamp null: false
9
+ end
10
+
11
+ add_index :active_admin_managed_resources, [:class_name, :action, :name], unique: true, name: "active_admin_managed_resources_index"
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ class CreateActiveAdminPermissions < <%= migration_class_name %>
2
+ def change
3
+ create_table :active_admin_permissions do |t|
4
+ t.integer :managed_resource_id, null: false
5
+ t.integer :role, null: false, limit: 1, default: 0
6
+ t.integer :state, null: false, limit: 1, default: 0
7
+
8
+ t.timestamp null: false
9
+ end
10
+
11
+ add_index :active_admin_permissions, [:managed_resource_id, :role], unique: true, name: "active_admin_permissions_index"
12
+ end
13
+ end
@@ -0,0 +1,17 @@
1
+ class Ability
2
+ include CanCan::Ability
3
+ include ActiveAdminRole::CanCan::Ability
4
+
5
+ def initialize(user)
6
+ user ||= <%= model_class_name %>.new
7
+
8
+ if user.super_user?
9
+ can :manage, :all
10
+ else
11
+ register_role_based_abilities(user)
12
+ end
13
+
14
+ # NOTE: Everyone can read the page of Permission Deny
15
+ can :read, ActiveAdmin::Page, name: "Dashboard"
16
+ end
17
+ end
data/tasks/test.rake ADDED
@@ -0,0 +1,10 @@
1
+ desc "Creates a test rails app for the specs to run against"
2
+ task :setup do
3
+ require "rails/version"
4
+ system("mkdir spec/rails") unless File.exist?("spec/rails")
5
+ system "bundle exec rails new spec/rails/rails-#{Rails::VERSION::STRING} -m spec/support/rails_template.rb --skip-spring --skip-turbolinks"
6
+ end
7
+
8
+ require "rspec/core/rake_task"
9
+ RSpec::Core::RakeTask.new(:spec)
10
+ task default: :spec
metadata ADDED
@@ -0,0 +1,110 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: active_admin_role
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Yoshiyuki Hirano
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-11-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activeadmin
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.0.0.pre4
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 1.0.0.pre4
27
+ - !ruby/object:Gem::Dependency
28
+ name: cancancan
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.15.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 1.15.0
41
+ description: Role based authorization with CanCanCan for Active Admin
42
+ email:
43
+ - yhirano@me.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - ".gitignore"
49
+ - ".rspec"
50
+ - ".rubocop.yml"
51
+ - ".ruby-style.yml"
52
+ - ".travis.yml"
53
+ - Appraisals
54
+ - Gemfile
55
+ - LICENSE.txt
56
+ - README.md
57
+ - Rakefile
58
+ - active_admin_role.gemspec
59
+ - app/models/active_admin/managed_resource.rb
60
+ - app/models/active_admin/permission.rb
61
+ - config/locales/en.yml
62
+ - config/locales/ja.yml
63
+ - gemfiles/.bundle/config
64
+ - gemfiles/rails42.gemfile
65
+ - gemfiles/rails50.gemfile
66
+ - lib/active_admin_role.rb
67
+ - lib/active_admin_role/active_admin/dsl.rb
68
+ - lib/active_admin_role/active_admin/resource_controller.rb
69
+ - lib/active_admin_role/can_can/ability.rb
70
+ - lib/active_admin_role/config.rb
71
+ - lib/active_admin_role/engine.rb
72
+ - lib/active_admin_role/manageable_resource.rb
73
+ - lib/active_admin_role/model.rb
74
+ - lib/active_admin_role/role_based_authorizable.rb
75
+ - lib/active_admin_role/version.rb
76
+ - lib/generators/active_admin_role/USAGE
77
+ - lib/generators/active_admin_role/helper.rb
78
+ - lib/generators/active_admin_role/install_generator.rb
79
+ - lib/generators/active_admin_role/templates/admin/permission.rb
80
+ - lib/generators/active_admin_role/templates/initializer.rb
81
+ - lib/generators/active_admin_role/templates/migration/add_role_to_admin_users.rb
82
+ - lib/generators/active_admin_role/templates/migration/create_active_admin_managed_resources.rb
83
+ - lib/generators/active_admin_role/templates/migration/create_active_admin_permissions.rb
84
+ - lib/generators/active_admin_role/templates/model/ability.rb
85
+ - tasks/test.rake
86
+ homepage: https://github.com/yhirano55/active_admin_role
87
+ licenses:
88
+ - MIT
89
+ metadata: {}
90
+ post_install_message:
91
+ rdoc_options: []
92
+ require_paths:
93
+ - lib
94
+ required_ruby_version: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: 2.1.0
99
+ required_rubygems_version: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ requirements: []
105
+ rubyforge_project:
106
+ rubygems_version: 2.5.2
107
+ signing_key:
108
+ specification_version: 4
109
+ summary: Role based authorization with CanCanCan for Active Admin
110
+ test_files: []