challah 0.5.3 → 0.5.4

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/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## Challah 0.5.4
2
+
3
+ * Bug fixes for Rails v3.2.3 mass assignment defaults.
4
+
1
5
  ## Challah 0.5.3
2
6
 
3
7
  * Updated tests to conform with Factory Girl 3.0
data/db/seeds.rb CHANGED
@@ -1,12 +1,12 @@
1
1
  # Add default admin permission and role and normal user with no permissions
2
2
  if Permission.count.zero? and Role.count.zero?
3
- admin_permission = Permission.create!(:name => 'Administrator', :key => 'admin', :description => 'Administrative users have unrestricted access to all components within the application.', :locked => true)
4
- manage_users_permission = Permission.create!(:name => 'Manage Users', :key => 'manage_users', :description => 'Access to add, edit and remove application users.', :locked => true)
5
-
6
- admin_role = Role.create!(:name => 'Administrator', :description => 'Administrative users have unrestricted access to all components within the application.', :default_path => '/', :locked => true)
7
-
8
- PermissionRole.create!(:role_id => admin_role.id, :permission_id => admin_permission.id)
9
- PermissionRole.create!(:role_id => admin_role.id, :permission_id => manage_users_permission.id)
10
-
11
- normal_role = Role.create!(:name => 'Default', :description => 'Default users can log in to the application.', :default_path => '/')
3
+ admin_permission = Permission.create!({ :name => 'Administrator', :key => 'admin', :description => 'Administrative users have unrestricted access to all components within the application.', :locked => true }, :without_protection => true)
4
+ manage_users_permission = Permission.create!({ :name => 'Manage Users', :key => 'manage_users', :description => 'Access to add, edit and remove application users.', :locked => true }, :without_protection => true)
5
+
6
+ admin_role = Role.create!({ :name => 'Administrator', :description => 'Administrative users have unrestricted access to all components within the application.', :default_path => '/', :locked => true }, :without_protection => true)
7
+
8
+ PermissionRole.create!({ :role_id => admin_role.id, :permission_id => admin_permission.id }, :without_protection => true)
9
+ PermissionRole.create!({ :role_id => admin_role.id, :permission_id => manage_users_permission.id }, :without_protection => true)
10
+
11
+ normal_role = Role.create!({ :name => 'Default', :description => 'Default users can log in to the application.', :default_path => '/' }, :without_protection => true)
12
12
  end
@@ -1,10 +1,10 @@
1
1
  module Challah
2
- # AuthablePermission is used to extend functionality to a model in your app named Permission.
2
+ # AuthablePermission is used to extend functionality to a model in your app named Permission.
3
3
  # By default, this model already exists within the challah engine.
4
4
  #
5
5
  # The Permission model is used to store every granular level of restriction for your application.
6
6
  # If there is anything within your app that may need to be restricted in any way, you'll likely
7
- # want to create a permission for it.
7
+ # want to create a permission for it.
8
8
  #
9
9
  # Permission can be as granular as necessary. For example, you may have a permission called
10
10
  # +:people_admin+. Or, you could specify each action taken within an admin section, and add permissions
@@ -25,7 +25,7 @@ module Challah
25
25
  #
26
26
  # The join tables (permission_roles and permission_users) are also included, but likely do not
27
27
  # need to be accessed directly.
28
- #
28
+ #
29
29
  # == Scopes
30
30
  #
31
31
  # By default, the following scopes are included for this model:
@@ -34,10 +34,10 @@ module Challah
34
34
  #
35
35
  # == Customizing the Permission model
36
36
  #
37
- # By default, the Permission model is included within the gem engine. However, if you wish to
38
- # include it within your app for any customizations, you can do so by creating a model
37
+ # By default, the Permission model is included within the gem engine. However, if you wish to
38
+ # include it within your app for any customizations, you can do so by creating a model
39
39
  # file named +permission.rb+ and adding the +authable_permission+ line near the top of the class.
40
- #
40
+ #
41
41
  # @example app/models/permission.rb
42
42
  # class Permission < ActiveRecord::Base
43
43
  # # Set up all permission methods from challah gem
@@ -57,7 +57,7 @@ module Challah
57
57
  include InstanceMethods
58
58
  extend ClassMethods
59
59
  end
60
-
60
+
61
61
  class_eval do
62
62
  validates_presence_of :name, :key
63
63
  validates_uniqueness_of :name, :key
@@ -69,11 +69,13 @@ module Challah
69
69
  has_many :users, :through => :permission_users, :order => 'users.last_name, users.first_name'
70
70
 
71
71
  default_scope order('permissions.name')
72
-
72
+
73
+ attr_accessible :name, :description, :key, :locked
74
+
73
75
  after_create :add_to_admin_role
74
76
  end
75
77
  end
76
-
78
+
77
79
  module ClassMethods
78
80
  # Quickly access a +Permission+ instance by the provided key. If no +Permission+
79
81
  # is found with that key, +nil+ is returned.
@@ -89,8 +91,8 @@ module Challah
89
91
  self.find_by_key(key.to_s.strip.downcase.gsub(' ', '_'))
90
92
  end
91
93
  end
92
-
93
- # @private
94
+
95
+ # @private
94
96
  module InstanceMethods
95
97
  # @private
96
98
  #
@@ -98,13 +100,13 @@ module Challah
98
100
  def key=(value)
99
101
  write_attribute(:key, value.to_s.downcase.strip)
100
102
  end
101
-
103
+
102
104
  protected
103
105
  # @private
104
106
  # After a new permission level is added, automatically add it to the admin user role
105
107
  def add_to_admin_role
106
108
  admin_role = ::Role.admin
107
-
109
+
108
110
  # if there is an admin role, add this permission to it.
109
111
  if admin_role
110
112
  admin_role.permission_keys = admin_role.permission_keys + [ self.key ]
@@ -1,11 +1,11 @@
1
1
  module Challah
2
- # AuthableRole is used to extend functionality to a model in your app named Role. By default,
2
+ # AuthableRole is used to extend functionality to a model in your app named Role. By default,
3
3
  # this model already exists within the challah engine.
4
4
  #
5
5
  # The Role model is used to group together sets of permissions that can be assigned
6
- # to users.
6
+ # to users.
7
7
  #
8
- # Roles are not used to detect features or options for a user. Instead, you should
8
+ # Roles are not used to detect features or options for a user. Instead, you should
9
9
  # always use permissions as the most granular level of detail within your app.
10
10
  #
11
11
  # For example, to restrict a piece of your application to a certain user, you should create
@@ -21,9 +21,9 @@ module Challah
21
21
  # to the administrator role.
22
22
  #
23
23
  # == Validations
24
- #
24
+ #
25
25
  # A role requires that a unique name be provided.
26
- #
26
+ #
27
27
  # == Associations
28
28
  #
29
29
  # The following associations are set on this model by default:
@@ -36,14 +36,14 @@ module Challah
36
36
  #
37
37
  # == Customizing the Role model
38
38
  #
39
- # By default, the Role model is included within the gem engine. However, if you wish to
40
- # include it within your app for any customizations, you can do so by creating a model
39
+ # By default, the Role model is included within the gem engine. However, if you wish to
40
+ # include it within your app for any customizations, you can do so by creating a model
41
41
  # file named +role.rb+ and adding the +authable_role+ line near the top of the class.
42
- #
42
+ #
43
43
  # @example app/models/role.rb
44
44
  # class Role < ActiveRecord::Base
45
45
  # # Set up all role methods from challah gem
46
- # authable_role
46
+ # authable_role
47
47
  #
48
48
  # # Your customizations here..
49
49
  # end
@@ -59,21 +59,23 @@ module Challah
59
59
  include InstanceMethods
60
60
  extend ClassMethods
61
61
  end
62
-
62
+
63
63
  class_eval do
64
64
  validates_presence_of :name
65
65
  validates_uniqueness_of :name
66
-
66
+
67
67
  has_many :users, :order => 'users.first_name, users.last_name'
68
68
  has_many :permission_roles, :dependent => :destroy
69
69
  has_many :permissions, :through => :permission_roles, :order => 'permissions.name'
70
-
70
+
71
71
  default_scope order('roles.name')
72
72
 
73
+ attr_accessible :name, :description, :default_path, :locked
74
+
73
75
  after_save :save_permission_keys
74
76
  end
75
77
  end
76
-
78
+
77
79
  module ClassMethods
78
80
  # Quickly access a +Role+ instance by the provided name. If no +Role+
79
81
  # is found with that key, +nil+ is returned.
@@ -88,7 +90,7 @@ module Challah
88
90
  def [](name)
89
91
  self.find_by_name(name.to_s.strip.downcase.gsub(' ', '_').titleize)
90
92
  end
91
-
93
+
92
94
  # Shortcut for finding the Role named 'Administrator'
93
95
  #
94
96
  # @return [Role, nil]
@@ -99,7 +101,7 @@ module Challah
99
101
  @admin ||= self.find_by_name('Administrator')
100
102
  end
101
103
  end
102
-
104
+
103
105
  module InstanceMethods
104
106
  # Grab all permission keys for this +Role+
105
107
  #
@@ -113,7 +115,7 @@ module Challah
113
115
  end
114
116
 
115
117
  # Set the permission keys that this role can access. This temporarily updates
116
- # the permission keys for the +Role+ instance, but changes are not saved until
118
+ # the permission keys for the +Role+ instance, but changes are not saved until
117
119
  # the model has been saved.
118
120
  #
119
121
  # @param [Array] keys An array of permission keys to set for this role.
@@ -124,7 +126,7 @@ module Challah
124
126
  @permission_keys = keys
125
127
  @permission_keys
126
128
  end
127
-
129
+
128
130
  # Does this role have the given +Permission+? Pass in a Permission instance, or
129
131
  # a permission key to check for its existance.
130
132
  #
@@ -150,7 +152,7 @@ module Challah
150
152
  return has(sym.to_s.gsub(/\?/, '')) if sym.to_s =~ /^[a-z0-9_]*\?$/
151
153
  super(sym, *args, &block)
152
154
  end
153
-
155
+
154
156
  protected
155
157
  # @private
156
158
  #
@@ -161,9 +163,9 @@ module Challah
161
163
 
162
164
  @permission_keys.uniq.each do |key|
163
165
  permission = ::Permission.find_by_key(key)
164
-
166
+
165
167
  if permission
166
- self.permission_roles.create(:permission_id => permission.id, :role_id => self.id)
168
+ self.permission_roles.create({ :permission_id => permission.id, :role_id => self.id }, :without_protection => true)
167
169
  end
168
170
  end
169
171
 
@@ -5,107 +5,109 @@ module Challah
5
5
  include InstanceMethods
6
6
  extend ClassMethods
7
7
  end
8
-
8
+
9
9
  class_eval do
10
10
  cattr_accessor :protected_attributes
11
-
11
+
12
12
  validates_presence_of :first_name, :last_name, :email, :role_id, :username
13
13
  validates_uniqueness_of :email, :username
14
14
  validate :validate_new_password
15
-
15
+
16
16
  before_save :before_save_password
17
-
17
+
18
18
  belongs_to :role, :touch => true
19
19
  has_many :permission_users, :dependent => :destroy
20
20
  has_many :permissions, :through => :permission_users, :order => 'permissions.name'
21
-
21
+
22
22
  scope :active, where(:active => true).order('users.first_name, users.last_name')
23
23
  scope :inactive, where(:active => false).order('users.first_name, users.last_name')
24
24
  scope :with_role, lambda { |role| where([ "users.role_id = ?", role ]) }
25
25
  scope :search, lambda { |q| where([ 'users.first_name like ? OR users.last_name like ? OR users.email like ? OR users.username LIKE ?', "%#{q}%", "%#{q}%", "%#{q}%", "%#{q}%" ]) }
26
26
  after_save :save_permission_keys
27
-
28
- protect_attributes :api_key, :created_by, :crypted_password, :failed_login_count, :id, :last_login_at, :login_count, :permissions, :permissions_attributes, :permission_users, :permission_users_attributes, :persistence_token, :role_id, :updated_by
27
+
28
+ attr_accessible :first_name, :last_name, :username, :email, :password, :password_confirmation
29
+
30
+ protect_attributes :api_key, :created_by, :crypted_password, :failed_login_count, :id, :last_session_at, :last_login_at, :last_session_ip, :login_count, :permissions, :permissions_attributes, :permission_users, :permission_users_attributes, :persistence_token, :role_id, :session_count, :updated_by
29
31
  end
30
32
  end
31
-
33
+
32
34
  module ClassMethods
33
35
  # Find a user instance by username first, or email address if needed.
34
36
  # If no user is found matching, return nil
35
37
  def find_for_session(username_or_email)
36
38
  return nil if username_or_email.to_s.blank?
37
-
39
+
38
40
  result = nil
39
-
41
+
40
42
  result = find_by_username(username_or_email)
41
-
43
+
42
44
  unless result
43
45
  if username_or_email.to_s.include?('@')
44
46
  result = find_by_email(username_or_email)
45
- end
46
- end
47
-
47
+ end
48
+ end
49
+
48
50
  result
49
51
  end
50
-
51
- def protect_attributes(*args)
52
+
53
+ def protect_attributes(*args)
52
54
  self.protected_attributes ||= []
53
55
  self.protected_attributes << args.collect(&:to_s)
54
56
  end
55
57
  end
56
-
58
+
57
59
  # Instance methods to be included once authable_user is set up.
58
60
  module InstanceMethods
59
- # Returns true if this user is active, and should be able to log in. If
61
+ # Returns true if this user is active, and should be able to log in. If
60
62
  # the active column is false, the user will not be able to authenticate
61
63
  def active?
62
64
  !!self.active
63
65
  end
64
-
66
+
65
67
  # Generic authentication method. By default, this just checks to see if the password
66
- # given matches this user. You can also pass in the first parameter as the method
68
+ # given matches this user. You can also pass in the first parameter as the method
67
69
  # to use for a different type of authentication.
68
70
  def authenticate(*args)
69
71
  return false unless active?
70
-
72
+
71
73
  if args.length > 1
72
74
  method = args.shift
73
-
75
+
74
76
  if respond_to?("authenticate_with_#{method}")
75
77
  return self.send("authenticate_with_#{method}", *args)
76
78
  end
77
-
78
- false
79
+
80
+ false
79
81
  else
80
82
  authenticate_with_password(args[0])
81
83
  end
82
84
  end
83
-
85
+
84
86
  # Pass in an api_key, and if it matches this user account, return true.
85
87
  def authenticate_with_api_key(api_key)
86
88
  self.api_key == api_key
87
89
  end
88
-
90
+
89
91
  # Pass in a password, and if it matches this user's account, return true.
90
92
  def authenticate_with_password(plain_password)
91
93
  ::Challah::Encrypter.compare(self.crypted_password, plain_password)
92
94
  end
93
-
95
+
94
96
  # The default url where this user should be redirected to after logging in. Also can be used as the main link
95
97
  # at the top of navigation.
96
98
  def default_path
97
99
  role ? role.default_path : '/'
98
100
  end
99
-
101
+
100
102
  def failed_authentication!
101
103
  self.increment!(:failed_auth_count)
102
104
  end
103
-
105
+
104
106
  # full name
105
107
  def name
106
108
  "#{first_name} #{last_name}"
107
109
  end
108
-
110
+
109
111
  # Get the value of the current password, only can be used right after setting a new password.
110
112
  def password
111
113
  @password
@@ -126,37 +128,37 @@ module Challah
126
128
  def password_confirmation=(value)
127
129
  @password_confirmation = value
128
130
  end
129
-
131
+
130
132
  # Returns the permission keys in an array for exactly what this user can access. This includes all role based permission keys, and any specifically given to this user through permissions_users
131
133
  def permission_keys
132
134
  return @permission_keys if @permission_keys
133
-
135
+
134
136
  role_keys = if role(true)
135
137
  role_key = "#{role.cache_key}/permissions"
136
-
138
+
137
139
  keys = Rails.cache.fetch(role_key) do
138
140
  role.permission_keys.clone
139
141
  end
140
-
141
- Rails.cache.write(role_key, keys)
142
+
143
+ Rails.cache.write(role_key, keys)
142
144
  keys
143
145
  else
144
146
  []
145
147
  end
146
-
148
+
147
149
  user_key = "#{self.cache_key}/permissions"
148
-
150
+
149
151
  user_keys = Rails.cache.fetch(user_key) do
150
152
  user_permission_keys.clone
151
153
  end
152
-
154
+
153
155
  user_keys = [] unless user_keys
154
-
156
+
155
157
  Rails.cache.write(user_key, keys) unless new_record?
156
158
 
157
- @permission_keys = (role_keys + user_keys).uniq
159
+ @permission_keys = (role_keys + user_keys).uniq
158
160
  end
159
-
161
+
160
162
  # Returns true if this user has permission to the provided permission key
161
163
  def has(permission_key)
162
164
  self.permission_keys.include?(permission_key.to_s)
@@ -166,46 +168,48 @@ module Challah
166
168
  # Set the permission keys that this role can access
167
169
  def permission_keys=(value)
168
170
  Rails.cache.delete("#{self.cache_key}/permissions")
169
-
171
+
170
172
  @permission_keys = value
171
173
  @permission_keys
172
174
  end
173
-
175
+
174
176
  # When a role is set, reset the permission_keys
175
177
  def role_id=(value)
176
178
  @permission_keys = nil
177
179
  @user_permission_keys = nil
178
-
180
+
179
181
  self[:role_id] = value
180
182
  end
181
-
183
+
182
184
  # shortened name, just includes the first name and last initial
183
185
  def small_name
184
186
  "#{first_name.to_s.titleize} #{last_name.to_s.first.upcase}."
185
187
  end
186
-
187
- # Called when a +Session+ validation is successful, and this user has
188
+
189
+ # Called when a +Session+ validation is successful, and this user has
188
190
  # been authenticated.
189
191
  def successful_authentication!(ip_address = nil)
190
- self.update_attributes(:last_session_at => Time.now, :last_session_ip => ip_address)
192
+ self.last_session_at = Time.now
193
+ self.last_session_ip = ip_address
194
+ self.save
191
195
  self.increment!(:session_count, 1)
192
196
  end
193
-
197
+
194
198
  # Update a user's own account. This differsfrom User#update_attributes because it won't let
195
- # a user update their own role and other protected elements.
199
+ # a user update their own role and other protected elements.
196
200
  #
197
201
  # All attributes on the user model can be updated, except for the ones listed below.
198
202
  def update_account_attributes(attributes_to_update = {})
199
- protected_attributes = self.class.protected_attributes.clone.flatten
200
- attributes_to_update.keys.each { |key| attributes_to_update.delete(key) if protected_attributes.include?(key.to_s) }
203
+ protected_attributes = self.class.protected_attributes.clone.flatten
204
+ attributes_to_update.keys.each { |key| attributes_to_update.delete(key) if protected_attributes.include?(key.to_s) }
201
205
  self.update_attributes(attributes_to_update)
202
206
  end
203
-
204
- # Returns the permission keys used by this specific user, does not include any role-based permissions.
207
+
208
+ # Returns the permission keys used by this specific user, does not include any role-based permissions.
205
209
  def user_permission_keys
206
210
  new_record? ? [] : self.permissions(true).collect(&:key)
207
211
  end
208
-
212
+
209
213
  # Is this user valid and ready for a user session?
210
214
  #
211
215
  # Override this method if you need to check for a particular configuration on each page request.
@@ -214,7 +218,7 @@ module Challah
214
218
  end
215
219
 
216
220
  # Allow dynamic checking for permissions
217
- #
221
+ #
218
222
  # +admin?+ is shorthand for:
219
223
  #
220
224
  # def admin?
@@ -224,7 +228,7 @@ module Challah
224
228
  return has(sym.to_s.gsub(/\?/, '')) if sym.to_s =~ /^[a-z_]*\?$/
225
229
  super(sym, *args, &block)
226
230
  end
227
-
231
+
228
232
  protected
229
233
  # called before_save on the User model, actually encrypts the password with a new generated salt
230
234
  def before_save_password
@@ -238,10 +242,10 @@ module Challah
238
242
  self.persistence_token = ::Challah::Random.token(125) if self.persistence_token.to_s.blank?
239
243
  self.api_key = ::Challah::Random.token(50) if self.api_key.to_s.blank?
240
244
  end
241
-
242
- # Saves any updated permission keys to the database for this user.
243
- # Any permission keys that are specifically given to this user and are also in the
244
- # user's role will be removed. So, the only permission keys added here will be those
245
+
246
+ # Saves any updated permission keys to the database for this user.
247
+ # Any permission keys that are specifically given to this user and are also in the
248
+ # user's role will be removed. So, the only permission keys added here will be those
245
249
  # in addition to the user's role.
246
250
  def save_permission_keys
247
251
  if @permission_keys and Array === @permission_keys
@@ -253,7 +257,7 @@ module Challah
253
257
  permission = ::Permission[key]
254
258
 
255
259
  if permission
256
- self.permission_users.create(:permission_id => permission.id, :user_id => self.id)
260
+ self.permission_users.create({ :permission_id => permission.id, :user_id => self.id }, :without_protection => true)
257
261
  end
258
262
  end
259
263
 
@@ -1,3 +1,3 @@
1
1
  module Challah
2
- VERSION = "0.5.3" unless defined?(::Challah::VERSION)
2
+ VERSION = "0.5.4" unless defined?(::Challah::VERSION)
3
3
  end
data/lib/tasks/crud.rake CHANGED
@@ -1,6 +1,6 @@
1
1
  require 'highline/import'
2
2
 
3
- namespace :challah do
3
+ namespace :challah do
4
4
  namespace :permissions do
5
5
  desc "Create a new permission"
6
6
  task :create => :environment do
@@ -9,25 +9,25 @@ namespace :challah do
9
9
 
10
10
  banner('Creating a permission')
11
11
 
12
- # Grab the required fields.
12
+ # Grab the required fields.
13
13
  name = ask('Permission name: ')
14
14
  key = name.to_s.parameterize.underscore
15
- key = ask('Key: ') { |q| q.default = key }
15
+ key = ask('Key: ') { |q| q.default = key }
16
16
  description = ask('Description (optional): ')
17
-
18
- permission = Permission.new(:name => name, :key => key, :description => description)
17
+
18
+ permission = Permission.new({ :name => name, :key => key, :description => description }, :without_protection => true)
19
19
 
20
20
  puts "\n"
21
21
 
22
22
  if permission.save
23
- puts "Role has been created successfully! [ID: #{permission.id}]"
23
+ puts "Permission has been created successfully! [ID: #{permission.id}]"
24
24
  else
25
- puts "Role could not be added for the following errors:"
25
+ puts "Permission could not be added for the following errors:"
26
26
  permission.errors.full_messages.each { |m| puts " - #{m}" }
27
27
  end
28
28
  end
29
29
  end
30
-
30
+
31
31
  namespace :roles do
32
32
  desc "Create a new role"
33
33
  task :create => :environment do
@@ -36,11 +36,11 @@ namespace :challah do
36
36
 
37
37
  banner('Creating a role')
38
38
 
39
- # Grab the required fields.
39
+ # Grab the required fields.
40
40
  name = ask('Name: ')
41
41
  description = ask('Description (optional): ')
42
-
43
- role = Role.new(:name => name, :description => description)
42
+
43
+ role = Role.new({ :name => name, :description => description }, :without_protection => true)
44
44
 
45
45
  puts "\n"
46
46
 
@@ -52,7 +52,7 @@ namespace :challah do
52
52
  end
53
53
  end
54
54
  end
55
-
55
+
56
56
  namespace :users do
57
57
  desc "Create a new user"
58
58
  task :create => :environment do
@@ -65,9 +65,9 @@ namespace :challah do
65
65
 
66
66
  if first_user
67
67
  puts "Please answer the following questions to create your first admin user.\n\n"
68
- end
68
+ end
69
69
 
70
- # Grab the required fields.
70
+ # Grab the required fields.
71
71
  first_name = ask('First name: ')
72
72
  last_name = ask('Last name: ')
73
73
  email = ask('Email: ')
@@ -81,14 +81,21 @@ namespace :challah do
81
81
  unless first_user
82
82
  choose do |menu|
83
83
  menu.prompt = 'Choose a role for this user: '
84
-
84
+
85
85
  Role.all.each do |role|
86
86
  menu.choice(role.name) { role_id = role.id }
87
87
  end
88
88
  end
89
89
  end
90
90
 
91
- user = User.new(:first_name => first_name, :last_name => last_name, :email => email, :username => username, :role_id => role_id, :password => password, :password_confirmation => password)
91
+ user = User.new({
92
+ :first_name => first_name,
93
+ :last_name => last_name,
94
+ :email => email,
95
+ :username => username,
96
+ :role_id => role_id,
97
+ :password => password,
98
+ :password_confirmation => password }, :without_protection => true)
92
99
 
93
100
  puts "\n"
94
101
 
@@ -36,9 +36,7 @@ class PermissionTest < ActiveSupport::TestCase
36
36
  admin_role = create(:role, :name => 'Administrator')
37
37
  assert_equal nil, admin_role.permission_keys.index('new_permission')
38
38
 
39
- #Role.stubs(:admin).returns(admin_role)
40
-
41
- permission = Permission.new(:name => 'New Permission', :key => 'new_permission', :description => 'This is just a test.')
39
+ permission = Permission.new({ :name => 'New Permission', :key => 'new_permission', :description => 'This is just a test.' }, :without_protection => true)
42
40
 
43
41
  assert_difference [ 'Permission.count', 'PermissionRole.count' ], 1 do
44
42
  assert permission.save
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: challah
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.5.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-26 00:00:00.000000000Z
12
+ date: 2012-04-06 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: highline
16
- requirement: &70216822663460 !ruby/object:Gem::Requirement
16
+ requirement: &70222396826020 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70216822663460
24
+ version_requirements: *70222396826020
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rails
27
- requirement: &70216831469680 !ruby/object:Gem::Requirement
27
+ requirement: &70222397669900 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '3.1'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70216831469680
35
+ version_requirements: *70222397669900
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &70216831483320 !ruby/object:Gem::Requirement
38
+ requirement: &70222397682260 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 0.9.2
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70216831483320
46
+ version_requirements: *70222397682260
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bcrypt-ruby
49
- requirement: &70216831500660 !ruby/object:Gem::Requirement
49
+ requirement: &70222397727080 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70216831500660
57
+ version_requirements: *70222397727080
58
58
  description: A simple ruby gem for authentication, users, roles and permissions.
59
59
  email:
60
60
  - john@johntornow.com