permissify 0.0.9 → 0.0.10

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.
@@ -1,5 +1,6 @@
1
1
  class Role < ActiveRecord::Base
2
2
  DOMAIN_TYPES = %w(Admin Dealer Corporate Brand Merchant)
3
+ # DOMAIN_TYPES = %w(Admin Operations CallCenter)
3
4
  include Permissify::Model
4
5
  # is_paranoid
5
6
  # default_scope :conditions => {:deleted_at => nil}, :order => "roles.name"
@@ -15,12 +16,6 @@ class Role < ActiveRecord::Base
15
16
  class << self
16
17
  include Permissify::ModelClass
17
18
  include SystemFixtures::Roles
18
- # def super_user; locate(1, 'super user'); end
19
- # def system_admin; locate(2, 'system admin'); end
20
- # def dealer_admin; locate(3, 'dealer admin'); end
21
- # def corporate_admin; locate(4, 'corporate admin'); end
22
- # def brand_admin; locate(5, 'brand admin'); end
23
- # def merchant_admin; locate(6, 'merchant admin'); end
24
19
  end
25
20
 
26
21
  def initialize_non_permission_values
@@ -1,5 +1,6 @@
1
1
  module SystemFixtures::Roles
2
2
  SEEDED_ORDERED_ROLES = ['super user', 'system admin', 'dealer admin', 'corporate admin', 'brand admin', 'merchant admin']
3
+ # SEEDED_ORDERED_ROLES = ['super user', 'system admin', 'operations agent', 'call center agent']
3
4
  SEED_SPECIFICATIONS = (1..SEEDED_ORDERED_ROLES.length).zip(SEEDED_ORDERED_ROLES)
4
5
 
5
6
  def seeded?(role); role.id <= SEEDED_ORDERED_ROLES.length; end
@@ -1,6 +1,6 @@
1
1
  <%= form_for Role.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 %>
5
5
 
6
6
  &nbsp;&nbsp;
@@ -0,0 +1,21 @@
1
+ <%- if @response_message.blank? %>
2
+ $("#permissions_header").html("<%= escape_javascript(render(:partial => 'permissions/list_header')) %>");
3
+ $("#permissions").append("<%= escape_javascript(render(:partial => 'permissions/row')) %>");
4
+ $("#role_name").val("");
5
+ $("#add<%= @permissions_object.from %>_errors").hide();
6
+ $("form.new_role input#role_name").val("");
7
+
8
+ <%- if @permissions_object.from %>
9
+ $("#copy_form_<%= @permissions_object.from %>").hide();
10
+ $("#copy_link_<%= @permissions_object.from %>").show();
11
+ <%- end %>
12
+
13
+ $("#permissions_list").hide();
14
+ $("#permissions_form").html("<%= escape_javascript(render(:partial => 'permissions/form')) %>");
15
+ $("#permissions_form").show();
16
+ $("#<%= @permissions_prefix %>name").focus();
17
+ <%- else %>
18
+ $("#add<%= @permissions_object.from %>_errors").html( "<%= truncate(@response_message, :length => 253) %>");
19
+ $("#add<%= @permissions_object.from %>_errors").show();
20
+ $("#form.new_role input.role_name").focus();
21
+ <%- end %>
@@ -0,0 +1,5 @@
1
+ $("#permissions_header").html("<%= "#{permissions_group.size} #{@permissions_header}#{permissions_group.size == 1 ? '' : 's'}" %>");
2
+ $("#delete_role_<%= @permissions_object.id.to_s %>").html("DELETED");
3
+ $("#data_role_<%= @permissions_object.id.to_s %>").addClass('deletedRole');
4
+ $("#data_role_<%= @permissions_object.id.to_s %>").slideUp(3000);
5
+ // $("#errors_role_<%= @permissions_object.id.to_s %>").remove();
@@ -1,6 +1 @@
1
- <%- if @saved %>
2
- window.location = "/roles?id=<%= @permissions_object.id %>"
3
- <%- else %>
4
- set_page_tag page, @permissions_object
5
- edit_model "#permissions_list", "#permissions_form", "#{@permissions_prefix}name"
6
- <%- end %>
1
+ window.location = "/roles?id=<%= @permissions_object.id %>"
@@ -62,13 +62,10 @@ module PermissionsHelper
62
62
  end
63
63
 
64
64
  def edit_url; send("edit_#{@permissions_name}_url", :id => @permissions_object); end
65
- def add_url; send("#{@permissions_name}s_path") ; end
66
- def copy_url; edit_url; end # TODO : same as edit for now
67
65
  def form_path; send("#{@permissions_name}_path", :id => @permissions_object.id); end
68
66
  def additional_column_id(i); "ac#{i}_#{@permissions_object.id}"; end
69
67
 
70
68
  def permissions_sections
71
- # send("BONK_#{@permissions_name}")
72
69
  { 'role' => [ 'Tabs',
73
70
  'Admin',
74
71
  'Dealer Admin',
@@ -76,12 +73,12 @@ module PermissionsHelper
76
73
  'Brand Admin',
77
74
  'Merchant Admin'
78
75
  ],
79
- 'products' => [ 'Branch and Location Portals : Settings',
80
- 'Branch and Location Portals : Social Media',
81
- 'Branch and Location Portals : Web Page',
82
- 'Solutions'
83
- ]
84
- }[@permissions_name] # ugghhh : not working in helpers...
76
+ # 'products' => [ 'Branch and Location Portals : Settings',
77
+ # 'Branch and Location Portals : Social Media',
78
+ # 'Branch and Location Portals : Web Page',
79
+ # 'Solutions'
80
+ # ]
81
+ }[@permissions_name]
85
82
  end
86
83
 
87
84
  def models_that_have_permission
@@ -89,123 +86,4 @@ module PermissionsHelper
89
86
  mthp.blank? ? 'none' : mthp
90
87
  end
91
88
 
92
- def copy_name
93
- "#{@permissions_object.name} copy"
94
- end
95
-
96
- def destroy_message
97
- "#{permissions_group.size} #{@permissions_header}#{permissions_group.size == 1 ? '' : 's'}<br/><div style='color:green; font-size:0.5em;'>'#{@permissions_object.name}' deleted</div>"
98
- end
99
-
100
- ##### RJS stuff : ughhh... TODO : determine what is needed...
101
- def set_page_tag(page, model) ; @page = page ; @page_model = model ; set_tag(model) ; end
102
- def set_tag(model); @tag = "_#{model.class.name.titleize.downcase.gsub(' ','_')}_#{model.id}"; end
103
- def data_tag ; tag_for 'data'; end
104
- def delete_tag ; tag_for 'delete'; end
105
- def errors_tag ; tag_for 'errors' ; end
106
- def email_status_tag ; tag_for 'email_status'; end
107
- def tag_for(t); "#{t}#{@tag}"; end
108
- def update_list_header(header_partial, header_id=header_partial)
109
- updated_header = render(:partial => header_partial)
110
- @page.call '$("#' + header_id + '").html( "' + escape_javascript(updated_header) + '" );fixme'
111
- end
112
-
113
- def set_page_tag_and_highlight_data(page, model)
114
- set_page_tag(page, model)
115
- @page.visual_effect :highlight, data_tag, :duration => 1
116
- end
117
-
118
- def highlight_row_and_clear_add_form(table_id, add_errors_id, name_field_id)
119
- insert_row_and_clear_add_form(table_id, add_errors_id, name_field_id)
120
- @page.visual_effect :highlight, data_tag, :duration => 2
121
- case name_field_id
122
- when /create_email/
123
- @page['#noticeExplanation'].replace_html('<h2>We will send a confirmation email to the address you entered. Click on the link in the email to activate the address and add it to your list.</h2>')
124
- show_flash_notice_message
125
- hide_flash_success_message
126
- @page.show "add_email_address"
127
- @page.hide "create_new_email"
128
- when /create_keyword/
129
- @page['#successExplanation'].replace_html('<h2>The keyword has been added.</h2>')
130
- hide_flash_notice_message
131
- show_flash_success_message
132
- end
133
- end
134
-
135
- def hide_flash_error_message
136
- @page.hide "errorExplanation"
137
- end
138
-
139
- def hide_flash_success_message
140
- @page.hide "successExplanation"
141
- end
142
-
143
- def hide_flash_notice_message
144
- @page.hide "noticeExplanation"
145
- end
146
-
147
- def show_flash_error_message
148
- @page.show "errorExplanation"
149
- end
150
-
151
- def show_flash_success_message
152
- @page.show "successExplanation"
153
- end
154
-
155
- def show_flash_notice_message
156
- @page.show "noticeExplanation"
157
- end
158
-
159
- def insert_row_and_clear_add_form(table_id, add_errors_id, name_field_id, row_partial='row')
160
- @page.call '$("' + table_id + '").append("' + escape_javascript(render(:partial => row_partial)) + '"); fixme'
161
- # @page.insert_html :bottom, table_id, :partial => row_partial
162
- @page.hide add_errors_id
163
- @page[name_field_id].value = ''
164
- end
165
-
166
- def wrap_up_copy
167
- from_id = @permissions_object.from
168
- @page.call '$("#copy_form_' + from_id + '").hide();fixme'
169
- @page.call '$("#copy_link_' + from_id + '").show();fixme'
170
- end
171
-
172
- def show_errors(error_id, field_id)
173
- error_id = '#' + error_id + '_errors'
174
- @page.replace_html error_id, h(truncate(@response_message, 253, "..."))
175
- @page.show error_id
176
- @page.visual_effect :highlight, error_id.delete('#'), :duration => 2
177
- @page[field_id].focus.select
178
- end
179
-
180
- def show_model_errors
181
- @page[errors_tag].replace_html h(truncate(@page_model.errors.full_messages.join(' '), 253, "..."))
182
- @page.show errors_tag
183
- @page.visual_effect :highlight, errors_tag, :duration => 1
184
- end
185
-
186
- def update_list_header_and_animate_delete(header_partial, delete_id_tags=[], header_id=header_partial)
187
- update_list_header header_partial, header_id
188
- animate_delete header_partial, delete_id_tags
189
- end
190
-
191
- def animate_delete(header_partial='', id_tags=[])
192
- @page[delete_tag].replace_html '<span style="color:red"><b>DELETED</b></span>'
193
- case header_partial
194
- when ''
195
- @page['#successExplanation'].replace_html('<h2>This email address has been deleted.</h2>')
196
- when /keyword_count/
197
- @page['#successExplanation'].replace_html('<h2>The keyword has been deleted.</h2>')
198
- end
199
- @page.delay(1.5) { ([data_tag, errors_tag] + id_tags).each {|id_tag| @page[id_tag].prev().prev().remove;@page[id_tag].prev().remove;@page[id_tag].remove} }
200
- show_flash_success_message
201
- hide_flash_notice_message
202
- end
203
-
204
- def edit_model(list_id, form_id, field_id, form_partial = 'form')
205
- @page.hide list_id
206
- @page.replace_html form_id, :partial => form_partial
207
- @page.show form_id
208
- @page[field_id].focus.select
209
- end
210
-
211
89
  end
@@ -1,6 +1,6 @@
1
1
  <tr>
2
2
  <td><%= label :role, :name, "Name"%></td>
3
- <td><b><%= @role.name %></b></td>
3
+ <td><%= text_field_tag 'role_name', @role.name %></td>
4
4
  </tr>
5
5
 
6
6
  <tr>
@@ -4,12 +4,10 @@ module Permissify
4
4
  source_root File.expand_path('../template', __FILE__)
5
5
 
6
6
  def generate_views
7
- copy_file "role.rb", "app/views/role.rb"
8
- copy_file "roles.rb", "app/views/system_fixtures/roles.rb"
9
-
10
- directory "app/views/permissions"
11
-
12
- empty_directory "app/views/roles"
7
+ copy_file "permissions_helper.rb", "app/helpers/permissions_helper.rb"
8
+ copy_file "roles_helper.rb", "app/helpers/roles_helper.rb"
9
+ directory "permissions", "app/views/permissions"
10
+ directory "roles", "app/views/roles"
13
11
  end
14
12
  end
15
13
  end
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: 13
4
+ hash: 11
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 9
10
- version: 0.0.9
9
+ - 10
10
+ version: 0.0.10
11
11
  platform: ruby
12
12
  authors:
13
13
  - Frederick Fix
@@ -48,7 +48,7 @@ dependencies:
48
48
  version: "3.2"
49
49
  type: :development
50
50
  version_requirements: *id002
51
- description: Not so simple authorization solution for Rails.
51
+ description: A not so simple authorization solution for Rails.
52
52
  email: rickfix80004@gmail.com
53
53
  executables: []
54
54
 
@@ -86,16 +86,14 @@ files:
86
86
  - lib/generators/permissify/views/template/permissions/_permission_category.erb
87
87
  - lib/generators/permissify/views/template/permissions/_row.erb
88
88
  - lib/generators/permissify/views/template/permissions/_section.html.erb
89
- - lib/generators/permissify/views/template/permissions/create_response.rjs
90
- - lib/generators/permissify/views/template/permissions/destroy_response.rjs
89
+ - lib/generators/permissify/views/template/permissions/create_response.js.erb
90
+ - lib/generators/permissify/views/template/permissions/destroy_response.js.erb
91
91
  - lib/generators/permissify/views/template/permissions/edit_response.js.erb
92
92
  - lib/generators/permissify/views/template/permissions/index.html.erb
93
93
  - lib/generators/permissify/views/template/permissions/update_response.js.erb
94
94
  - lib/generators/permissify/views/template/permissions_helper.rb
95
- - lib/generators/permissify/views/template/role.rb
96
95
  - lib/generators/permissify/views/template/roles/_additional_index_columns.erb
97
96
  - lib/generators/permissify/views/template/roles/_permissions_fields.erb
98
- - lib/generators/permissify/views/template/roles.rb
99
97
  - lib/generators/permissify/views/template/roles_helper.rb
100
98
  - lib/generators/permissify/views/USAGE
101
99
  - lib/generators/permissify/views/views_generator.rb
@@ -1,15 +0,0 @@
1
- set_page_tag page, @permissions_object
2
- if @response_message.blank?
3
- update_list_header 'permissions/list_header', 'permissions_header'
4
- page.call '$("#permissions").append("' + escape_javascript(render(:partial => 'permissions/row')) + '"); fixme'
5
- page.call '$("#role_name").val("");fixme'
6
-
7
- # wrap_up_copy if @permissions_object.from
8
-
9
- page.call '$("#permissions_list").hide();fixme'
10
- page.call '$("#permissions_form").html("' + escape_javascript(render(:partial => 'permissions/form')) + '"); fixme'
11
- page.call '$("#permissions_form").show();fixme'
12
- page.call '$("#' + @permissions_prefix + 'name").focus();fixme'
13
- else
14
- show_errors "add#{@permissions_object.from}", "create_name#{@permissions_object.from}"
15
- end
@@ -1,12 +0,0 @@
1
- if @permissions_object.destroyed?
2
- new_count = escape_javascript(destroy_message)
3
- header = '$("#permissions_header").html("' + new_count + '")'
4
- page.call("#{header};fixme");
5
- remove_row = '$("#data_role_' + @permissions_object.id.to_s + '").remove()'
6
- page.call("#{remove_row};fixme")
7
- remove_errors = '$("#errors_role_' + @permissions_object.id.to_s + '").remove()'
8
- page.call("#{remove_errors};fixme")
9
- else
10
- # set_page_tag_and_highlight_data page, @permissions_object
11
- show_model_errors
12
- end
@@ -1,66 +0,0 @@
1
- class Role < ActiveRecord::Base
2
- DOMAIN_TYPES = %w(Admin Dealer Corporate Brand Merchant)
3
- include Permissify::Model
4
- # is_paranoid
5
- # default_scope :conditions => {:deleted_at => nil}, :order => "roles.name"
6
- has_and_belongs_to_many :users
7
- validates_presence_of :name, :domain_type
8
- validates_uniqueness_of :name
9
- before_create :initialize_permissions
10
- before_validation :initialize_non_permission_values
11
- serialize :permissions
12
- serialize :can_manage_roles
13
- after_save :propagate_managed_by
14
-
15
- class << self
16
- include Permissify::ModelClass
17
- include SystemFixtures::Roles
18
- # def super_user; locate(1, 'super user'); end
19
- # def system_admin; locate(2, 'system admin'); end
20
- # def dealer_admin; locate(3, 'dealer admin'); end
21
- # def corporate_admin; locate(4, 'corporate admin'); end
22
- # def brand_admin; locate(5, 'brand admin'); end
23
- # def merchant_admin; locate(6, 'merchant admin'); end
24
- end
25
-
26
- def initialize_non_permission_values
27
- establish_from_permissions_model.nil? ? default_non_permissions_values : copy_non_permissions_values
28
- end
29
-
30
- def default_non_permissions_values
31
- self.can_manage_roles ||= []
32
- self.domain_type = DOMAIN_TYPES.last if self.domain_type.blank?
33
- self.name = self.name.gsub("'","")
34
- end
35
-
36
- def copy_non_permissions_values
37
- self.domain_type = self.from_permissions_model.domain_type
38
- self.managed_by = self.from_permissions_model.managed_by
39
- self.can_manage_roles = self.from_permissions_model.can_manage_roles
40
- end
41
-
42
- def manages_roles
43
- return [] if quoted_role_names.blank?
44
- self.class.find(:all, :conditions => ["name in (#{quoted_role_names})"], :order => :name)
45
- end
46
-
47
- def remove(permissions_list); permissions_list.each{|permission| self.permissions.delete(permission)}; save; end
48
-
49
- def quoted_role_names; self.can_manage_roles.collect{|n| "'#{n}'"}.join(', ') rescue []; end
50
-
51
- def managed_by=(role_name_list); @managed_by = role_name_list; end
52
- def managed_by
53
- @managed_by ||= Role.all.select{|r| r.can_manage_roles.include?(self.name)}.collect(&:name)
54
- end
55
-
56
- def propagate_managed_by
57
- Role.all.each{ |r| r.update_manages_roles(managed_by.include?(r.name), self.name) } unless @managed_by.nil?
58
- end
59
-
60
- def update_manages_roles(manages_role_name, role_name)
61
- old = self.manages_roles
62
- old = [] if old.blank?
63
- new_value = manages_role_name ? old | [role_name] : old - [role_name]
64
- update_attribute(:can_manage_roles, new_value) if old != new_value
65
- end
66
- end
@@ -1,52 +0,0 @@
1
- module SystemFixtures::Roles
2
- SEEDED_ORDERED_ROLES = ['super user', 'system admin', 'dealer admin', 'corporate admin', 'brand admin', 'merchant admin']
3
- SEED_SPECIFICATIONS = (1..SEEDED_ORDERED_ROLES.length).zip(SEEDED_ORDERED_ROLES)
4
-
5
- def seeded?(role); role.id <= SEEDED_ORDERED_ROLES.length; end
6
- def seed; create_seeds :roles, SEED_SPECIFICATIONS; end
7
-
8
- def create_super_user; create_with(1, SEEDED_ORDERED_ROLES, 'Admin') ; end
9
- def create_system_admin; create_with(2, SEEDED_ORDERED_ROLES[1..5], 'Admin') ; end
10
- def create_dealer_admin; create_with(3, SEEDED_ORDERED_ROLES[2..5], 'Dealer') ; end
11
- def create_corporate_admin; create_with(4, SEEDED_ORDERED_ROLES[3..5], 'Corporate') ; end
12
- def create_brand_admin; create_with(5, ['Merchant'], 'Brand') ; end
13
- def create_merchant_admin; create_with(6, ['Merchant'], 'Merchant') ; end
14
-
15
- def create_with(id, other_roles, domain_type)
16
- role = create_with_id(:role, id, SEED_SPECIFICATIONS.assoc(id)[1])
17
- role.can_manage_roles = other_roles
18
- role.domain_type = domain_type
19
- role.save
20
- role
21
- end
22
-
23
- def super_user_permissions
24
- @@permissions = Ability.create_permissions_hash
25
- end
26
- def system_admin_permissions
27
- @@permissions = Ability.create_permissions_hash 'roles'
28
- end
29
- def dealer_admin_permissions
30
- @@permissions = Ability.create_permissions_hash( [], %w(roles admin))
31
- remove %w(tabs_admin)
32
- end
33
-
34
- def corporate_admin_permissions
35
- msa_permissions %w(corporate_portal_create brand_portal_create)
36
- end
37
- def brand_admin_permissions
38
- msa_permissions %w(corporate brand_portal_create brand_portal_update)
39
- remove %w(tabs_corporate)
40
- end
41
- def merchant_admin_permissions
42
- msa_permissions %w(corporate brand)
43
- remove %w(tabs_brand tabs_corporate)
44
- end
45
- def msa_permissions(exclude_abilities)
46
- no_abilities = exclude_abilities + %w(admin roles dealer)
47
- @@permissions = Ability.create_permissions_hash([], no_abilities)
48
- remove %w(tabs_admin tabs_dealer)
49
- end
50
-
51
- def remove(permissions); permissions.each{|permission| @@permissions.delete(permission.to_s)}; @@permissions; end
52
- end