permissify 0.0.20 → 0.0.21
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/lib/generators/permissify/ability/template/abilities.rb +36 -9
- data/lib/generators/permissify/controller/template/permissified_controller.rb +1 -1
- data/lib/generators/permissify/install/install_generator.rb +3 -2
- data/lib/generators/permissify/install/templates/create_products_tables.rb +21 -0
- data/lib/generators/permissify/product/product_generator.rb +9 -7
- data/lib/generators/permissify/product/template/controller.rb +5 -0
- data/lib/generators/permissify/product/template/helper.rb +3 -0
- data/lib/generators/permissify/product/template/interface/{permissified_brand.rb → brand.rb} +1 -1
- data/lib/generators/permissify/product/template/interface/corporation.rb +7 -0
- data/lib/generators/permissify/product/template/interface/dealer.rb +7 -0
- data/lib/generators/permissify/product/template/interface/{permissified_merchant.rb → merchant.rb} +1 -1
- data/lib/generators/permissify/product/template/product.rb +10 -23
- data/lib/generators/permissify/product/template/products.rb +73 -0
- data/lib/generators/permissify/product/template/views/_additional_index_columns.html.erb +0 -0
- data/lib/generators/permissify/product/template/views/_permissions_fields.html.erb +24 -0
- data/lib/generators/permissify/role/template/role.rb +2 -1
- data/lib/generators/permissify/role/template/roles.rb +5 -5
- data/lib/generators/permissify/views/template/permissions/_form.erb +1 -1
- metadata +14 -6
@@ -8,22 +8,49 @@ module SystemFixtures::Abilities
|
|
8
8
|
# can organize permissions into categories that correspond to your client's/product team's view of app.
|
9
9
|
# suggest playing with your Ability class and the builder methods in console.
|
10
10
|
|
11
|
-
#
|
12
|
-
#
|
13
|
-
|
14
|
-
#
|
15
|
-
#
|
11
|
+
# Can define PERMISSIFIED_ABILITY_APPLICABILITY in any model
|
12
|
+
# users_only = [Role::PERMISSIFIED_ABILITY_APPLICABILITY]
|
13
|
+
# products_only => [Product::PERMISSIFIED_ABILITY_APPLICABILITY]
|
14
|
+
# products_and_roles => users_only + products_only
|
15
|
+
#
|
16
|
+
# add_category('Tabs', 'Tabs', users_only, %w(Admin Dealers Corporations Brands Merchants))
|
16
17
|
# { 'Roles' => 'Admin',
|
18
|
+
# 'Products' => 'Admin',
|
17
19
|
# 'Admin Users' => 'Admin',
|
18
20
|
# 'Dealers' => 'Dealer Admin',
|
19
21
|
# 'Dealer Users' => 'Dealer Admin',
|
20
|
-
# 'Corporation Users' => 'Corporation Admin',
|
21
22
|
# 'Corporations' => 'Corporation Admin',
|
22
|
-
# '
|
23
|
+
# 'Corporation Users' => 'Corporation Admin',
|
23
24
|
# 'Brands' => 'Brand Admin',
|
24
|
-
# '
|
25
|
+
# 'Brand Users' => 'Brand Admin',
|
25
26
|
# 'Merchants' => 'Merchant Admin',
|
26
|
-
#
|
27
|
+
# 'Merchant Users' => 'Merchant Admin',
|
28
|
+
# }.each{ |category, section| add_category(category, section, users_only) }
|
29
|
+
#
|
30
|
+
# { 'Corporation Products' => 'Corporation Admin',
|
31
|
+
# 'Brand Products' => 'Brand Admin',
|
32
|
+
# 'Merchant Products' => 'Merchant Admin',
|
33
|
+
# }.each{ |category, section| add_category(category, section, users_only, %w(View Update)) }
|
34
|
+
|
35
|
+
# add_category('Social Media', 'Social Media', products_and_roles, %w(Setup View Create Schedule Repeat))
|
36
|
+
# add_category('Facebook', 'Social Media', products_and_roles, %w(Post Comment Like Remove))
|
37
|
+
# add_category('Twitter', 'Social Media', products_and_roles, %w(Tweet Retweet Respond Remove))
|
38
|
+
#
|
39
|
+
#
|
40
|
+
# [ 'Online Ordering',
|
41
|
+
# 'Loyalty',
|
42
|
+
# 'Webpage Builder',
|
43
|
+
# 'eGift',
|
44
|
+
# 'Guest Management',
|
45
|
+
# 'Social Media 1',
|
46
|
+
# 'Social Media 2',
|
47
|
+
# 'Social Media 3',
|
48
|
+
# 'Marketing Engine',
|
49
|
+
# 'Social Marketing Engine',
|
50
|
+
# ].each do |feature_bit|
|
51
|
+
# add_category(feature_bit, 'Solutions', products_only, %w(On))
|
52
|
+
# end
|
53
|
+
|
27
54
|
end
|
28
55
|
|
29
56
|
end
|
@@ -4,7 +4,7 @@ module PermissifiedController # Interfaces : override/rewrite as needed for your
|
|
4
4
|
PERMISSIFY = SPECIFY_PERMISSIFIED_MODEL_LIST_IN__APP__CONTROLLERS__PERMISSIFIED_CONTROLLER
|
5
5
|
|
6
6
|
# PERMISSIFY = { User::PERMISSIFIED_ABILITY_APPLICABILITY => :current_user,
|
7
|
-
#
|
7
|
+
# Product::PERMISSIFIED_ABILITY_APPLICABILITY => :current_entity,
|
8
8
|
# }
|
9
9
|
|
10
10
|
end
|
@@ -17,8 +17,9 @@ module Permissify
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def copy_migrations
|
20
|
-
|
21
|
-
|
20
|
+
%w(create_roles_tables.rb create_products_tables.rb).each do |migration_file|
|
21
|
+
migration_template migration_file, "db/migrate/#{migration_file}"
|
22
|
+
end
|
22
23
|
end
|
23
24
|
|
24
25
|
def generate_install
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class CreateProductsTables < ActiveRecord::Migration
|
2
|
+
def up
|
3
|
+
|
4
|
+
create_table :products, :force => true do |t|
|
5
|
+
t.string :name
|
6
|
+
t.text :permissions
|
7
|
+
t.datetime :deleted_at
|
8
|
+
end
|
9
|
+
|
10
|
+
create_table :merchants_products, :id => false, :force => true do |t|
|
11
|
+
t.integer :merchant_id, :null => false
|
12
|
+
t.integer :product_id, :null => false
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
def down
|
18
|
+
drop_table :products
|
19
|
+
drop_table :businesses_products
|
20
|
+
end
|
21
|
+
end
|
@@ -4,13 +4,15 @@ module Permissify
|
|
4
4
|
source_root File.expand_path('../template', __FILE__)
|
5
5
|
|
6
6
|
def generate_product
|
7
|
-
|
8
|
-
copy_file "
|
9
|
-
copy_file "
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
7
|
+
|
8
|
+
copy_file "product.rb", "app/models/product.rb"
|
9
|
+
copy_file "products.rb", "app/models/system_fixtures/products.rb"
|
10
|
+
copy_file "controller.rb","app/helpers/products_controller.rb"
|
11
|
+
copy_file "helper.rb", "app/helpers/products_helper.rb"
|
12
|
+
|
13
|
+
directory "interface", "app/models/permissified_products_interface"
|
14
|
+
directory "views", "app/views/products"
|
15
|
+
|
14
16
|
end
|
15
17
|
end
|
16
18
|
end
|
@@ -1,30 +1,17 @@
|
|
1
1
|
class Product < ActiveRecord::Base
|
2
|
+
|
3
|
+
include Permissify::Model
|
4
|
+
|
5
|
+
# TODO : see how much of the following stuff can be rolled into ModelClass :
|
2
6
|
validates_presence_of :name
|
3
7
|
validates_uniqueness_of :name
|
4
|
-
before_create
|
5
|
-
serialize
|
6
|
-
include Permissify::Model
|
7
|
-
# is_paranoid
|
8
|
-
default_scope :conditions => {:deleted_at => nil}, :order => "products.name"
|
8
|
+
before_create :initialize_permissions
|
9
|
+
serialize :permissions
|
9
10
|
|
10
11
|
class << self
|
11
12
|
include Permissify::ModelClass
|
12
|
-
include SystemFixtures::Products
|
13
|
-
|
14
|
-
# TODO : this stuff should be plugged in by app
|
15
|
-
def revenuepwr; locate(1, 'revenuePWR'); end
|
16
|
-
def integrated_reservations; locate(3, 'Integrated Reservations'); end
|
17
|
-
def pos_integration; locate(3, 'POS Integration'); end
|
18
|
-
def standalone_reservations; locate(4, 'Standalone Reservations'); end
|
19
|
-
def online_ordering; locate(5, 'Online Ordering'); end
|
20
|
-
def loyalty; locate(6, 'Loyalty'); end
|
21
|
-
def webpage_builder; locate(7, 'Webpage Builder'); end
|
22
|
-
def egift; locate(8, 'eGift'); end
|
23
|
-
def guest_management; locate(12, 'Guest Management'); end
|
24
|
-
def mobile_marketing; locate(13, 'Mobile Marketing'); end
|
25
|
-
def offers_and_incentives; locate(14, 'Offers & Incentives'); end
|
26
|
-
def revenuepwr_lite; locate(15, 'revenuePWR Lite'); end
|
27
|
-
def waitlist; locate(16, 'Waitlist'); end
|
28
|
-
def consumer_driven_deals; locate(17, 'Consumer-Driven Deals'); end
|
13
|
+
include SystemFixtures::Products # app needs to provide this logic/specification : see example at app/models/system_fixtures/products.rb
|
14
|
+
PERMISSIFIED_ABILITY_APPLICABILITY = 'Product'
|
29
15
|
end
|
30
|
-
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
module SystemFixtures::Products
|
2
|
+
SEED_SPECIFICATIONS = [
|
3
|
+
[1, 'Basic Service'],
|
4
|
+
[2, 'Online Ordering'],
|
5
|
+
[3, 'Loyalty'],
|
6
|
+
[4, 'Webpage Builder'],
|
7
|
+
[5, 'eGift'],
|
8
|
+
[6, 'Guest Management'],
|
9
|
+
[7, 'Marketing Engine']
|
10
|
+
[8, 'Social Media 1']
|
11
|
+
[9, 'Social Media 2']
|
12
|
+
[10, 'Social Media 3']
|
13
|
+
[11, 'Social Marketing Engine']
|
14
|
+
]
|
15
|
+
|
16
|
+
def seeded?(tier); tier.id < 8; end
|
17
|
+
def seed; create_seeds :products, SEED_SPECIFICATIONS; end
|
18
|
+
|
19
|
+
def create_basic_service; create_with 1; end
|
20
|
+
def create_online_ordering; create_with 2; end
|
21
|
+
def create_loyalty; create_with 3; end
|
22
|
+
def create_webpage_builder; create_with 4; end
|
23
|
+
def create_egift; create_with 5; end
|
24
|
+
def create_guest_management; create_with 6; end
|
25
|
+
def create_marketing_engine; create_with 7; end
|
26
|
+
def create_social_media_1; create_with 8; end
|
27
|
+
def create_social_media_2; create_with 9; end
|
28
|
+
def create_social_media_3; create_with 10; end
|
29
|
+
def create_social_marketing_engine; create_with 10; end
|
30
|
+
def create_with(id); create_with_id(:product, id, SEED_SPECIFICATIONS.assoc(id)[1]); end
|
31
|
+
|
32
|
+
def basic_service_permissions
|
33
|
+
permissions = Ability.create_permissions_hash([], [], %w(Product Role))
|
34
|
+
permissions
|
35
|
+
end
|
36
|
+
def online_ordering_permissions; ph :online_ordering_on; end
|
37
|
+
def loyalty_permissions; ph :loyalty_on; end
|
38
|
+
def webpage_builder_permissions
|
39
|
+
permissions_hash = Ability.create_permissions_hash([], %w(email sms social_media), %w(Product Role)).merge(ph(:webpage_builder_on))
|
40
|
+
end
|
41
|
+
def egift_permissions; ph :egift_on; end
|
42
|
+
def guest_management_permissions; ph :guest_management_on; end
|
43
|
+
def marketing_engine_permissions; ph :marketing_engine_on; end
|
44
|
+
|
45
|
+
def social_media_1_permissions
|
46
|
+
permissions = Ability.create_permissions_hash([], %w(social_media facebook twitter), %w(Product Role))
|
47
|
+
permissions[:social_media_setup] = {'0' => '1'}
|
48
|
+
permissions[:social_media_view] = {'0' => '1'}
|
49
|
+
permissions
|
50
|
+
end
|
51
|
+
def social_media_2_permissions
|
52
|
+
permissions = social_media_1_permissions
|
53
|
+
permissions[:social_media_create] = {'0' => '1'}
|
54
|
+
permissions[:facebook_post] = {'0' => '1'}
|
55
|
+
permissions[:twitter_tweet] = {'0' => '1'}
|
56
|
+
permissions
|
57
|
+
end
|
58
|
+
def social_media_3_permissions
|
59
|
+
Ability.create_permissions_hash([], %w(social_media_repeat), %w(Product Role))
|
60
|
+
end
|
61
|
+
def social_marketing_engine_permissions
|
62
|
+
permissions = social_media_3_permissions
|
63
|
+
permissions[:marketing_engine_on] = {'0' => '1'}
|
64
|
+
permissions
|
65
|
+
end
|
66
|
+
|
67
|
+
def ph(permissions)
|
68
|
+
permissions_hash = {}
|
69
|
+
permissions = [permissions] unless permissions.kind_of?(Array)
|
70
|
+
permissions.each{|p| permissions_hash[p.to_s] = {"0"=>"1"}}
|
71
|
+
permissions_hash
|
72
|
+
end
|
73
|
+
end
|
File without changes
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<tr>
|
2
|
+
<td ><%= label :product, :name, "Name"%></td>
|
3
|
+
<td><%= text_field :product, :name, :maxlength => 255, :size => 46 %></td>
|
4
|
+
<td style="vertical-align:bottom;"><%= required_field %></td>
|
5
|
+
</tr>
|
6
|
+
|
7
|
+
<tr>
|
8
|
+
<td style="vertical-align:text-top;"><%= label :product, :description, "Description" %></td>
|
9
|
+
<td colspan="2"><%= text_area :product, :description, :rows => 2, :columns => 60 %></td>
|
10
|
+
</tr>
|
11
|
+
|
12
|
+
<tr>
|
13
|
+
<td style="vertical-align:text-top;"><%= "revenuePWR Instances" %></td>
|
14
|
+
<td>
|
15
|
+
<div class="checkCont">
|
16
|
+
<% Instance.find(:all, :conditions => ["id in (?)", @current_user.instances.collect(&:id)]).each do |i| %>
|
17
|
+
<label>
|
18
|
+
<%= check_box_tag "#{@permissions_object.class.to_s.underscore}[instance_ids][]", i.id, @permissions_object.instances.include?(i) %>
|
19
|
+
<%= i.name %>
|
20
|
+
</label><br/>
|
21
|
+
<% end %>
|
22
|
+
</div>
|
23
|
+
</td>
|
24
|
+
</tr>
|
@@ -16,7 +16,8 @@ class Role < ActiveRecord::Base
|
|
16
16
|
class << self
|
17
17
|
include Permissify::ModelClass
|
18
18
|
include SystemFixtures::Roles
|
19
|
-
|
19
|
+
PERMISSIFIED_ABILITY_APPLICABILITY = 'Role'
|
20
|
+
|
20
21
|
def force_seed_id(table, permissions_model, id)
|
21
22
|
# not sure if this is still needed, may differ depending on db adapter (written against mysql)
|
22
23
|
ActiveRecord::Base.connection.execute "UPDATE #{table}s SET id=#{id} WHERE id=#{permissions_model.id};"
|
@@ -32,10 +32,10 @@ module SystemFixtures::Roles
|
|
32
32
|
Ability.create_permissions_hash
|
33
33
|
end
|
34
34
|
def system_admin_permissions
|
35
|
-
Ability.create_permissions_hash
|
35
|
+
Ability.create_permissions_hash %w(roles products)
|
36
36
|
end
|
37
37
|
def dealer_admin_permissions
|
38
|
-
Ability.create_permissions_hash( [], %w(roles admin))
|
38
|
+
Ability.create_permissions_hash( [], %w(roles products admin))
|
39
39
|
Ability.remove_permissions %w(tabs_admin dealers_create dealers_delete dealer_users_create dealer_users_delete)
|
40
40
|
end
|
41
41
|
|
@@ -44,14 +44,14 @@ module SystemFixtures::Roles
|
|
44
44
|
end
|
45
45
|
def brand_admin_permissions
|
46
46
|
msa_permissions %w(corporation brands_create brands_delete)
|
47
|
-
Ability.remove_permissions %w(tabs_corporations)
|
47
|
+
Ability.remove_permissions %w(tabs_corporations brand_products_update merchant_products_update)
|
48
48
|
end
|
49
49
|
def merchant_admin_permissions
|
50
50
|
msa_permissions %w(corporation brand)
|
51
|
-
Ability.remove_permissions %w(tabs_brands tabs_corporations)
|
51
|
+
Ability.remove_permissions %w(tabs_brands tabs_corporations merchant_products_update)
|
52
52
|
end
|
53
53
|
def msa_permissions(exclude_abilities)
|
54
|
-
no_abilities = exclude_abilities + %w(admin roles dealer)
|
54
|
+
no_abilities = exclude_abilities + %w(admin roles products dealer)
|
55
55
|
Ability.create_permissions_hash([], no_abilities)
|
56
56
|
Ability.remove_permissions %w(tabs_admin tabs_dealers)
|
57
57
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<%- set_tag @permissions_object %>
|
2
2
|
<h1 class="pageName">Edit <%= @permissions_header %></h1>
|
3
3
|
<%= form_tag form_path, :method => :put, :remote => true do |f| %>
|
4
|
-
<!-- %= error_messages_for :
|
4
|
+
<!-- %= error_messages_for :product % -->
|
5
5
|
<table style="border-spacing:8px;">
|
6
6
|
<tbody>
|
7
7
|
<%= render :partial => 'permissions_fields' %>
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: permissify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 53
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 21
|
10
|
+
version: 0.0.21
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Frederick Fix
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-06-
|
18
|
+
date: 2012-06-19 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: rspec
|
@@ -66,12 +66,20 @@ files:
|
|
66
66
|
- lib/generators/permissify/controller/template/permissions_controller.rb
|
67
67
|
- lib/generators/permissify/controller/USAGE
|
68
68
|
- lib/generators/permissify/install/install_generator.rb
|
69
|
+
- lib/generators/permissify/install/templates/create_products_tables.rb
|
69
70
|
- lib/generators/permissify/install/templates/create_roles_tables.rb
|
70
71
|
- lib/generators/permissify/install/USAGE
|
71
72
|
- lib/generators/permissify/product/product_generator.rb
|
72
|
-
- lib/generators/permissify/product/template/
|
73
|
-
- lib/generators/permissify/product/template/
|
73
|
+
- lib/generators/permissify/product/template/controller.rb
|
74
|
+
- lib/generators/permissify/product/template/helper.rb
|
75
|
+
- lib/generators/permissify/product/template/interface/brand.rb
|
76
|
+
- lib/generators/permissify/product/template/interface/corporation.rb
|
77
|
+
- lib/generators/permissify/product/template/interface/dealer.rb
|
78
|
+
- lib/generators/permissify/product/template/interface/merchant.rb
|
74
79
|
- lib/generators/permissify/product/template/product.rb
|
80
|
+
- lib/generators/permissify/product/template/products.rb
|
81
|
+
- lib/generators/permissify/product/template/views/_additional_index_columns.html.erb
|
82
|
+
- lib/generators/permissify/product/template/views/_permissions_fields.html.erb
|
75
83
|
- lib/generators/permissify/product/USAGE
|
76
84
|
- lib/generators/permissify/role/role_generator.rb
|
77
85
|
- lib/generators/permissify/role/template/role.rb
|