authentasaurus 0.7.3 → 0.8.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (128) hide show
  1. data/TODO +3 -0
  2. data/app/controllers/areas_controller.rb +1 -1
  3. data/app/controllers/groups_controller.rb +1 -1
  4. data/app/controllers/permissions_controller.rb +1 -1
  5. data/app/controllers/recoveries_controller.rb +1 -1
  6. data/app/controllers/registrations_controller.rb +1 -1
  7. data/app/controllers/sessions_controller.rb +1 -1
  8. data/app/controllers/user_invitations_controller.rb +1 -1
  9. data/app/controllers/users_controller.rb +1 -1
  10. data/app/controllers/validations_controller.rb +1 -1
  11. data/app/models/area.rb +1 -1
  12. data/app/models/group.rb +1 -1
  13. data/app/models/permission.rb +1 -1
  14. data/app/models/recovery.rb +1 -1
  15. data/app/models/session.rb +1 -1
  16. data/app/models/user_invitation.rb +1 -1
  17. data/app/models/validation.rb +1 -1
  18. data/lib/authentasaurus.rb +22 -36
  19. data/lib/authentasaurus/ac/acts_as_overrider.rb +47 -0
  20. data/lib/authentasaurus/ac/controllers/areas_controller.rb +80 -0
  21. data/lib/authentasaurus/ac/controllers/groups_controller.rb +81 -0
  22. data/lib/authentasaurus/ac/controllers/permissions_controller.rb +81 -0
  23. data/lib/authentasaurus/ac/controllers/recoveries_controller.rb +72 -0
  24. data/lib/authentasaurus/ac/controllers/registrations_controller.rb +45 -0
  25. data/lib/authentasaurus/ac/controllers/sessions_controller.rb +58 -0
  26. data/lib/authentasaurus/ac/controllers/user_invitations_controller.rb +50 -0
  27. data/lib/authentasaurus/ac/controllers/users_controller.rb +80 -0
  28. data/lib/authentasaurus/ac/controllers/validations_controller.rb +53 -0
  29. data/lib/authentasaurus/ac/routing.rb +90 -0
  30. data/lib/authentasaurus/ar/acts_as_authenticatable.rb +113 -0
  31. data/lib/authentasaurus/ar/acts_as_authenticatable_validatable.rb +38 -0
  32. data/lib/authentasaurus/ar/acts_as_overrider.rb +51 -0
  33. data/lib/authentasaurus/ar/authenticatable.rb +66 -0
  34. data/lib/authentasaurus/ar/migrations.rb +173 -0
  35. data/lib/authentasaurus/{models → ar/models}/recovery.rb +3 -3
  36. data/lib/authentasaurus/{models → ar/models}/session.rb +1 -1
  37. data/lib/authentasaurus/{models → ar/models}/user_invitation.rb +1 -1
  38. data/lib/authentasaurus/{models → ar/models}/validation.rb +1 -1
  39. data/lib/authentasaurus/arel/acts_as_authenticatable.rb +72 -0
  40. data/lib/authentasaurus/arel/authenticatable.rb +25 -0
  41. data/lib/authentasaurus/authorization.rb +341 -0
  42. data/lib/authentasaurus/railtie.rb +4 -4
  43. data/lib/generators/authentasaurus/install/templates/initializer.rb +1 -1
  44. data/rdoc/apple-touch-icon.png +0 -0
  45. data/rdoc/classes/Authentasaurus.html +65 -0
  46. data/rdoc/classes/Authentasaurus/Ac.html +72 -0
  47. data/rdoc/classes/Authentasaurus/Ac/ActsAsOverrider.html +104 -0
  48. data/rdoc/classes/Authentasaurus/Ac/ActsAsOverrider/ClassMethods.html +397 -0
  49. data/rdoc/classes/Authentasaurus/Ac/Routing.html +61 -0
  50. data/rdoc/classes/Authentasaurus/Ac/Routing/InstanceMethods.html +390 -0
  51. data/rdoc/classes/Authentasaurus/Ar.html +77 -0
  52. data/rdoc/classes/Authentasaurus/Ar/ActsAsAuthenticatable.html +107 -0
  53. data/rdoc/classes/Authentasaurus/Ar/ActsAsAuthenticatable/ClassMethods.html +168 -0
  54. data/rdoc/classes/Authentasaurus/Ar/ActsAsAuthenticatable/InstanceMethods.html +357 -0
  55. data/rdoc/classes/Authentasaurus/Ar/ActsAsAuthenticatableValidatable.html +109 -0
  56. data/rdoc/classes/Authentasaurus/Ar/ActsAsAuthenticatableValidatable/ClassMethods.html +113 -0
  57. data/rdoc/classes/Authentasaurus/Ar/ActsAsAuthenticatableValidatable/InstanceMethods.html +54 -0
  58. data/rdoc/classes/Authentasaurus/Ar/ActsAsOverrider.html +104 -0
  59. data/rdoc/classes/Authentasaurus/Ar/ActsAsOverrider/ClassMethods.html +320 -0
  60. data/rdoc/classes/Authentasaurus/Ar/Authenticatable.html +104 -0
  61. data/rdoc/classes/Authentasaurus/Ar/Authenticatable/ClassMethods.html +182 -0
  62. data/rdoc/classes/Authentasaurus/Ar/Migrations.html +63 -0
  63. data/rdoc/classes/Authentasaurus/Ar/Migrations/Columns.html +68 -0
  64. data/rdoc/classes/Authentasaurus/Ar/Migrations/Columns/InstanceMethods.html +106 -0
  65. data/rdoc/classes/Authentasaurus/Ar/Migrations/Tables.html +68 -0
  66. data/rdoc/classes/Authentasaurus/Ar/Migrations/Tables/InstanceMethods.html +703 -0
  67. data/rdoc/classes/Authentasaurus/Arel.html +65 -0
  68. data/rdoc/classes/Authentasaurus/Arel/ActsAsAuthenticatable.html +107 -0
  69. data/rdoc/classes/Authentasaurus/Arel/ActsAsAuthenticatable/ClassMethods.html +139 -0
  70. data/rdoc/classes/Authentasaurus/Arel/ActsAsAuthenticatable/InstanceMethods.html +113 -0
  71. data/rdoc/classes/Authentasaurus/Arel/Authenticatable.html +105 -0
  72. data/rdoc/classes/Authentasaurus/Arel/Authenticatable/ClassMethods.html +119 -0
  73. data/rdoc/classes/Authentasaurus/Authorization.html +230 -0
  74. data/rdoc/classes/Authentasaurus/Authorization/ActionController.html +63 -0
  75. data/rdoc/classes/Authentasaurus/Authorization/ActionController/ClassMethods.html +263 -0
  76. data/rdoc/classes/Authentasaurus/Authorization/ActionController/InstanceMethods.html +54 -0
  77. data/rdoc/classes/Authentasaurus/Authorization/ActionView.html +54 -0
  78. data/rdoc/classes/Authentasaurus/Authorization/CommonInstanceMethods.html +240 -0
  79. data/rdoc/created.rid +1 -0
  80. data/rdoc/css/main.css +278 -0
  81. data/rdoc/css/panel.css +383 -0
  82. data/rdoc/css/reset.css +53 -0
  83. data/rdoc/favicon.ico +0 -0
  84. data/rdoc/files/README_rdoc.html +366 -0
  85. data/rdoc/files/TODO.html +64 -0
  86. data/rdoc/files/lib/authentasaurus/ac/acts_as_overrider_rb.html +52 -0
  87. data/rdoc/files/lib/authentasaurus/ac/routing_rb.html +60 -0
  88. data/rdoc/files/lib/authentasaurus/ar/acts_as_authenticatable_rb.html +52 -0
  89. data/rdoc/files/lib/authentasaurus/ar/acts_as_authenticatable_validatable_rb.html +52 -0
  90. data/rdoc/files/lib/authentasaurus/ar/acts_as_overrider_rb.html +52 -0
  91. data/rdoc/files/lib/authentasaurus/ar/authenticatable_rb.html +52 -0
  92. data/rdoc/files/lib/authentasaurus/ar/migrations_rb.html +52 -0
  93. data/rdoc/files/lib/authentasaurus/arel/acts_as_authenticatable_rb.html +52 -0
  94. data/rdoc/files/lib/authentasaurus/arel/authenticatable_rb.html +72 -0
  95. data/rdoc/files/lib/authentasaurus/authorization_rb.html +208 -0
  96. data/rdoc/i/arrows.png +0 -0
  97. data/rdoc/i/results_bg.png +0 -0
  98. data/rdoc/i/tree_bg.png +0 -0
  99. data/rdoc/index.html +15 -0
  100. data/rdoc/js/jquery-1.3.2.min.js +19 -0
  101. data/rdoc/js/jquery-effect.js +593 -0
  102. data/rdoc/js/main.js +22 -0
  103. data/rdoc/js/searchdoc.js +628 -0
  104. data/rdoc/panel/index.html +71 -0
  105. data/rdoc/panel/search_index.js +1 -0
  106. data/rdoc/panel/tree.js +1 -0
  107. metadata +92 -44
  108. data/lib/action_controller/authorization.rb +0 -215
  109. data/lib/action_view/authorization.rb +0 -52
  110. data/lib/active_record/acts_as_authenticatable.rb +0 -111
  111. data/lib/active_record/acts_as_authenticatable_validatable.rb +0 -36
  112. data/lib/active_record/authenticatable.rb +0 -64
  113. data/lib/active_resource/acts_as_authenticatable.rb +0 -70
  114. data/lib/active_resource/authenticatable.rb +0 -24
  115. data/lib/authentasaurus/areas_controller.rb +0 -78
  116. data/lib/authentasaurus/groups_controller.rb +0 -79
  117. data/lib/authentasaurus/models/area.rb +0 -21
  118. data/lib/authentasaurus/models/group.rb +0 -19
  119. data/lib/authentasaurus/models/permission.rb +0 -24
  120. data/lib/authentasaurus/permissions_controller.rb +0 -79
  121. data/lib/authentasaurus/recoveries_controller.rb +0 -70
  122. data/lib/authentasaurus/registrations_controller.rb +0 -43
  123. data/lib/authentasaurus/sessions_controller.rb +0 -56
  124. data/lib/authentasaurus/user_invitations_controller.rb +0 -48
  125. data/lib/authentasaurus/users_controller.rb +0 -78
  126. data/lib/authentasaurus/validations_controller.rb +0 -51
  127. data/lib/helpers/migrations.rb +0 -171
  128. data/lib/helpers/routing.rb +0 -87
@@ -0,0 +1,113 @@
1
+ module Authentasaurus::Ar
2
+ module ActsAsAuthenticatable
3
+ def self.included(base)
4
+ base.send :extend, ClassMethods
5
+ base.send :include, InstanceMethods
6
+ end
7
+
8
+ module ClassMethods
9
+
10
+ case Rails.application.config.authentasaurus[:hashing]
11
+ when "SHA2"
12
+ require 'digest/sha2'
13
+ when "SHA1"
14
+ require 'digest/sha1'
15
+ when "MD5"
16
+ require 'digest/md5'
17
+ else
18
+ require 'digest/sha2'
19
+ end
20
+
21
+
22
+ ## Authenticates the username (or email) and password
23
+ def authenticate(username_or_email, password, remember = false)
24
+ user=self.find_by_username(username_or_email) || self.find_by_email(username_or_email)
25
+ if user
26
+ expected_password=encrypt_password(password, user.password_seed)
27
+ unless expected_password == user.hashed_password && user.active
28
+ user = nil
29
+ else
30
+ user.create_remember_me_token if remember
31
+ end
32
+ end
33
+ return user
34
+ end
35
+
36
+ ## Encrypts the password using the given seed
37
+ def encrypt_password(password, password_seed)
38
+ pass_to_hash=password + "Securasaurus" + password_seed
39
+
40
+ case Rails.application.config.authentasaurus[:hashing]
41
+ when "SHA2"
42
+ Digest::SHA2.hexdigest(pass_to_hash)
43
+ when "SHA1"
44
+ Digest::SHA1.hexdigest(pass_to_hash)
45
+ when "MD5"
46
+ Digest::MD5.hexdigest(pass_to_hash)
47
+ else
48
+ Digest::SHA2.hexdigest(pass_to_hash)
49
+ end
50
+
51
+ end
52
+ end
53
+
54
+ module InstanceMethods
55
+ def username=(username)
56
+ super(username.downcase)
57
+ end
58
+
59
+ ## Password attribute (used when creating a user)
60
+ def password
61
+ return @password
62
+ end
63
+
64
+ def password=(pwd)
65
+ @password = pwd
66
+ return if pwd.blank?
67
+ create_salt
68
+ self.hashed_password = self.class.encrypt_password(@password, self.password_seed)
69
+ end
70
+
71
+ ## New password attribute (used when editing a user)
72
+ def new_password
73
+ return @new_password
74
+ end
75
+
76
+ def new_password=(pwd)
77
+ @new_password = pwd
78
+ return if pwd.blank?
79
+ create_salt
80
+ self.hashed_password = self.class.encrypt_password(@new_password, self.password_seed)
81
+ end
82
+
83
+ def activate
84
+ self.update_attribute :active, true
85
+ end
86
+
87
+ def deactivate
88
+ self.update_attribute :active, false
89
+ end
90
+
91
+ def create_remember_me_token
92
+ pass_to_hash=Time.now.to_i.to_s + "Securasaurus" + password_seed
93
+ self.update_attribute :remember_me_token, Digest::SHA1.hexdigest(pass_to_hash)
94
+ self.remember_me_token
95
+ end
96
+
97
+ private
98
+ def new_password_blank?
99
+ self.new_password.blank?
100
+ end
101
+
102
+ ## Creates password seed (salt)
103
+ def create_salt
104
+ self.password_seed = self.object_id.to_s + rand.to_s
105
+ end
106
+
107
+ ## Dont delete the last user
108
+ def dont_delete_admin
109
+ raise "You cannot delete the last admin" if self.id == 1 || User.count == 1
110
+ end
111
+ end
112
+ end
113
+ end
@@ -0,0 +1,38 @@
1
+ module Authentasaurus::Ar
2
+ module ActsAsAuthenticatableValidatable
3
+ def self.included(base)
4
+ base.send :extend, ActsAsAuthenticatable::ClassMethods
5
+ base.send :include, ActsAsAuthenticatable::InstanceMethods
6
+ base.send :extend, ClassMethods
7
+ base.send :include, InstanceMethods
8
+ end
9
+
10
+ module ClassMethods
11
+ ## Authenticates the username (or email) and password
12
+ def authenticate(username_or_email, password, remember = false)
13
+ user=self.find_by_username(username_or_email) || self.find_by_email(username_or_email)
14
+ if user
15
+ expected_password=encrypt_password(password, user.password_seed)
16
+ unless expected_password == user.hashed_password && user.active && user.validation.nil?
17
+ user = nil
18
+ else
19
+ user.create_remember_me_token if remember
20
+ end
21
+ end
22
+ return user
23
+ end
24
+ end
25
+
26
+ module InstanceMethods
27
+ private
28
+ def send_validation
29
+ unless self.active
30
+ validation = self.build_validation(:email => self.email, :validation_code => User.encrypt_password(self.username,self.password_seed))
31
+ unless validation.save
32
+ raise "Could not create validation record"
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,51 @@
1
+ module Authentasaurus::Ar
2
+ Dir[File.dirname(__FILE__) + '/models/*.rb'].each {|file| require file }
3
+
4
+ module ActsAsOverrider
5
+ def self.included(base)
6
+ base.send :extend, ClassMethods
7
+ end
8
+
9
+ module ClassMethods
10
+ def acts_as_area
11
+ unloadable
12
+
13
+ has_many :permissions, :dependent => :destroy
14
+ has_many :groups, :through => :permissions
15
+
16
+ validates_presence_of :name
17
+ end
18
+
19
+ def acts_as_group
20
+ has_many :permissions, :dependent => :destroy
21
+ has_many :areas, :through => :permissions
22
+
23
+ validates_presence_of :name
24
+ end
25
+
26
+ def acts_as_permission
27
+ unloadable
28
+
29
+ belongs_to :group
30
+ belongs_to :area
31
+
32
+ # Check that everything is there
33
+ validates_presence_of :group_id, :area_id
34
+ # Check foreign keys
35
+ validates_associated :group, :area
36
+ end
37
+
38
+ def acts_as_recovery
39
+ include Authentasaurus::Ar::Models::Recovery
40
+ end
41
+
42
+ def acts_as_user_invitation
43
+ include Authentasaurus::Ar::Models::UserInvitation
44
+ end
45
+
46
+ def acts_as_validation
47
+ include Authentasaurus::Ar::Models::Validation
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,66 @@
1
+ module Authentasaurus::Ar
2
+ module Authenticatable
3
+ def self.included(base)
4
+ base.send :extend, ClassMethods
5
+ end
6
+
7
+ module ClassMethods
8
+ def authenticatable(*args)
9
+ options = args.extract_options!
10
+ args = args.flatten
11
+ # Associations
12
+ belongs_to :group
13
+ has_many :permissions, :through => :group
14
+ # Validation
15
+ # basic attributes
16
+ validates_presence_of :username, :hashed_password, :password_seed, :email, :name
17
+ validates_uniqueness_of :username, :email
18
+ validates_format_of :username, :with => /^[a-z0-9]*([a-z0-9]{4})+[a-z0-9]*$/ # alpha-numeric only and at least 4 characters
19
+ validates_format_of :email, :with => %r{[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}}
20
+ # password validations
21
+ validates_confirmation_of :password, :on => :create, :if => Proc.new {|user| user.hashed_password.nil? || user.password_seed.nil? }
22
+ validates_presence_of :password, :on => :create, :if => Proc.new {|user| user.hashed_password.nil? || user.password_seed.nil? }
23
+ validates_length_of :password, :minimum => 6, :on => :create, :if => Proc.new {|user| user.hashed_password.nil? || user.password_seed.nil? }
24
+ # new password
25
+ validates_confirmation_of :new_password, :on => :update, :unless => :new_password_blank?
26
+ validates_length_of :new_password, :minimum => 6, :on => :update, :unless => :new_password_blank?
27
+ # format of password
28
+ if args.include?(:strong_password)
29
+ validates_format_of :password, :with => %r{[a-z]}, :on => :create, :message => :"authenticatable.lower_case_password", :if => Proc.new {|user| user.hashed_password.nil? || user.password_seed.nil? }
30
+ validates_format_of :password, :with => %r{[A-Z]}, :on => :create, :message => :"authenticatable.upper_case_password", :if => Proc.new {|user| user.hashed_password.nil? || user.password_seed.nil? }
31
+ validates_format_of :password, :with => %r{[0-9]}, :on => :create, :message => :"authenticatable.digit_password", :if => Proc.new {|user| user.hashed_password.nil? || user.password_seed.nil? }
32
+ validates_format_of :password, :with => %r{[@$%!&]}, :on => :create, :message => :"authenticatable.symbol_password", :if => Proc.new {|user| user.hashed_password.nil? || user.password_seed.nil? }
33
+ # new password
34
+ validates_format_of :new_password, :with => %r{[a-z]}, :on => :update, :message => :"authenticatable.lower_case_password", :unless => :new_password_blank?
35
+ validates_format_of :new_password, :with => %r{[A-Z]}, :on => :update, :message => :"authenticatable.upper_case_password", :unless => :new_password_blank?
36
+ validates_format_of :new_password, :with => %r{[0-9]}, :on => :update, :message => :"authenticatable.digit_password", :unless => :new_password_blank?
37
+ validates_format_of :new_password, :with => %r{[@$%!&]}, :on => :update, :message => :"authenticatable.symbol_password", :unless => :new_password_blank?
38
+ end
39
+
40
+ # Accessors
41
+ attr_accessor :password_confirmation, :new_password_confirmation
42
+
43
+ # default data
44
+ class << self
45
+ attr_accessor :default_data
46
+ end
47
+
48
+ @default_data = {}
49
+
50
+ # dont delete admin
51
+ before_destroy :dont_delete_admin
52
+
53
+ #validation
54
+ if args.include?(:validatable)
55
+ has_one :validation, :as => :user
56
+ after_create :send_validation
57
+ # include authentication methods including validation
58
+ include ActsAsAuthenticatableValidatable
59
+ else
60
+ # include authentication methods
61
+ include ActsAsAuthenticatable
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,173 @@
1
+ module Authentasaurus::Ar
2
+ module Migrations
3
+ # Extends ActiveRecord::ConnectionAdapters::SchemaStatements
4
+ module Tables
5
+ def self.included(base) # :nodoc:
6
+ base.send :include, InstanceMethods
7
+ end
8
+
9
+ module InstanceMethods
10
+ # creates all tables
11
+ def authentasaurus_tables
12
+ authentasaurus_user :authorizable
13
+ authentasaurus_group
14
+ authentasaurus_area
15
+ authentasaurus_permission
16
+ authentasaurus_validation
17
+ authentasaurus_user_invitation
18
+ authentasaurus_recovery
19
+ end
20
+
21
+ # creates users table
22
+ def authentasaurus_user(*opts)
23
+ create_table :users do |t|
24
+ t.string :username, :null => false
25
+ t.string :hashed_password, :null => false
26
+ t.string :password_seed, :null => false
27
+ t.string :name, :null => false
28
+ t.string :email, :null => false
29
+ t.boolean :active, :null => false, :default => false
30
+ t.string :remember_me_token
31
+
32
+ if opts.include?(:authorizable) || opts.include?("authorizable")
33
+ t.integer :group_id, :null => false
34
+ end
35
+
36
+ t.timestamps
37
+ end
38
+ end
39
+
40
+ # creates groups table
41
+ def authentasaurus_group
42
+ create_table :groups do |t|
43
+ t.string :name, :null => false
44
+
45
+ t.timestamps
46
+ end
47
+ end
48
+
49
+ # creates areas table
50
+ def authentasaurus_area
51
+ create_table :areas do |t|
52
+ t.string :name, :null => false
53
+
54
+ t.timestamps
55
+ end
56
+ end
57
+
58
+ # creates permissions table
59
+ def authentasaurus_permission
60
+ create_table :permissions do |t|
61
+ t.integer :group_id, :null => false
62
+ t.integer :area_id, :null => false
63
+ t.boolean :read, :null => false, :default => false
64
+ t.boolean :write, :null => false, :default => false
65
+
66
+ t.timestamps
67
+ end
68
+ end
69
+
70
+ # creates validations table
71
+ def authentasaurus_validation
72
+ create_table :validations do |t|
73
+ t.integer :user_id, :null => false
74
+ t.string :user_type, :null => false
75
+ t.string :email, :null => false
76
+ t.string :validation_code, :null => false
77
+
78
+ t.timestamps
79
+ end
80
+ end
81
+
82
+ # creates user_invitations table
83
+ def authentasaurus_user_invitation
84
+ create_table :user_invitations do |t|
85
+ t.string :token, :null => false, :unique => true
86
+ t.string :email
87
+
88
+ t.timestamps
89
+ end
90
+ end
91
+
92
+ # creates recoveries table
93
+ def authentasaurus_recovery
94
+ create_table :recoveries do |t|
95
+ t.integer :user_id, :null => false
96
+ t.string :email, :null => false
97
+ t.string :token, :null => false, :unique => true
98
+
99
+ t.timestamps
100
+ end
101
+ end
102
+
103
+ # drops all tables
104
+ def authentasaurus_drop_tables
105
+ authentasaurus_drop_user
106
+ authentasaurus_drop_group
107
+ authentasaurus_drop_area
108
+ authentasaurus_drop_permission
109
+ authentasaurus_drop_validation
110
+ authentasaurus_drop_user_invitation
111
+ authentasaurus_drop_recovery
112
+ end
113
+
114
+ # drops users table
115
+ def authentasaurus_drop_user
116
+ drop_table :users
117
+ end
118
+
119
+ # drops groups table
120
+ def authentasaurus_drop_group
121
+ drop_table :groups
122
+ end
123
+
124
+ # drops areas table
125
+ def authentasaurus_drop_area
126
+ drop_table :areas
127
+ end
128
+
129
+ # drops permissions table
130
+ def authentasaurus_drop_permission
131
+ drop_table :permissions
132
+ end
133
+
134
+ # drops validations table
135
+ def authentasaurus_drop_validation
136
+ drop_table :validations
137
+ end
138
+
139
+ # drops user_invitations table
140
+ def authentasaurus_drop_user_invitation
141
+ drop_table :user_invitations
142
+ end
143
+
144
+ # drops recoveries table
145
+ def authentasaurus_drop_recovery
146
+ drop_table :recoveries
147
+ end
148
+ end
149
+ end
150
+
151
+ # Extends ActiveRecord::ConnectionAdapters::TableDefinition
152
+ module Columns
153
+ def self.included(base) # :nodoc:
154
+ base.send :include, InstanceMethods
155
+ end
156
+
157
+ module InstanceMethods
158
+ def user(*opts)
159
+ string :username, :null => false
160
+ string :hashed_password, :null => false
161
+ string :password_seed, :null => false
162
+ string :name, :null => false
163
+ string :email, :null => false
164
+ string :remember_me_token
165
+ boolean :active, :null => false, :default => false
166
+ if opts.include?(:authorizable)
167
+ integer :group_id, :null => false
168
+ end
169
+ end
170
+ end
171
+ end
172
+ end
173
+ end
@@ -1,4 +1,4 @@
1
- module Authentasaurus::Models
1
+ module Authentasaurus::Ar::Models
2
2
  module Recovery
3
3
  def self.included(base) # :nodoc:
4
4
  base.send :extend, ClassMethods
@@ -10,10 +10,10 @@ module Authentasaurus::Models
10
10
 
11
11
  base.send :belongs_to, :user
12
12
 
13
- base.send :before_validation_on_create, :make_token!
13
+ base.send :before_validation, :make_token!, :on => :create
14
14
  base.send :before_save, :send_recovery
15
15
 
16
- base.send :named_scope, :valid, lambda { { :conditions => ["updated_at <= ?", Rails.application.config.authentasaurus[:modules][:recoverable][:token_expires_after].days.from_now] } }
16
+ base.send :scope, :valid, lambda { { :conditions => ["updated_at <= ?", Rails.application.config.authentasaurus[:modules][:recoverable][:token_expires_after].days.from_now] } }
17
17
 
18
18
  base.send :validates_uniqueness_of, :user_id
19
19
  base.send :validates_presence_of, :email