permissify 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
@@ -38,10 +38,8 @@ 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.domain_type = attrs[:domain_type]
42
- @permissions_object.managed_by = attrs[:managed_by]
43
- @permissions_object.can_manage_roles = attrs[:can_manage_roles]
44
41
  @permissions_object.permissions = attrs[:permissions]
42
+ set_permissions_object_specific_values(attrs)
45
43
  # @permissions_object.attributes = class_attributes.merge(permission_attributes)
46
44
  @saved = @permissions_object.save
47
45
  js_response
@@ -10,9 +10,9 @@ class Role < ActiveRecord::Base
10
10
  before_create :initialize_permissions
11
11
  before_validation :initialize_non_permission_values
12
12
  serialize :permissions
13
- serialize :can_manage_roles
14
- after_save :propagate_managed_by
15
-
13
+ has_and_belongs_to_many :managers, :class_name => 'Role', :join_table => :manages_roles, :association_foreign_key => :manage_id, :foreign_key => :role_id
14
+ has_and_belongs_to_many :manages, :class_name => 'Role', :join_table => :manages_roles, :association_foreign_key => :role_id, :foreign_key => :manage_id
15
+
16
16
  class << self
17
17
  include Permissify::ModelClass
18
18
  include SystemFixtures::Roles
@@ -23,39 +23,15 @@ class Role < ActiveRecord::Base
23
23
  end
24
24
 
25
25
  def default_non_permissions_values
26
- self.can_manage_roles ||= []
27
26
  self.domain_type = DOMAIN_TYPES.last if self.domain_type.blank?
28
27
  self.name = self.name.gsub("'","")
29
28
  end
30
29
 
31
30
  def copy_non_permissions_values
32
31
  self.domain_type = self.from_permissions_model.domain_type
33
- self.managed_by = self.from_permissions_model.managed_by
34
- self.can_manage_roles = self.from_permissions_model.can_manage_roles
35
- end
36
-
37
- def manages_roles
38
- return [] if quoted_role_names.blank?
39
- self.class.find(:all, :conditions => ["name in (#{quoted_role_names})"], :order => :name)
32
+ self.managers = self.from_permissions_model.managers
33
+ self.manages = self.from_permissions_model.manages
40
34
  end
41
35
 
42
36
  def remove(permissions_list); permissions_list.each{|permission| self.permissions.delete(permission)}; save; end
43
-
44
- def quoted_role_names; self.can_manage_roles.collect{|n| "'#{n}'"}.join(', ') rescue []; end
45
-
46
- def managed_by=(role_name_list); @managed_by = role_name_list; end
47
- def managed_by
48
- @managed_by ||= Role.all.select{|r| r.can_manage_roles.include?(self.name)}.collect(&:name)
49
- end
50
-
51
- def propagate_managed_by
52
- Role.all.each{ |r| r.update_manages_roles(managed_by.include?(r.name), self.name) } unless @managed_by.nil?
53
- end
54
-
55
- def update_manages_roles(manages_role_name, role_name)
56
- old = self.manages_roles
57
- old = [] if old.blank?
58
- new_value = manages_role_name ? old | [role_name] : old - [role_name]
59
- update_attribute(:can_manage_roles, new_value) if old != new_value
60
- end
61
37
  end
@@ -4,18 +4,25 @@ module SystemFixtures::Roles
4
4
  SEED_SPECIFICATIONS = (1..SEEDED_ORDERED_ROLES.length).zip(SEEDED_ORDERED_ROLES)
5
5
 
6
6
  def seeded?(role); role.id <= SEEDED_ORDERED_ROLES.length; end
7
- def seed; create_seeds :roles, SEED_SPECIFICATIONS; end
7
+ def seed
8
+ create_seeds :roles, SEED_SPECIFICATIONS
9
+ Role.find(1).manage_ids = [2,3,4,5,6]
10
+ Role.find(2).manage_ids = [2,3,4,5,6]
11
+ Role.find(3).manage_ids = [3,4,5,6]
12
+ Role.find(4).manage_ids = [4,5,6]
13
+ Role.find(5).manage_ids = [6]
14
+ Role.find(6).manage_ids = [6]
15
+ end
8
16
 
9
- def create_super_user; create_with(1, SEEDED_ORDERED_ROLES, 'Admin') ; end
10
- def create_system_admin; create_with(2, SEEDED_ORDERED_ROLES[1..5], 'Admin') ; end
11
- def create_dealer_admin; create_with(3, SEEDED_ORDERED_ROLES[2..5], 'Dealer') ; end
12
- def create_corporate_admin; create_with(4, SEEDED_ORDERED_ROLES[3..5], 'Corporate') ; end
13
- def create_brand_admin; create_with(5, ['Merchant'], 'Brand') ; end
14
- def create_merchant_admin; create_with(6, ['Merchant'], 'Merchant') ; end
17
+ def create_super_user; create_with(1, 'Admin') ; end
18
+ def create_system_admin; create_with(2, 'Admin') ; end
19
+ def create_dealer_admin; create_with(3, 'Dealer') ; end
20
+ def create_corporate_admin; create_with(4, 'Corporate') ; end
21
+ def create_brand_admin; create_with(5, 'Brand') ; end
22
+ def create_merchant_admin; create_with(6, 'Merchant') ; end
15
23
 
16
- def create_with(id, other_roles, domain_type)
24
+ def create_with(id, domain_type)
17
25
  role = create_with_id(:role, id, SEED_SPECIFICATIONS.assoc(id)[1])
18
- role.can_manage_roles = other_roles
19
26
  role.domain_type = domain_type
20
27
  role.save
21
28
  role
@@ -5,7 +5,7 @@
5
5
  <%= form_for Role.new, :remote => true do |f| %>
6
6
  <%= f.text_field :name, :maxlength => 31, :size => 12 %>
7
7
  &nbsp;&nbsp;&nbsp;
8
- <%= f.submit 'create role', :class => 'fncyBtn' %>
8
+ <%= f.submit 'new role', :class => 'fncyBtn' %>
9
9
  <%- end %>
10
10
  </td>
11
11
  </tr>
@@ -21,7 +21,7 @@
21
21
  <td></td>
22
22
  <td colspan="2">
23
23
  <%- if allowed_to?(:update, @permissions_category) %>
24
- <input type="submit" value="Save"/> or
24
+ <input type="submit" value="save" class="fncyBtn"/> or
25
25
  <%- end %>
26
26
  <a href="#" onclick="toggle_views(); self.scrollTo(0, 0); $('af_permissions_categories').hide();">cancel</a>
27
27
  </td>
@@ -10,18 +10,22 @@
10
10
 
11
11
  <tr>
12
12
  <td>
13
- <%= label :role, :can_manage_roles, "Manages users with roles" %>
13
+ <%= label :role, :manages_role_ids, "Manages users with roles" %>
14
14
  </td>
15
15
  <td>
16
- <%= label :role, :managed_by, "Managed by users with roles" %>
16
+ <%= label :role, :role_manager_ids, "Managed by users with roles" %>
17
17
  </td>
18
18
  </tr>
19
19
 
20
20
  <tr>
21
21
  <td>
22
- <%= select :role, :can_manage_roles, all_roles_grouped_by_domain_type.collect(&:name) - [@role.name], {}, {:multiple => true, :size => [all_roles.size, 12].min} %>
22
+ <%= select :role, :manage_ids,
23
+ all_roles_grouped_by_domain_type.select{|r| r.id != @role.id}.collect{|r| [r.name, r.id]},
24
+ {}, {:multiple => true, :size => [all_roles.size, 12].min} %>
23
25
  </td>
24
26
  <td>
25
- <%= select :role, :managed_by, all_roles_grouped_by_domain_type.collect(&:name), {}, {:multiple => true, :size => [all_roles.size, 12].min} %>
27
+ <%= select :role, :manager_ids,
28
+ all_roles_grouped_by_domain_type.collect{|r| [r.name, r.id]},
29
+ {}, {:multiple => true, :size => [all_roles.size, 12].min} %>
26
30
  </td>
27
31
  </tr>
@@ -4,5 +4,4 @@ module RolesHelper
4
4
  def additional_column1_value; @permissions_object.domain_type; end
5
5
  def additional_column2_value; "#{@permissions_object.users.count} users"; end
6
6
  def all_roles; @lazy_all_roles ||= Role.all; end
7
- def roles_that_current_user_manages; @lazy_roles_that_current_user_manages = @current_user.manages_roles; end
8
7
  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: 9
4
+ hash: 7
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 11
10
- version: 0.0.11
9
+ - 12
10
+ version: 0.0.12
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-03 00:00:00 Z
18
+ date: 2012-06-06 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: rspec