authentasaurus 0.8.4 → 0.8.6

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.
Files changed (43) hide show
  1. data/CHANGELIST +6 -2
  2. data/TODO +2 -0
  3. data/app/controllers/sessions_controller.rb +1 -1
  4. data/app/models/authentasaurus_emailer.rb +6 -6
  5. data/app/models/{session.rb → authentasaurus_session.rb} +1 -1
  6. data/app/views/authentasaurus_emailer/invitation_mail.html.erb +2 -2
  7. data/app/views/authentasaurus_emailer/recovery_mail.html.erb +2 -2
  8. data/app/views/authentasaurus_emailer/validation_mail.html.erb +2 -2
  9. data/lib/authentasaurus.rb +5 -1
  10. data/lib/authentasaurus/ac/acts_as_overrider.rb +6 -5
  11. data/lib/authentasaurus/ac/controllers/areas_controller.rb +52 -57
  12. data/lib/authentasaurus/ac/controllers/groups_controller.rb +55 -59
  13. data/lib/authentasaurus/ac/controllers/permissions_controller.rb +52 -57
  14. data/lib/authentasaurus/ac/controllers/recoveries_controller.rb +49 -54
  15. data/lib/authentasaurus/ac/controllers/registrations_controller.rb +23 -28
  16. data/lib/authentasaurus/ac/controllers/sessions_controller.rb +39 -40
  17. data/lib/authentasaurus/ac/controllers/user_invitations_controller.rb +29 -34
  18. data/lib/authentasaurus/ac/controllers/users_controller.rb +51 -56
  19. data/lib/authentasaurus/ac/controllers/validations_controller.rb +34 -39
  20. data/lib/authentasaurus/ac/routing.rb +70 -74
  21. data/lib/authentasaurus/ar/acts_as_authenticatable.rb +58 -64
  22. data/lib/authentasaurus/ar/acts_as_authenticatable_validatable.rb +13 -16
  23. data/lib/authentasaurus/ar/acts_as_overrider.rb +1 -3
  24. data/lib/authentasaurus/ar/authenticatable.rb +1 -3
  25. data/lib/authentasaurus/ar/migrations.rb +137 -145
  26. data/lib/authentasaurus/ar/models/recovery.rb +20 -23
  27. data/lib/authentasaurus/ar/models/session.rb +46 -46
  28. data/lib/authentasaurus/ar/models/user_invitation.rb +19 -22
  29. data/lib/authentasaurus/ar/models/validation.rb +12 -15
  30. data/lib/authentasaurus/arel/acts_as_authenticatable.rb +18 -23
  31. data/lib/authentasaurus/arel/authenticatable.rb +5 -9
  32. data/lib/authentasaurus/authorization.rb +11 -8
  33. data/lib/authentasaurus/configuration.rb +30 -0
  34. data/lib/authentasaurus/railtie.rb +3 -6
  35. data/lib/generators/authentasaurus/install/install_generator.rb +1 -2
  36. data/lib/generators/authentasaurus/install/templates/authentasaurus_tasks.rake +2 -2
  37. data/lib/generators/authentasaurus/install/templates/defaults.yml +4 -2
  38. data/lib/generators/authentasaurus/views/templates/authentasaurus_emailer/invitation_mail.html.erb +2 -2
  39. data/lib/generators/authentasaurus/views/templates/authentasaurus_emailer/recovery_mail.html.erb +2 -2
  40. data/lib/generators/authentasaurus/views/templates/authentasaurus_emailer/validation_mail.html.erb +2 -2
  41. data/lib/generators/authentasaurus/views/views_generator.rb +1 -1
  42. metadata +8 -8
  43. data/lib/generators/authentasaurus/install/templates/initializer.rb +0 -3
@@ -1,53 +1,48 @@
1
1
  module Authentasaurus::Ac::Controllers
2
2
  module ValidationsController
3
- def self.included(base) # :nodoc:
4
- base.send :extend, ClassMethods
5
- base.send :include, InstanceMethods
6
- end
3
+ extend ActiveSupport::Concern
7
4
 
8
5
  module ClassMethods
9
6
  end
10
-
11
- module InstanceMethods
12
- def validate
13
- respond_to do |format|
14
- format.html
15
- end
7
+
8
+ def validate
9
+ respond_to do |format|
10
+ format.html
16
11
  end
17
-
18
- def activate
19
- respond_to do |format|
20
- validation = Validation.find_by_validation_code(params[:vcode])
21
- if validation
22
- validation.user.activate
23
- validation.destroy
24
- format.html { redirect_to login_url, :notice => I18n.t(:validation_successful, :scope => [:authentasaurus, :messages, :validations])}
25
- else
26
- flash.now[:alert] = I18n.t(:validation_failed, :scope => [:authentasaurus, :messages, :validations])
27
- format.html { render :validate }
28
- end
12
+ end
13
+
14
+ def activate
15
+ respond_to do |format|
16
+ validation = Validation.find_by_validation_code(params[:vcode])
17
+ if validation
18
+ validation.user.activate
19
+ validation.destroy
20
+ format.html { redirect_to login_url, :notice => I18n.t(:validation_successful, :scope => [:authentasaurus, :messages, :validations])}
21
+ else
22
+ flash.now[:alert] = I18n.t(:validation_failed, :scope => [:authentasaurus, :messages, :validations])
23
+ format.html { render :validate }
29
24
  end
30
25
  end
31
-
32
- def resend_validation_email
33
- respond_to do |format|
34
- format.html
35
- end
26
+ end
27
+
28
+ def resend_validation_email
29
+ respond_to do |format|
30
+ format.html
36
31
  end
32
+ end
33
+
34
+ def do_resend_validation_email
35
+ validation = Validation.find_by_email params[:email]
37
36
 
38
- def do_resend_validation_email
39
- validation = Validation.find_by_email params[:email]
40
-
41
- respond_to do |format|
42
- unless validation.nil?
43
- validation.send_validation
44
- format.html {redirect_to login_url, :notice => I18n.t(:validation_email_sent, :scope => [:authentasaurus, :messages, :validations])}
45
- else
46
- flash.now[:alert] = I18n.t(:validation_email_invalid, :scope => [:authentasaurus, :messages, :validations], :email => params[:email])
47
- format.html { render :resend_validation_email }
48
- end
37
+ respond_to do |format|
38
+ unless validation.nil?
39
+ validation.send_validation
40
+ format.html {redirect_to login_url, :notice => I18n.t(:validation_email_sent, :scope => [:authentasaurus, :messages, :validations])}
41
+ else
42
+ flash.now[:alert] = I18n.t(:validation_email_invalid, :scope => [:authentasaurus, :messages, :validations], :email => params[:email])
43
+ format.html { render :resend_validation_email }
49
44
  end
50
45
  end
51
46
  end
52
- end
47
+ end
53
48
  end
@@ -1,90 +1,86 @@
1
1
  ## Authentasaurus routes helper
2
2
  module Authentasaurus::Ac
3
3
  module Routing
4
- def self.included(base) # :nodoc:
5
- base.send :include, InstanceMethods
6
- end
7
-
8
- module InstanceMethods
9
- # TODO: add documentation here
10
- def authentasaurus_routes(*opts)
11
- options = opts.extract_options!
12
-
13
- # Authenticatable
14
- authentasaurus_sessions options.dup
15
- authentasaurus_users options.dup
16
- # Recoverable
17
- authentasaurus_recoverable
18
-
19
- # Authorizable
20
- if opts.include?(:authorization)
21
- authentasaurus_authorizable options.dup
22
- end
4
+ extend ActiveSupport::Concern
23
5
 
24
- # Validatable
25
- if opts.include?(:validation)
26
- authentasaurus_validatable
27
- end
28
-
29
- # Invitable
30
- if opts.include?(:invitation)
31
- authentasaurus_invitable options.dup
32
- authentasaurus_invitable_public
33
- end
34
- end
6
+ # TODO: add documentation here
7
+ def authentasaurus_routes(*opts)
8
+ options = opts.extract_options!
35
9
 
36
- # TODO: add documentation here
37
- def authentasaurus_sessions(*opts)
38
- get "/sessions/sign-in(.:format)" => "sessions#new", :as => :new_session
39
- post "/sessions(.:format)" => "sessions#create", :as => :sessions
40
- delete "/sessions/sign-out(.:format)" => "sessions#destroy", :as => :session
41
- get "/sessions/no-access(.:format)" => "sessions#no_access", :as => :no_access_sessions
42
- end
10
+ # Authenticatable
11
+ authentasaurus_sessions options.dup
12
+ authentasaurus_users options.dup
13
+ # Recoverable
14
+ authentasaurus_recoverable
43
15
 
44
- # TODO: add documentation here
45
- def authentasaurus_users(*opts)
46
- options = opts.extract_options!
47
-
48
- resources :users, options.dup
16
+ # Authorizable
17
+ if opts.include?(:authorization)
18
+ authentasaurus_authorizable options.dup
49
19
  end
50
20
 
51
- # TODO: add documentation here
52
- def authentasaurus_authorizable(*opts)
53
- options = opts.extract_options!
54
-
55
- resources :groups, options.dup
56
- resources :areas, options.dup
57
- resources :permissions, options.dup
21
+ # Validatable
22
+ if opts.include?(:validation)
23
+ authentasaurus_validatable
58
24
  end
59
25
 
60
- # TODO: add documentation here
61
- def authentasaurus_validatable
62
- match "/validate" => "validations#validate", :as => 'validate'
63
- match "/activate" => "validations#activate", :as => 'activate'
64
- match "/resend-validation" => "validations#resend_validation_email", :via => :get, :as => 'recover_password'
65
- match "/resend-validation" => "validations#do_resend_validation_email", :via => :post, :as => 'do_recover_password'
26
+ # Invitable
27
+ if opts.include?(:invitation)
28
+ authentasaurus_invitable options.dup
29
+ authentasaurus_invitable_public
66
30
  end
31
+ end
32
+
33
+ # TODO: add documentation here
34
+ def authentasaurus_sessions(*opts)
35
+ get "/sessions/sign-in(.:format)" => "sessions#new", :as => :new_authentasaurus_session
36
+ post "/sessions(.:format)" => "sessions#create", :as => :authentasaurus_sessions
37
+ delete "/sessions/sign-out(.:format)" => "sessions#destroy", :as => :authentasaurus_session
38
+ get "/sessions/no-access(.:format)" => "sessions#no_access", :as => :no_access_authentasaurus_sessions
39
+ end
40
+
41
+ # TODO: add documentation here
42
+ def authentasaurus_users(*opts)
43
+ options = opts.extract_options!
67
44
 
68
- # TODO: add documentation here
69
- def authentasaurus_invitable(*opts)
70
- options = opts.extract_options!
71
-
72
- resources :user_invitations, options.dup.merge({:except => [:show, :edit, :update]})
73
- end
45
+ resources :users, options.dup
46
+ end
47
+
48
+ # TODO: add documentation here
49
+ def authentasaurus_authorizable(*opts)
50
+ options = opts.extract_options!
74
51
 
75
- def authentasaurus_invitable_public(*opts)
76
- options = opts.extract_options!
77
-
78
- resources :registrations, :only => [:new, :create], :path_prefix => "/:token", :requirements => {:token => /[0-9a-zA-Z]+/}
79
- end
52
+ resources :groups, options.dup
53
+ resources :areas, options.dup
54
+ resources :permissions, options.dup
55
+ end
56
+
57
+ # TODO: add documentation here
58
+ def authentasaurus_validatable
59
+ match "/validate" => "validations#validate", :as => 'validate'
60
+ match "/activate" => "validations#activate", :as => 'activate'
61
+ match "/resend-validation" => "validations#resend_validation_email", :via => :get, :as => 'recover_password'
62
+ match "/resend-validation" => "validations#do_resend_validation_email", :via => :post, :as => 'do_recover_password'
63
+ end
64
+
65
+ # TODO: add documentation here
66
+ def authentasaurus_invitable(*opts)
67
+ options = opts.extract_options!
80
68
 
81
- # TODO: add documentation here
82
- def authentasaurus_recoverable
83
- match "/forgot-password" => "recoveries#new", :via => :get, :as => 'forgot_password'
84
- match "/forgot-password" => "recoveries#create", :via => :post, :as => 'do_forgot_password'
85
- match "/recover-password/:token" => "recoveries#edit", :via => :get, :as => 'recover_password'
86
- match "/recover-password/:token" => "recoveries#destroy", :via => :delete, :as => 'do_recover_password'
87
- end
69
+ resources :user_invitations, options.dup.merge({:except => [:show, :edit, :update]})
70
+ end
71
+
72
+ def authentasaurus_invitable_public(*opts)
73
+ options = opts.extract_options!
74
+
75
+ resources :registrations, :only => [:new, :create], :path_prefix => "/:token", :requirements => {:token => /[0-9a-zA-Z]+/}
76
+ end
77
+
78
+ # TODO: add documentation here
79
+ def authentasaurus_recoverable
80
+ match "/forgot-password" => "recoveries#new", :via => :get, :as => 'forgot_password'
81
+ match "/forgot-password" => "recoveries#create", :via => :post, :as => 'do_forgot_password'
82
+ match "/recover-password/:token" => "recoveries#edit", :via => :get, :as => 'recover_password'
83
+ match "/recover-password/:token" => "recoveries#destroy", :via => :delete, :as => 'do_recover_password'
88
84
  end
89
- end
85
+ end
90
86
  end
@@ -1,13 +1,9 @@
1
1
  module Authentasaurus::Ar
2
2
  module ActsAsAuthenticatable
3
- def self.included(base)
4
- base.send :extend, ClassMethods
5
- base.send :include, InstanceMethods
6
- end
3
+ extend ActiveSupport::Concern
7
4
 
8
5
  module ClassMethods
9
-
10
- case Rails.application.config.authentasaurus[:hashing]
6
+ case Authentasaurus::Configuration.instance.hashing
11
7
  when "SHA2"
12
8
  require 'digest/sha2'
13
9
  when "SHA1"
@@ -37,7 +33,7 @@ module Authentasaurus::Ar
37
33
  def encrypt_password(password, password_seed)
38
34
  pass_to_hash=password + "Securasaurus" + password_seed
39
35
 
40
- case Rails.application.config.authentasaurus[:hashing]
36
+ case Authentasaurus::Configuration.instance.hashing
41
37
  when "SHA2"
42
38
  Digest::SHA2.hexdigest(pass_to_hash)
43
39
  when "SHA1"
@@ -51,63 +47,61 @@ module Authentasaurus::Ar
51
47
  end
52
48
  end
53
49
 
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
50
+ def username=(username)
51
+ super(username.downcase)
52
+ end
106
53
 
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
54
+ ## Password attribute (used when creating a user)
55
+ def password
56
+ return @password
57
+ end
58
+
59
+ def password=(pwd)
60
+ @password = pwd
61
+ return if pwd.blank?
62
+ create_salt
63
+ self.hashed_password = self.class.encrypt_password(@password, self.password_seed)
64
+ end
65
+
66
+ ## New password attribute (used when editing a user)
67
+ def new_password
68
+ return @new_password
69
+ end
70
+
71
+ def new_password=(pwd)
72
+ @new_password = pwd
73
+ return if pwd.blank?
74
+ create_salt
75
+ self.hashed_password = self.class.encrypt_password(@new_password, self.password_seed)
76
+ end
77
+
78
+ def activate
79
+ self.update_attribute :active, true
80
+ end
81
+
82
+ def deactivate
83
+ self.update_attribute :active, false
84
+ end
85
+
86
+ def create_remember_me_token
87
+ pass_to_hash=Time.now.to_i.to_s + "Securasaurus" + password_seed
88
+ self.update_attribute :remember_me_token, Digest::SHA1.hexdigest(pass_to_hash)
89
+ self.remember_me_token
90
+ end
91
+
92
+ private
93
+ def new_password_blank?
94
+ self.new_password.blank?
95
+ end
96
+
97
+ ## Creates password seed (salt)
98
+ def create_salt
99
+ self.password_seed = self.object_id.to_s + rand.to_s
100
+ end
101
+
102
+ ## Dont delete the last user
103
+ def dont_delete_admin
104
+ raise "You cannot delete the last admin" if self.id == 1 || User.count == 1
111
105
  end
112
- end
106
+ end
113
107
  end
@@ -1,10 +1,9 @@
1
1
  module Authentasaurus::Ar
2
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
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ include ActsAsAuthenticatable
8
7
  end
9
8
 
10
9
  module ClassMethods
@@ -23,16 +22,14 @@ module Authentasaurus::Ar
23
22
  end
24
23
  end
25
24
 
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
25
+ private
26
+ def send_validation
27
+ unless self.active
28
+ validation = self.build_validation(:email => self.email, :validation_code => User.encrypt_password(self.username,self.password_seed))
29
+ unless validation.save
30
+ raise "Could not create validation record"
31
+ end
32
+ end
36
33
  end
37
- end
34
+ end
38
35
  end
@@ -2,9 +2,7 @@ module Authentasaurus::Ar
2
2
  Dir[File.dirname(__FILE__) + '/models/*.rb'].each {|file| require file }
3
3
 
4
4
  module ActsAsOverrider
5
- def self.included(base)
6
- base.send :extend, ClassMethods
7
- end
5
+ extend ActiveSupport::Concern
8
6
 
9
7
  module ClassMethods
10
8
  def acts_as_area
@@ -1,8 +1,6 @@
1
1
  module Authentasaurus::Ar
2
2
  module Authenticatable
3
- def self.included(base)
4
- base.send :extend, ClassMethods
5
- end
3
+ extend ActiveSupport::Concern
6
4
 
7
5
  module ClassMethods
8
6
  def authenticatable(*args)