authentasaurus 0.8.4 → 0.8.6

Sign up to get free protection for your applications and to get access to all the features.
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)