permissify 0.0.21 → 0.0.22
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/generators/permissify/ability/template/abilities.rb +4 -5
- data/lib/generators/permissify/controller/template/permissions_controller.rb +4 -3
- data/lib/generators/permissify/install/templates/create_products_tables.rb +25 -2
- data/lib/generators/permissify/product/template/controller.rb +2 -1
- data/lib/generators/permissify/product/template/interface/admin.rb +12 -0
- data/lib/generators/permissify/product/template/interface/brand.rb +5 -0
- data/lib/generators/permissify/product/template/interface/corporation.rb +5 -0
- data/lib/generators/permissify/product/template/interface/dealer.rb +5 -0
- data/lib/generators/permissify/product/template/interface/merchant.rb +5 -0
- data/lib/generators/permissify/product/template/product.rb +6 -1
- data/lib/generators/permissify/product/template/products.rb +17 -19
- data/lib/generators/permissify/product/template/views/_permissions_fields.html.erb +0 -20
- data/lib/generators/permissify/role/template/role.rb +3 -1
- data/lib/generators/permissify/views/template/permissions/_copy_controls.erb +1 -1
- data/lib/generators/permissify/views/template/permissions/_list_header.erb +1 -1
- data/lib/generators/permissify/views/template/permissions/destroy_response.js.erb +5 -5
- data/lib/generators/permissify/views/template/permissions/update_response.js.erb +1 -1
- data/lib/generators/permissify/views/template/permissions_helper.rb +3 -5
- data/lib/permissify/model_class.rb +5 -0
- metadata +4 -3
@@ -10,8 +10,8 @@ module SystemFixtures::Abilities
|
|
10
10
|
|
11
11
|
# Can define PERMISSIFIED_ABILITY_APPLICABILITY in any model
|
12
12
|
# users_only = [Role::PERMISSIFIED_ABILITY_APPLICABILITY]
|
13
|
-
# products_only
|
14
|
-
# products_and_roles
|
13
|
+
# products_only = [Product::PERMISSIFIED_ABILITY_APPLICABILITY]
|
14
|
+
# products_and_roles = users_only + products_only
|
15
15
|
#
|
16
16
|
# add_category('Tabs', 'Tabs', users_only, %w(Admin Dealers Corporations Brands Merchants))
|
17
17
|
# { 'Roles' => 'Admin',
|
@@ -36,9 +36,8 @@ module SystemFixtures::Abilities
|
|
36
36
|
# add_category('Facebook', 'Social Media', products_and_roles, %w(Post Comment Like Remove))
|
37
37
|
# add_category('Twitter', 'Social Media', products_and_roles, %w(Tweet Retweet Respond Remove))
|
38
38
|
#
|
39
|
-
#
|
40
|
-
#
|
41
|
-
# 'Loyalty',
|
39
|
+
# [ 'Basic Service',
|
40
|
+
# 'Online Ordering',
|
42
41
|
# 'Webpage Builder',
|
43
42
|
# 'eGift',
|
44
43
|
# 'Guest Management',
|
@@ -23,8 +23,8 @@ class PermissionsController < ApplicationController
|
|
23
23
|
|
24
24
|
def create
|
25
25
|
@permissions_object = @permissions_class.new
|
26
|
-
@permissions_object.name = params[
|
27
|
-
@permissions_object.from = params[
|
26
|
+
@permissions_object.name = params[@corresponding_class_params_key][:name]
|
27
|
+
@permissions_object.from = params[@corresponding_class_params_key][:from]
|
28
28
|
@permissions_object.save
|
29
29
|
set_permissions_object
|
30
30
|
@response_message = @permissions_object.errors.full_messages.join(', ')
|
@@ -38,6 +38,7 @@ class PermissionsController < ApplicationController
|
|
38
38
|
class_attributes ||= {}
|
39
39
|
# @saved = @permissions_object.update_attributes class_attributes.merge(permission_attributes)
|
40
40
|
attrs = class_attributes.merge(permission_attributes)
|
41
|
+
@permissions_object.name = attrs[:name]
|
41
42
|
@permissions_object.permissions = attrs[:permissions]
|
42
43
|
set_permissions_object_specific_values(attrs)
|
43
44
|
# @permissions_object.attributes = class_attributes.merge(permission_attributes)
|
@@ -71,7 +72,7 @@ class PermissionsController < ApplicationController
|
|
71
72
|
def set_nav
|
72
73
|
@active_tab = 'admin'
|
73
74
|
@active_section = 'Admin'
|
74
|
-
@active_nav =
|
75
|
+
@active_nav = @permissions_header
|
75
76
|
@current_entity = @entity = Admin.first
|
76
77
|
end
|
77
78
|
end
|
@@ -4,18 +4,41 @@ class CreateProductsTables < ActiveRecord::Migration
|
|
4
4
|
create_table :products, :force => true do |t|
|
5
5
|
t.string :name
|
6
6
|
t.text :permissions
|
7
|
-
t.datetime :deleted_at
|
8
7
|
end
|
9
8
|
|
10
9
|
create_table :merchants_products, :id => false, :force => true do |t|
|
11
10
|
t.integer :merchant_id, :null => false
|
12
11
|
t.integer :product_id, :null => false
|
13
12
|
end
|
13
|
+
|
14
|
+
create_table :brands_products, :id => false, :force => true do |t|
|
15
|
+
t.integer :brand_id, :null => false
|
16
|
+
t.integer :product_id, :null => false
|
17
|
+
end
|
18
|
+
|
19
|
+
create_table :corporations_products, :id => false, :force => true do |t|
|
20
|
+
t.integer :corporation_id, :null => false
|
21
|
+
t.integer :product_id, :null => false
|
22
|
+
end
|
23
|
+
|
24
|
+
create_table :dealers_products, :id => false, :force => true do |t|
|
25
|
+
t.integer :dealer_id, :null => false
|
26
|
+
t.integer :product_id, :null => false
|
27
|
+
end
|
28
|
+
|
29
|
+
create_table :admins_products, :id => false, :force => true do |t|
|
30
|
+
t.integer :admin_id, :null => false
|
31
|
+
t.integer :product_id, :null => false
|
32
|
+
end
|
14
33
|
|
15
34
|
end
|
16
35
|
|
17
36
|
def down
|
37
|
+
drop_table :admins_products
|
38
|
+
drop_table :dealers_products
|
39
|
+
drop_table :corporations_products
|
40
|
+
drop_table :brands_products
|
41
|
+
drop_table :merchants_products
|
18
42
|
drop_table :products
|
19
|
-
drop_table :businesses_products
|
20
43
|
end
|
21
44
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
class ProductsController < PermissionsController
|
2
|
-
def set_permissions_class; set_the_permissions_class(
|
2
|
+
def set_permissions_class; set_the_permissions_class(Product, :product, 'product_', 'Product', 'Products'); end
|
3
3
|
def set_permissions_object; @product = @permissions_object; end
|
4
|
+
def set_permissions_object_specific_values(attrs); end
|
4
5
|
end
|
5
6
|
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module PermissifiedProductsInterface
|
2
|
+
module Admin
|
3
|
+
def permissible_products
|
4
|
+
[]
|
5
|
+
end
|
6
|
+
|
7
|
+
include Permissify::Union
|
8
|
+
PERMISSIFIED_ASSOCIATION = :products
|
9
|
+
# PERMISSIFIED_ABILITY_APPLICABILITY = Product::PERMISSIFIED_ABILITY_APPLICABILITY
|
10
|
+
|
11
|
+
end
|
12
|
+
end
|
@@ -3,5 +3,10 @@ module PermissifiedProductsInterface
|
|
3
3
|
def permissible_products
|
4
4
|
self.corporation.products + self.products
|
5
5
|
end
|
6
|
+
|
7
|
+
include Permissify::Union
|
8
|
+
PERMISSIFIED_ASSOCIATION = :products
|
9
|
+
# PERMISSIFIED_ABILITY_APPLICABILITY = Product::PERMISSIFIED_ABILITY_APPLICABILITY
|
10
|
+
|
6
11
|
end
|
7
12
|
end
|
@@ -3,5 +3,10 @@ module PermissifiedProductsInterface
|
|
3
3
|
def permissible_products
|
4
4
|
self.corporation.products + self.brand.products + self.products
|
5
5
|
end
|
6
|
+
|
7
|
+
include Permissify::Union
|
8
|
+
PERMISSIFIED_ASSOCIATION = :products
|
9
|
+
# PERMISSIFIED_ABILITY_APPLICABILITY = Product::PERMISSIFIED_ABILITY_APPLICABILITY
|
10
|
+
|
6
11
|
end
|
7
12
|
end
|
@@ -1,6 +1,12 @@
|
|
1
1
|
class Product < ActiveRecord::Base
|
2
2
|
|
3
3
|
include Permissify::Model
|
4
|
+
PERMISSIFIED_ABILITY_APPLICABILITY = 'Product'
|
5
|
+
has_and_belongs_to_many :admins
|
6
|
+
has_and_belongs_to_many :dealers
|
7
|
+
has_and_belongs_to_many :corporations
|
8
|
+
has_and_belongs_to_many :brands
|
9
|
+
has_and_belongs_to_many :merchants
|
4
10
|
|
5
11
|
# TODO : see how much of the following stuff can be rolled into ModelClass :
|
6
12
|
validates_presence_of :name
|
@@ -11,7 +17,6 @@ class Product < ActiveRecord::Base
|
|
11
17
|
class << self
|
12
18
|
include Permissify::ModelClass
|
13
19
|
include SystemFixtures::Products # app needs to provide this logic/specification : see example at app/models/system_fixtures/products.rb
|
14
|
-
PERMISSIFIED_ABILITY_APPLICABILITY = 'Product'
|
15
20
|
end
|
16
21
|
|
17
22
|
end
|
@@ -6,15 +6,15 @@ module SystemFixtures::Products
|
|
6
6
|
[4, 'Webpage Builder'],
|
7
7
|
[5, 'eGift'],
|
8
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']
|
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
14
|
]
|
15
15
|
|
16
|
-
def seeded?(
|
17
|
-
def seed; create_seeds
|
16
|
+
def seeded?(product); product.id <= SEED_SPECIFICATIONS.count; end
|
17
|
+
def seed; create_seeds SEED_SPECIFICATIONS; end
|
18
18
|
|
19
19
|
def create_basic_service; create_with 1; end
|
20
20
|
def create_online_ordering; create_with 2; end
|
@@ -26,33 +26,30 @@ module SystemFixtures::Products
|
|
26
26
|
def create_social_media_1; create_with 8; end
|
27
27
|
def create_social_media_2; create_with 9; end
|
28
28
|
def create_social_media_3; create_with 10; end
|
29
|
-
def create_social_marketing_engine; create_with
|
29
|
+
def create_social_marketing_engine; create_with 11; end
|
30
30
|
def create_with(id); create_with_id(:product, id, SEED_SPECIFICATIONS.assoc(id)[1]); end
|
31
31
|
|
32
32
|
def basic_service_permissions
|
33
|
-
|
34
|
-
permissions
|
33
|
+
ph :basic_service_on
|
35
34
|
end
|
36
35
|
def online_ordering_permissions; ph :online_ordering_on; end
|
37
36
|
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
|
37
|
+
def webpage_builder_permissions; ph :webpage_builder_on; end
|
41
38
|
def egift_permissions; ph :egift_on; end
|
42
39
|
def guest_management_permissions; ph :guest_management_on; end
|
43
40
|
def marketing_engine_permissions; ph :marketing_engine_on; end
|
44
41
|
|
45
42
|
def social_media_1_permissions
|
46
43
|
permissions = Ability.create_permissions_hash([], %w(social_media facebook twitter), %w(Product Role))
|
47
|
-
permissions[
|
48
|
-
permissions[
|
44
|
+
permissions['social_media_setup'] = {'0' => '1'}
|
45
|
+
permissions['social_media_view'] = {'0' => '1'}
|
49
46
|
permissions
|
50
47
|
end
|
51
48
|
def social_media_2_permissions
|
52
49
|
permissions = social_media_1_permissions
|
53
|
-
permissions[
|
54
|
-
permissions[
|
55
|
-
permissions[
|
50
|
+
permissions['social_media_create'] = {'0' => '1'}
|
51
|
+
permissions['facebook_post'] = {'0' => '1'}
|
52
|
+
permissions['twitter_tweet'] = {'0' => '1'}
|
56
53
|
permissions
|
57
54
|
end
|
58
55
|
def social_media_3_permissions
|
@@ -60,7 +57,8 @@ module SystemFixtures::Products
|
|
60
57
|
end
|
61
58
|
def social_marketing_engine_permissions
|
62
59
|
permissions = social_media_3_permissions
|
63
|
-
permissions[
|
60
|
+
permissions['marketing_engine_on'] = {'0' => '1'}
|
61
|
+
permissions['social_media_repeat'] = {'0' => '1'}
|
64
62
|
permissions
|
65
63
|
end
|
66
64
|
|
@@ -1,24 +1,4 @@
|
|
1
1
|
<tr>
|
2
2
|
<td ><%= label :product, :name, "Name"%></td>
|
3
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
4
|
</tr>
|
@@ -1,7 +1,10 @@
|
|
1
1
|
class Role < ActiveRecord::Base
|
2
2
|
DOMAIN_TYPES = %w(Admin Dealer Corporation Brand Merchant)
|
3
3
|
# DOMAIN_TYPES = %w(Admin Operations CallCenter)
|
4
|
+
|
4
5
|
include Permissify::Model
|
6
|
+
PERMISSIFIED_ABILITY_APPLICABILITY = 'Role'
|
7
|
+
|
5
8
|
# is_paranoid
|
6
9
|
# default_scope :conditions => {:deleted_at => nil}, :order => "roles.name"
|
7
10
|
has_and_belongs_to_many :users
|
@@ -16,7 +19,6 @@ class Role < ActiveRecord::Base
|
|
16
19
|
class << self
|
17
20
|
include Permissify::ModelClass
|
18
21
|
include SystemFixtures::Roles
|
19
|
-
PERMISSIFIED_ABILITY_APPLICABILITY = 'Role'
|
20
22
|
|
21
23
|
def force_seed_id(table, permissions_model, id)
|
22
24
|
# not sure if this is still needed, may differ depending on db adapter (written against mysql)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<%= form_for
|
1
|
+
<%= form_for @permissions_class.new, :remote => true do |f| %>
|
2
2
|
<div id="copy_form_<%= @permissions_object.id %>" style="display:none;background-color:#fffff0;padding:3px;" class="copy_form">
|
3
3
|
<%= f.hidden_field :from, :value => @permissions_object.id %>
|
4
4
|
<%= f.text_field :name, :value => @permissions_object.name + ' copy', :maxlength => 31, :size => 17 %>
|
@@ -1 +1 @@
|
|
1
|
-
<%= "#{permissions_group.size} #{@permissions_header}#{permissions_group.size == 1 ? '' : 's'}" %>
|
1
|
+
<%= "#{permissions_group.size} #{@permissions_header.singularize}#{permissions_group.size == 1 ? '' : 's'}" %>
|
@@ -1,5 +1,5 @@
|
|
1
|
-
$("#permissions_header").html("<%= "#{permissions_group.size} #{@permissions_header}#{permissions_group.size == 1 ? '' : 's'}" %>");
|
2
|
-
$("#
|
3
|
-
$("#
|
4
|
-
$("#
|
5
|
-
// $("#
|
1
|
+
$("#permissions_header").html("<%= "#{permissions_group.size} #{@permissions_header.singularize}#{permissions_group.size == 1 ? '' : 's'}" %>");
|
2
|
+
$("#delete_<%= @corresponding_class_params_key %>_<%= @permissions_object.id.to_s %>").html("DELETED");
|
3
|
+
$("#data_<%= @corresponding_class_params_key %>_<%= @permissions_object.id.to_s %>").addClass('deletedRole');
|
4
|
+
$("#data_<%= @corresponding_class_params_key %>_<%= @permissions_object.id.to_s %>").slideUp(3000);
|
5
|
+
// $("#errors_<%= @corresponding_class_params_key %>_<%= @permissions_object.id.to_s %>").remove();
|
@@ -1 +1 @@
|
|
1
|
-
window.location = "
|
1
|
+
window.location = "/<%= @permissions_object.class.name.downcase.pluralize %>?id=<%= @permissions_object.id %>"
|
@@ -73,11 +73,9 @@ module PermissionsHelper
|
|
73
73
|
'Brand Admin',
|
74
74
|
'Merchant Admin'
|
75
75
|
],
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
# 'Solutions'
|
80
|
-
# ]
|
76
|
+
'product' => [ 'Social Media',
|
77
|
+
'Solutions',
|
78
|
+
]
|
81
79
|
}[@permissions_name]
|
82
80
|
end
|
83
81
|
|
@@ -19,6 +19,11 @@ module Permissify
|
|
19
19
|
find(id)
|
20
20
|
end
|
21
21
|
|
22
|
+
def force_seed_id(table, permissions_model, id)
|
23
|
+
# not sure if this is still needed, may differ depending on db adapter (written against mysql)
|
24
|
+
ActiveRecord::Base.connection.execute "UPDATE #{table}s SET id=#{id} WHERE id=#{permissions_model.id};"
|
25
|
+
end
|
26
|
+
|
22
27
|
def locate(id, name)
|
23
28
|
model_with_id = find_by_id(id) # interface method : ActiveRecord::Base.find_by_id
|
24
29
|
model_with_id ||= send("create_#{underscored_name_symbol(name)}") # interface methods needed for each seeded model
|
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: 51
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 22
|
10
|
+
version: 0.0.22
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Frederick Fix
|
@@ -72,6 +72,7 @@ files:
|
|
72
72
|
- lib/generators/permissify/product/product_generator.rb
|
73
73
|
- lib/generators/permissify/product/template/controller.rb
|
74
74
|
- lib/generators/permissify/product/template/helper.rb
|
75
|
+
- lib/generators/permissify/product/template/interface/admin.rb
|
75
76
|
- lib/generators/permissify/product/template/interface/brand.rb
|
76
77
|
- lib/generators/permissify/product/template/interface/corporation.rb
|
77
78
|
- lib/generators/permissify/product/template/interface/dealer.rb
|