cantango-permits 0.1.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.
- data/.rspec +1 -0
- data/Gemfile +39 -0
- data/Gemfile.lock +155 -0
- data/MIT-LICENSE +20 -0
- data/README.mdown +362 -0
- data/Rakefile +45 -0
- data/VERSION +1 -0
- data/lib/cantango/executor.rb +5 -0
- data/lib/cantango/executor/base.rb +9 -0
- data/lib/cantango/executor/permit.rb +7 -0
- data/lib/cantango/executor/permit/abstract.rb +27 -0
- data/lib/cantango/executor/permit/base.rb +19 -0
- data/lib/cantango/executor/permit/special.rb +9 -0
- data/lib/cantango/executor/permit_type.rb +50 -0
- data/lib/cantango/license.rb +19 -0
- data/lib/cantango/license/rules.rb +17 -0
- data/lib/cantango/permit.mdown +4 -0
- data/lib/cantango/permit.rb +5 -0
- data/lib/cantango/permit/account_type.rb +44 -0
- data/lib/cantango/permit/attribute.rb +71 -0
- data/lib/cantango/permit/base.rb +94 -0
- data/lib/cantango/permit/class_methods.rb +49 -0
- data/lib/cantango/permit/helper.rb +11 -0
- data/lib/cantango/permit/helper/execution.rb +38 -0
- data/lib/cantango/permit/helper/host.rb +13 -0
- data/lib/cantango/permit/helper/license.rb +34 -0
- data/lib/cantango/permit/helper/naming.rb +38 -0
- data/lib/cantango/permit/helper/state.rb +21 -0
- data/lib/cantango/permit/special.rb +17 -0
- data/lib/cantango/permit/user.rb +36 -0
- data/lib/cantango/permit/user_type.rb +34 -0
- data/lib/cantango/permits.rb +20 -0
- data/lib/cantango/permits_ext.rb +7 -0
- data/lib/cantango/permits_ext/ability.rb +7 -0
- data/lib/cantango/permits_ext/ability/helper.rb +9 -0
- data/lib/cantango/permits_ext/ability/helper/permits.rb +8 -0
- data/lib/cantango/permits_ext/builder.rb +7 -0
- data/lib/cantango/permits_ext/builder/permit.rb +9 -0
- data/lib/cantango/permits_ext/builder/permit/account_type.rb +13 -0
- data/lib/cantango/permits_ext/builder/permit/base.rb +94 -0
- data/lib/cantango/permits_ext/builder/permit/special.rb +13 -0
- data/lib/cantango/permits_ext/builder/permit/user_type.rb +7 -0
- data/lib/cantango/permits_ext/class_methods.rb +28 -0
- data/lib/cantango/permits_ext/config.rb +11 -0
- data/lib/cantango/permits_ext/config/engines.rb +9 -0
- data/lib/cantango/permits_ext/config/engines/permit.rb +20 -0
- data/lib/cantango/permits_ext/config/permits.rb +43 -0
- data/lib/cantango/permits_ext/config/permits/accounts.rb +15 -0
- data/lib/cantango/permits_ext/config/permits/disabling.rb +22 -0
- data/lib/cantango/permits_ext/config/permits/enabling.rb +14 -0
- data/lib/cantango/permits_ext/config/permits/execution.rb +21 -0
- data/lib/cantango/permits_ext/config/permits/key.rb +19 -0
- data/lib/cantango/permits_ext/config/permits/registration.rb +33 -0
- data/lib/cantango/permits_ext/config/permits/tracking.rb +19 -0
- data/lib/cantango/permits_ext/config/permits/types.rb +25 -0
- data/lib/cantango/permits_ext/engine.rb +7 -0
- data/lib/cantango/permits_ext/engine/permits.rb +75 -0
- data/lib/cantango/permits_ext/factory.rb +7 -0
- data/lib/cantango/permits_ext/factory/permits.rb +40 -0
- data/lib/cantango/permits_ext/finder.rb +7 -0
- data/lib/cantango/permits_ext/finder/base.rb +35 -0
- data/lib/cantango/permits_ext/finder/permit.rb +7 -0
- data/lib/cantango/permits_ext/finder/permit/account.rb +47 -0
- data/lib/cantango/permits_ext/finder/permit/base.rb +53 -0
- data/lib/cantango/permits_ext/loader.rb +7 -0
- data/lib/cantango/permits_ext/loader/categories.rb +50 -0
- data/lib/cantango/permits_ext/loader/license.rb +19 -0
- data/lib/cantango/permits_ext/macros.rb +7 -0
- data/lib/cantango/permits_ext/macros/permit.rb +32 -0
- data/lib/cantango/permits_ext/parser.rb +7 -0
- data/lib/cantango/permits_ext/parser/categories.rb +15 -0
- data/lib/cantango/permits_ext/registry.rb +7 -0
- data/lib/cantango/permits_ext/registry/permit.rb +45 -0
- data/lib/generators/cantango/account_permit/account_permit_generator.rb +37 -0
- data/lib/generators/cantango/account_permit/templates/account_permit.erb +23 -0
- data/lib/generators/cantango/base.rb +71 -0
- data/lib/generators/cantango/basic.rb +41 -0
- data/lib/generators/cantango/license/license_generator.rb +29 -0
- data/lib/generators/cantango/license/templates/license.erb +10 -0
- data/lib/generators/cantango/license_base.rb +15 -0
- data/lib/generators/cantango/licenses/licenses_generator.rb +26 -0
- data/lib/generators/cantango/permit_generator.rb +58 -0
- data/lib/generators/cantango/role_permit/role_permit_generator.rb +39 -0
- data/lib/generators/cantango/role_permit/templates/account_permit.erb +4 -0
- data/lib/generators/cantango/role_permit/templates/role_group_permit.erb +24 -0
- data/lib/generators/cantango/role_permit/templates/role_permit.erb +23 -0
- data/lib/generators/cantango/role_permits/role_permits_generator.rb +45 -0
- data/lib/generators/cantango/user_permit/templates/account_permit.erb +5 -0
- data/lib/generators/cantango/user_permit/templates/user_permit.erb +23 -0
- data/lib/generators/cantango/user_permit/user_permit_generator.rb +36 -0
- data/lib/tasks/permits_tasks.rake +4 -0
- data/spec/cantango/ability/helper/permits_spec.rb +14 -0
- data/spec/cantango/builder/permit/account_type_spec.rb +25 -0
- data/spec/cantango/builder/permit/base_spec.rb +30 -0
- data/spec/cantango/builder/permit/special_spec.rb +25 -0
- data/spec/cantango/builder/permit/user_type_spec.rb +27 -0
- data/spec/cantango/config/engines/permit_spec.rb +14 -0
- data/spec/cantango/config/engines_spec.rb +142 -0
- data/spec/cantango/config/permit_registry_ex.rb +9 -0
- data/spec/cantango/config/permit_registry_spec.rb +8 -0
- data/spec/cantango/config/permits/accounts_spec.rb +23 -0
- data/spec/cantango/config/permits/disabling_spec.rb +38 -0
- data/spec/cantango/config/permits/enabling_spec.rb +19 -0
- data/spec/cantango/config/permits/execution_spec.rb +27 -0
- data/spec/cantango/config/permits/registration_spec.rb +15 -0
- data/spec/cantango/config/permits/tracking_spec.rb +19 -0
- data/spec/cantango/config/permits/types_spec.rb +27 -0
- data/spec/cantango/config/permits_spec.rb +76 -0
- data/spec/cantango/engine/permit_cached_spec.rb +52 -0
- data/spec/cantango/engine/permit_spec.rb +58 -0
- data/spec/cantango/engine/permit_static_dynamic_spec.rb +65 -0
- data/spec/cantango/executor/custom_permit_spec.rb +65 -0
- data/spec/cantango/executor/more_permit_spec.rb +45 -0
- data/spec/cantango/executor/permit_base_spec.rb +46 -0
- data/spec/cantango/executor/permit_spec.rb +53 -0
- data/spec/cantango/executor/special_permit_spec.rb +36 -0
- data/spec/cantango/factory/permits_spec.rb +70 -0
- data/spec/cantango/finder/account_permit_spec.rb +30 -0
- data/spec/cantango/finder/permit_spec.rb +23 -0
- data/spec/cantango/license/save_license_spec.rb +24 -0
- data/spec/cantango/license_spec.rb +0 -0
- data/spec/cantango/loader/categories_spec.rb +47 -0
- data/spec/cantango/loader/license_spec.rb +7 -0
- data/spec/cantango/macros/permit_spec.rb +38 -0
- data/spec/cantango/parser/categories_spec.rb +19 -0
- data/spec/cantango/permit/account_type_spec.rb +34 -0
- data/spec/cantango/permit/attribute_permit_spec.rb +65 -0
- data/spec/cantango/permit/base_spec.rb +106 -0
- data/spec/cantango/permit/class_methods_spec.rb +34 -0
- data/spec/cantango/permit/helper/execution_spec.rb +54 -0
- data/spec/cantango/permit/helper/host_spec.rb +29 -0
- data/spec/cantango/permit/helper/license_spec.rb +37 -0
- data/spec/cantango/permit/helper/naming_spec.rb +56 -0
- data/spec/cantango/permit/helper/state_spec.rb +24 -0
- data/spec/cantango/permit/special_default_spec.rb +2 -0
- data/spec/cantango/permit/special_first_spec.rb +2 -0
- data/spec/cantango/permit/user_type_spec.rb +78 -0
- data/spec/cantango/registry/permit_spec.rb +67 -0
- data/spec/fixtures/config/cantango_permissions.yml +49 -0
- data/spec/fixtures/config/categories.yml +6 -0
- data/spec/fixtures/config/evaluator_fixtures.yml +18 -0
- data/spec/fixtures/config/licenses.yml +4 -0
- data/spec/fixtures/config/permissions.yml +60 -0
- data/spec/fixtures/config/role_group.yml +4 -0
- data/spec/fixtures/config/roles.yml +4 -0
- data/spec/fixtures/config/test_permissions.yml +55 -0
- data/spec/fixtures/config/user_permissions.yml +8 -0
- data/spec/fixtures/models.rb +15 -0
- data/spec/fixtures/models/admin.rb +2 -0
- data/spec/fixtures/models/admin_account.rb +22 -0
- data/spec/fixtures/models/items.rb +11 -0
- data/spec/fixtures/models/permission.rb +12 -0
- data/spec/fixtures/models/simple_roles.rb +49 -0
- data/spec/fixtures/models/user.rb +52 -0
- data/spec/fixtures/models/user_account.rb +21 -0
- data/spec/fixtures/tango_fixtures.rb +29 -0
- data/spec/generators/cantango/account_role_permit_generator_spec.rb +35 -0
- data/spec/generators/cantango/account_role_permits_generator_spec.rb +59 -0
- data/spec/generators/cantango/license_generator_spec.rb +33 -0
- data/spec/generators/cantango/licenses_generator_spec.rb +58 -0
- data/spec/generators/cantango/role_permit_generator_spec.rb +35 -0
- data/spec/generators/cantango/role_permits_generator_spec.rb +58 -0
- data/spec/helpers/current_user_accounts.rb +20 -0
- data/spec/helpers/current_users.rb +10 -0
- data/spec/spec_helper.rb +24 -0
- metadata +325 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
module Cantango
|
|
2
|
+
module Generators
|
|
3
|
+
module Basic
|
|
4
|
+
def rules_logic
|
|
5
|
+
''
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def license_logic
|
|
9
|
+
''
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def base_logic
|
|
13
|
+
%{
|
|
14
|
+
}
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def admin_logic
|
|
18
|
+
%{
|
|
19
|
+
can :manage, :all
|
|
20
|
+
}
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def guest_logic
|
|
24
|
+
%{
|
|
25
|
+
can :read, :all
|
|
26
|
+
}
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def account
|
|
30
|
+
options[:account]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
[:is_user, :is_account, :is_group].each do |name|
|
|
34
|
+
define_method :"#{name}?" do
|
|
35
|
+
false
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require 'generators/cantango/base'
|
|
2
|
+
require 'generators/cantango/license_base'
|
|
3
|
+
|
|
4
|
+
module Cantango
|
|
5
|
+
module Generators
|
|
6
|
+
class LicenseGenerator < Cantango::Generators::Base
|
|
7
|
+
desc "Creates a License for a Permit in 'app/licenses' with reusable permissions"
|
|
8
|
+
|
|
9
|
+
argument :name, :type => :string, :desc => "Name of license"
|
|
10
|
+
|
|
11
|
+
class_option :licenses, :type => :array, :default => [], :desc => "Sub licenses"
|
|
12
|
+
|
|
13
|
+
source_root File.dirname(__FILE__) + '/templates'
|
|
14
|
+
|
|
15
|
+
def main_flow
|
|
16
|
+
return if name.empty?
|
|
17
|
+
create_license
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
protected
|
|
21
|
+
|
|
22
|
+
def create_license
|
|
23
|
+
template "license.erb", "app/permits/licenses/#{name}_license.rb"
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
include Cantango::Generators::LicenseBase
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module Cantango
|
|
2
|
+
module Generators
|
|
3
|
+
module LicenseBase
|
|
4
|
+
def licenses
|
|
5
|
+
options[:licenses]
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def license_logic
|
|
9
|
+
return ' # use any licenses here' if licenses.empty?
|
|
10
|
+
ls = licenses.map{|c| ":#{c}"}.join(", ")
|
|
11
|
+
"licenses #{ls}"
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Cantango
|
|
2
|
+
module Generators
|
|
3
|
+
class LicensesGenerator < Rails::Generators::Base
|
|
4
|
+
desc "Creates Licenses for use with CanCan Permits"
|
|
5
|
+
|
|
6
|
+
argument :licenses, :type => :array, :desc => "Licenses"
|
|
7
|
+
|
|
8
|
+
source_root File.dirname(__FILE__) + '/../license/templates'
|
|
9
|
+
|
|
10
|
+
def main_flow
|
|
11
|
+
licenses.each do |license|
|
|
12
|
+
template_license(license)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
protected
|
|
17
|
+
|
|
18
|
+
attr_accessor :license_name
|
|
19
|
+
|
|
20
|
+
def template_license name
|
|
21
|
+
self.license_name = name
|
|
22
|
+
template "license.erb", "app/licenses/#{name}_license.rb"
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
require 'generators/cantango/basic'
|
|
2
|
+
|
|
3
|
+
module Cantango
|
|
4
|
+
module Generators
|
|
5
|
+
module PermitGenerator
|
|
6
|
+
attr_accessor :permit_name, :permit_logic
|
|
7
|
+
|
|
8
|
+
include Cantango::Generators::Basic
|
|
9
|
+
|
|
10
|
+
def template_permit name, account = nil
|
|
11
|
+
@permit_name = name
|
|
12
|
+
set_logic name
|
|
13
|
+
account.present? ? template_account_permit(name, account) : template_simple_permit(name)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def template_simple_permit name
|
|
17
|
+
template permit_source, "app/permits/#{permit_target(name)}"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def template_account_permit name, account
|
|
21
|
+
template "account_permit.erb" , "app/permits/#{account}/#{permit_target(name)}"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def load_permit_template name
|
|
25
|
+
template = ERB.new File.open(template_filepath).read.gsub(/\n/, "\n\s\s")
|
|
26
|
+
template.result(binding)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def template_filepath
|
|
30
|
+
File.join source_path, permit_source
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def source_path
|
|
34
|
+
source_paths.first
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def permit_source
|
|
38
|
+
return "user_permit.erb" if is_user?
|
|
39
|
+
return "account_permit.erb" if is_account?
|
|
40
|
+
|
|
41
|
+
is_group? ? "role_group_permit.erb" : "role_permit.erb"
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def permit_target name
|
|
45
|
+
name = name.to_s.underscore
|
|
46
|
+
return "#{name}_permit.rb" if is_user?
|
|
47
|
+
return "#{name}_account_permit.rb" if is_account?
|
|
48
|
+
|
|
49
|
+
is_group? ? "#{name}_role_group_permit.rb" : "#{name}_role_permit.rb"
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def set_logic name
|
|
53
|
+
meth = "#{name}_logic"
|
|
54
|
+
@permit_logic = respond_to?(meth) ? send(meth) : base_logic
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require 'generators/cantango/base'
|
|
2
|
+
require 'generators/cantango/license_base'
|
|
3
|
+
require 'generators/cantango/permit_generator'
|
|
4
|
+
|
|
5
|
+
module Cantango
|
|
6
|
+
module Generators
|
|
7
|
+
class RolePermitGenerator < Cantango::Generators::Base
|
|
8
|
+
desc "Creates a Permit for a role in 'app/permits' with specific permissions and/or licenses"
|
|
9
|
+
|
|
10
|
+
argument :role, :type => :string,
|
|
11
|
+
:desc => "Role to create permit for"
|
|
12
|
+
|
|
13
|
+
class_option :licenses, :type => :array, :default => [],
|
|
14
|
+
:desc => "Licenses to use in Permit"
|
|
15
|
+
|
|
16
|
+
class_option :account, :type => :string,
|
|
17
|
+
:desc => "Generate permits for a specific user account"
|
|
18
|
+
|
|
19
|
+
class_option :group, :type => :boolean, :default => false, :desc => "Generate permit for a role group"
|
|
20
|
+
|
|
21
|
+
source_root File.dirname(__FILE__) + '/templates'
|
|
22
|
+
|
|
23
|
+
def main_flow
|
|
24
|
+
template_permit role
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
protected
|
|
28
|
+
|
|
29
|
+
include Cantango::Generators::LicenseBase
|
|
30
|
+
include Cantango::Generators::PermitGenerator
|
|
31
|
+
|
|
32
|
+
alias_method :role_group, :role
|
|
33
|
+
|
|
34
|
+
def is_group?
|
|
35
|
+
options[:group]
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
class <%= permit_name.to_s.camelize %>RoleGroupPermit < CanTango::RoleGroupPermit
|
|
2
|
+
def initialize ability
|
|
3
|
+
super
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
protected
|
|
7
|
+
|
|
8
|
+
def permit_rules
|
|
9
|
+
# insert your can, cannot and any other rule statements here
|
|
10
|
+
<%= rules_logic.strip %>
|
|
11
|
+
<%= license_logic %>
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
module Cached
|
|
15
|
+
def permit_rules
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
module NonCached
|
|
20
|
+
def permit_rules
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
class <%= permit_name.to_s.camelize %>RolePermit < CanTango::RolePermit
|
|
2
|
+
def initialize ability
|
|
3
|
+
super
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
protected
|
|
7
|
+
|
|
8
|
+
def permit_rules
|
|
9
|
+
# insert your can, cannot and any other rule statements here
|
|
10
|
+
<%= rules_logic.strip %>
|
|
11
|
+
<%= license_logic %>
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
module Cached
|
|
15
|
+
def permit_rules
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
module NonCached
|
|
20
|
+
def permit_rules
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require 'generators/cantango/permit_generator'
|
|
2
|
+
|
|
3
|
+
module Cantango
|
|
4
|
+
module Generators
|
|
5
|
+
class RolePermitsGenerator < Rails::Generators::Base
|
|
6
|
+
desc "Creates a Permit for each role in 'app/permits' and ensures that the permit folder is added to Rails load path."
|
|
7
|
+
|
|
8
|
+
argument :roles, :type => :array,
|
|
9
|
+
:desc => "Roles to create permits for"
|
|
10
|
+
|
|
11
|
+
class_option :special_permits, :type => :boolean, :default => false,
|
|
12
|
+
:desc => "Create special permits Syatem and Any"
|
|
13
|
+
|
|
14
|
+
class_option :account, :type => :string,
|
|
15
|
+
:desc => "Generate permits for a specific user account"
|
|
16
|
+
|
|
17
|
+
class_option :group, :type => :boolean, :default => false,
|
|
18
|
+
:desc => "Generate permits for role groups"
|
|
19
|
+
|
|
20
|
+
source_root File.dirname(__FILE__) + '/../role_permit/templates'
|
|
21
|
+
|
|
22
|
+
def main_flow
|
|
23
|
+
create_special_permits if special_permits?
|
|
24
|
+
create_permits
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
protected
|
|
28
|
+
|
|
29
|
+
include Cantango::Generators::PermitGenerator
|
|
30
|
+
|
|
31
|
+
def create_special_permits
|
|
32
|
+
template_permit :any
|
|
33
|
+
template_permit :system
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def create_permits
|
|
37
|
+
roles.each { |role| template_permit role }
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def special_permits?
|
|
41
|
+
options[:special_permits]
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
class <%= user.to_s.camelize %>Permit < CanTango::UserPermit
|
|
2
|
+
def initialize ability
|
|
3
|
+
super
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
protected
|
|
7
|
+
|
|
8
|
+
def permit_rules
|
|
9
|
+
# insert your can, cannot and any other rule statements here
|
|
10
|
+
<%= permit_logic.strip %>
|
|
11
|
+
<%= license_logic %>
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
module Cached
|
|
15
|
+
def permit_rules
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
module NonCached
|
|
20
|
+
def permit_rules
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require 'generators/cantango/base'
|
|
2
|
+
require 'generators/cantango/license_base'
|
|
3
|
+
require 'generators/cantango/permit_generator'
|
|
4
|
+
|
|
5
|
+
module Cantango
|
|
6
|
+
module Generators
|
|
7
|
+
class UserPermitGenerator < Cantango::Generators::Base
|
|
8
|
+
desc "Creates a Permit for a user in 'app/permits' with specific permissions and/or licenses"
|
|
9
|
+
|
|
10
|
+
argument :user, :type => :string, :desc => "User class to create permit for"
|
|
11
|
+
|
|
12
|
+
class_option :licenses, :type => :array, :default => [], :desc => "Licenses to use in Permit"
|
|
13
|
+
|
|
14
|
+
class_option :account, :type => :string,
|
|
15
|
+
:desc => "Generate permits for a specific user account"
|
|
16
|
+
|
|
17
|
+
class_option :group, :type => :boolean, :default => false, :desc => "Generate permit for a role group"
|
|
18
|
+
|
|
19
|
+
source_root File.dirname(__FILE__) + '/templates'
|
|
20
|
+
|
|
21
|
+
def main_flow
|
|
22
|
+
template_permit user, account
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
protected
|
|
26
|
+
|
|
27
|
+
def is_user?
|
|
28
|
+
true
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
include Cantango::Generators::LicenseBase
|
|
32
|
+
include Cantango::Generators::PermitGenerator
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
class Context
|
|
4
|
+
include CanTango::Ability::Helper::Permits
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
describe CanTango::Ability::Helper::Permits do
|
|
8
|
+
subject { Context.new }
|
|
9
|
+
describe 'permits?' do
|
|
10
|
+
specify do
|
|
11
|
+
subject.permits?.should == CanTango.config.permits.on?
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
class AdminAccountPermitBuilder < CanTango::Builder::Permit::AccountType
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
describe CanTango::Builder::Permit::AccountType do
|
|
7
|
+
before do
|
|
8
|
+
@user = User.new 'kris', 'kris@mail.ru', :roles => [:editor]
|
|
9
|
+
@ability = CanTango::Ability::Base.new @user
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
subject do
|
|
13
|
+
AdminAccountPermitBuilder.new @ability
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
its(:permit_type) { should == :account_type }
|
|
17
|
+
|
|
18
|
+
describe 'build' do
|
|
19
|
+
its(:build) { should be_a CanTango::Permit::AccountType }
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
describe 'self.permit_type' do
|
|
23
|
+
specify { AdminAccountPermitBuilder.permit_type.should == :account_type }
|
|
24
|
+
end
|
|
25
|
+
end
|