authentasaurus 0.8.8 → 0.8.9
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/CHANGELIST +2 -6
- data/TODO +0 -5
- data/app/controllers/areas_controller.rb +1 -1
- data/app/controllers/groups_controller.rb +1 -1
- data/app/controllers/permissions_controller.rb +1 -1
- data/app/controllers/recoveries_controller.rb +1 -1
- data/app/controllers/registrations_controller.rb +1 -1
- data/app/controllers/sessions_controller.rb +2 -2
- data/app/controllers/user_invitations_controller.rb +1 -1
- data/app/controllers/users_controller.rb +1 -1
- data/app/controllers/validations_controller.rb +1 -1
- data/app/models/area.rb +1 -1
- data/app/models/authentasaurus_emailer.rb +6 -6
- data/app/models/group.rb +1 -1
- data/app/models/permission.rb +1 -1
- data/app/models/recovery.rb +1 -1
- data/app/models/user_invitation.rb +1 -1
- data/app/models/validation.rb +1 -1
- data/app/views/authentasaurus_emailer/invitation_mail.html.erb +2 -2
- data/app/views/authentasaurus_emailer/recovery_mail.html.erb +2 -2
- data/app/views/authentasaurus_emailer/validation_mail.html.erb +2 -2
- data/lib/authentasaurus.rb +18 -52
- metadata +2 -136
- data/app/models/authentasaurus_session.rb +0 -3
- data/lib/authentasaurus/ac/acts_as_overrider.rb +0 -48
- data/lib/authentasaurus/ac/controllers/areas_controller.rb +0 -75
- data/lib/authentasaurus/ac/controllers/groups_controller.rb +0 -77
- data/lib/authentasaurus/ac/controllers/permissions_controller.rb +0 -76
- data/lib/authentasaurus/ac/controllers/recoveries_controller.rb +0 -67
- data/lib/authentasaurus/ac/controllers/registrations_controller.rb +0 -40
- data/lib/authentasaurus/ac/controllers/sessions_controller.rb +0 -57
- data/lib/authentasaurus/ac/controllers/user_invitations_controller.rb +0 -45
- data/lib/authentasaurus/ac/controllers/users_controller.rb +0 -75
- data/lib/authentasaurus/ac/controllers/validations_controller.rb +0 -48
- data/lib/authentasaurus/ac/routing.rb +0 -86
- data/lib/authentasaurus/ar/acts_as_authenticatable.rb +0 -107
- data/lib/authentasaurus/ar/acts_as_authenticatable_validatable.rb +0 -35
- data/lib/authentasaurus/ar/acts_as_overrider.rb +0 -49
- data/lib/authentasaurus/ar/authenticatable.rb +0 -64
- data/lib/authentasaurus/ar/migrations.rb +0 -165
- data/lib/authentasaurus/ar/models/recovery.rb +0 -34
- data/lib/authentasaurus/ar/models/session.rb +0 -78
- data/lib/authentasaurus/ar/models/user_invitation.rb +0 -30
- data/lib/authentasaurus/ar/models/validation.rb +0 -27
- data/lib/authentasaurus/arel/acts_as_authenticatable.rb +0 -67
- data/lib/authentasaurus/arel/authenticatable.rb +0 -21
- data/lib/authentasaurus/authorization.rb +0 -344
- data/lib/authentasaurus/configuration.rb +0 -30
- data/lib/authentasaurus/railtie.rb +0 -10
- data/lib/generators/authentasaurus/install/USAGE +0 -5
- data/lib/generators/authentasaurus/install/install_generator.rb +0 -10
- data/lib/generators/authentasaurus/install/templates/authentasaurus_tasks.rake +0 -48
- data/lib/generators/authentasaurus/install/templates/defaults.yml +0 -57
- data/lib/generators/authentasaurus/views/USAGE +0 -13
- data/lib/generators/authentasaurus/views/templates/areas/edit.html.erb +0 -7
- data/lib/generators/authentasaurus/views/templates/areas/index.html.erb +0 -11
- data/lib/generators/authentasaurus/views/templates/areas/new.html.erb +0 -7
- data/lib/generators/authentasaurus/views/templates/areas/show.html.erb +0 -7
- data/lib/generators/authentasaurus/views/templates/authentasaurus_emailer/invitation_mail.html.erb +0 -4
- data/lib/generators/authentasaurus/views/templates/authentasaurus_emailer/recovery_mail.html.erb +0 -7
- data/lib/generators/authentasaurus/views/templates/authentasaurus_emailer/validation_mail.html.erb +0 -6
- data/lib/generators/authentasaurus/views/templates/groups/edit.html.erb +0 -7
- data/lib/generators/authentasaurus/views/templates/groups/index.html.erb +0 -11
- data/lib/generators/authentasaurus/views/templates/groups/new.html.erb +0 -7
- data/lib/generators/authentasaurus/views/templates/groups/show.html.erb +0 -7
- data/lib/generators/authentasaurus/views/templates/permissions/edit.html.erb +0 -19
- data/lib/generators/authentasaurus/views/templates/permissions/index.html.erb +0 -17
- data/lib/generators/authentasaurus/views/templates/permissions/new.html.erb +0 -19
- data/lib/generators/authentasaurus/views/templates/permissions/show.html.erb +0 -7
- data/lib/generators/authentasaurus/views/templates/recoveries/edit.html.erb +0 -24
- data/lib/generators/authentasaurus/views/templates/recoveries/new.html.erb +0 -15
- data/lib/generators/authentasaurus/views/templates/registrations/new.html.erb +0 -21
- data/lib/generators/authentasaurus/views/templates/sessions/new.html.erb +0 -41
- data/lib/generators/authentasaurus/views/templates/sessions/no_access.html.erb +0 -1
- data/lib/generators/authentasaurus/views/templates/user_invitations/index.html.erb +0 -14
- data/lib/generators/authentasaurus/views/templates/user_invitations/new.html.erb +0 -9
- data/lib/generators/authentasaurus/views/templates/users/edit.html.erb +0 -27
- data/lib/generators/authentasaurus/views/templates/users/index.html.erb +0 -19
- data/lib/generators/authentasaurus/views/templates/users/new.html.erb +0 -27
- data/lib/generators/authentasaurus/views/templates/users/show.html.erb +0 -11
- data/lib/generators/authentasaurus/views/templates/validations/resend_validation_email.html.erb +0 -6
- data/lib/generators/authentasaurus/views/templates/validations/validate.html.erb +0 -6
- data/lib/generators/authentasaurus/views/views_generator.rb +0 -76
- data/rdoc/apple-touch-icon.png +0 -0
- data/rdoc/classes/Authentasaurus.html +0 -65
- data/rdoc/classes/Authentasaurus/Ac.html +0 -72
- data/rdoc/classes/Authentasaurus/Ac/ActsAsOverrider.html +0 -104
- data/rdoc/classes/Authentasaurus/Ac/ActsAsOverrider/ClassMethods.html +0 -397
- data/rdoc/classes/Authentasaurus/Ac/Routing.html +0 -61
- data/rdoc/classes/Authentasaurus/Ac/Routing/InstanceMethods.html +0 -390
- data/rdoc/classes/Authentasaurus/Ar.html +0 -77
- data/rdoc/classes/Authentasaurus/Ar/ActsAsAuthenticatable.html +0 -107
- data/rdoc/classes/Authentasaurus/Ar/ActsAsAuthenticatable/ClassMethods.html +0 -168
- data/rdoc/classes/Authentasaurus/Ar/ActsAsAuthenticatable/InstanceMethods.html +0 -357
- data/rdoc/classes/Authentasaurus/Ar/ActsAsAuthenticatableValidatable.html +0 -109
- data/rdoc/classes/Authentasaurus/Ar/ActsAsAuthenticatableValidatable/ClassMethods.html +0 -113
- data/rdoc/classes/Authentasaurus/Ar/ActsAsAuthenticatableValidatable/InstanceMethods.html +0 -54
- data/rdoc/classes/Authentasaurus/Ar/ActsAsOverrider.html +0 -104
- data/rdoc/classes/Authentasaurus/Ar/ActsAsOverrider/ClassMethods.html +0 -320
- data/rdoc/classes/Authentasaurus/Ar/Authenticatable.html +0 -104
- data/rdoc/classes/Authentasaurus/Ar/Authenticatable/ClassMethods.html +0 -182
- data/rdoc/classes/Authentasaurus/Ar/Migrations.html +0 -63
- data/rdoc/classes/Authentasaurus/Ar/Migrations/Columns.html +0 -68
- data/rdoc/classes/Authentasaurus/Ar/Migrations/Columns/InstanceMethods.html +0 -106
- data/rdoc/classes/Authentasaurus/Ar/Migrations/Tables.html +0 -68
- data/rdoc/classes/Authentasaurus/Ar/Migrations/Tables/InstanceMethods.html +0 -703
- data/rdoc/classes/Authentasaurus/Arel.html +0 -65
- data/rdoc/classes/Authentasaurus/Arel/ActsAsAuthenticatable.html +0 -107
- data/rdoc/classes/Authentasaurus/Arel/ActsAsAuthenticatable/ClassMethods.html +0 -139
- data/rdoc/classes/Authentasaurus/Arel/ActsAsAuthenticatable/InstanceMethods.html +0 -113
- data/rdoc/classes/Authentasaurus/Arel/Authenticatable.html +0 -105
- data/rdoc/classes/Authentasaurus/Arel/Authenticatable/ClassMethods.html +0 -119
- data/rdoc/classes/Authentasaurus/Authorization.html +0 -230
- data/rdoc/classes/Authentasaurus/Authorization/ActionController.html +0 -63
- data/rdoc/classes/Authentasaurus/Authorization/ActionController/ClassMethods.html +0 -263
- data/rdoc/classes/Authentasaurus/Authorization/ActionController/InstanceMethods.html +0 -54
- data/rdoc/classes/Authentasaurus/Authorization/ActionView.html +0 -54
- data/rdoc/classes/Authentasaurus/Authorization/CommonInstanceMethods.html +0 -240
- data/rdoc/created.rid +0 -1
- data/rdoc/css/main.css +0 -278
- data/rdoc/css/panel.css +0 -383
- data/rdoc/css/reset.css +0 -53
- data/rdoc/favicon.ico +0 -0
- data/rdoc/files/README_rdoc.html +0 -366
- data/rdoc/files/TODO.html +0 -64
- data/rdoc/files/lib/authentasaurus/ac/acts_as_overrider_rb.html +0 -52
- data/rdoc/files/lib/authentasaurus/ac/routing_rb.html +0 -60
- data/rdoc/files/lib/authentasaurus/ar/acts_as_authenticatable_rb.html +0 -52
- data/rdoc/files/lib/authentasaurus/ar/acts_as_authenticatable_validatable_rb.html +0 -52
- data/rdoc/files/lib/authentasaurus/ar/acts_as_overrider_rb.html +0 -52
- data/rdoc/files/lib/authentasaurus/ar/authenticatable_rb.html +0 -52
- data/rdoc/files/lib/authentasaurus/ar/migrations_rb.html +0 -52
- data/rdoc/files/lib/authentasaurus/arel/acts_as_authenticatable_rb.html +0 -52
- data/rdoc/files/lib/authentasaurus/arel/authenticatable_rb.html +0 -72
- data/rdoc/files/lib/authentasaurus/authorization_rb.html +0 -208
- data/rdoc/i/arrows.png +0 -0
- data/rdoc/i/results_bg.png +0 -0
- data/rdoc/i/tree_bg.png +0 -0
- data/rdoc/index.html +0 -15
- data/rdoc/js/jquery-1.3.2.min.js +0 -19
- data/rdoc/js/jquery-effect.js +0 -593
- data/rdoc/js/main.js +0 -22
- data/rdoc/js/searchdoc.js +0 -628
- data/rdoc/panel/index.html +0 -71
- data/rdoc/panel/search_index.js +0 -1
- data/rdoc/panel/tree.js +0 -1
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
module Authentasaurus::Ac::Controllers
|
|
2
|
-
module ValidationsController
|
|
3
|
-
extend ActiveSupport::Concern
|
|
4
|
-
|
|
5
|
-
module ClassMethods
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
def validate
|
|
9
|
-
respond_to do |format|
|
|
10
|
-
format.html
|
|
11
|
-
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 }
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def resend_validation_email
|
|
29
|
-
respond_to do |format|
|
|
30
|
-
format.html
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def do_resend_validation_email
|
|
35
|
-
validation = Validation.find_by_email params[:email]
|
|
36
|
-
|
|
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 }
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
## Authentasaurus routes helper
|
|
2
|
-
module Authentasaurus::Ac
|
|
3
|
-
module Routing
|
|
4
|
-
extend ActiveSupport::Concern
|
|
5
|
-
|
|
6
|
-
# TODO: add documentation here
|
|
7
|
-
def authentasaurus_routes(*opts)
|
|
8
|
-
options = opts.extract_options!
|
|
9
|
-
|
|
10
|
-
# Authenticatable
|
|
11
|
-
authentasaurus_sessions options.dup
|
|
12
|
-
authentasaurus_users options.dup
|
|
13
|
-
# Recoverable
|
|
14
|
-
authentasaurus_recoverable
|
|
15
|
-
|
|
16
|
-
# Authorizable
|
|
17
|
-
if opts.include?(:authorization)
|
|
18
|
-
authentasaurus_authorizable options.dup
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
# Validatable
|
|
22
|
-
if opts.include?(:validation)
|
|
23
|
-
authentasaurus_validatable
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# Invitable
|
|
27
|
-
if opts.include?(:invitation)
|
|
28
|
-
authentasaurus_invitable options.dup
|
|
29
|
-
authentasaurus_invitable_public
|
|
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!
|
|
44
|
-
|
|
45
|
-
resources :users, options.dup
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
# TODO: add documentation here
|
|
49
|
-
def authentasaurus_authorizable(*opts)
|
|
50
|
-
options = opts.extract_options!
|
|
51
|
-
|
|
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!
|
|
68
|
-
|
|
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'
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
end
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
module Authentasaurus::Ar
|
|
2
|
-
module ActsAsAuthenticatable
|
|
3
|
-
extend ActiveSupport::Concern
|
|
4
|
-
|
|
5
|
-
module ClassMethods
|
|
6
|
-
case Authentasaurus::Configuration.instance.hashing
|
|
7
|
-
when "SHA2"
|
|
8
|
-
require 'digest/sha2'
|
|
9
|
-
when "SHA1"
|
|
10
|
-
require 'digest/sha1'
|
|
11
|
-
when "MD5"
|
|
12
|
-
require 'digest/md5'
|
|
13
|
-
else
|
|
14
|
-
require 'digest/sha2'
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
## Authenticates the username (or email) and password
|
|
19
|
-
def authenticate(username_or_email, password, remember = false)
|
|
20
|
-
user=self.find_by_username(username_or_email) || self.find_by_email(username_or_email)
|
|
21
|
-
if user
|
|
22
|
-
expected_password=encrypt_password(password, user.password_seed)
|
|
23
|
-
unless expected_password == user.hashed_password && user.active
|
|
24
|
-
user = nil
|
|
25
|
-
else
|
|
26
|
-
user.create_remember_me_token if remember
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
return user
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
## Encrypts the password using the given seed
|
|
33
|
-
def encrypt_password(password, password_seed)
|
|
34
|
-
pass_to_hash=password + "Securasaurus" + password_seed
|
|
35
|
-
|
|
36
|
-
case Authentasaurus::Configuration.instance.hashing
|
|
37
|
-
when "SHA2"
|
|
38
|
-
Digest::SHA2.hexdigest(pass_to_hash)
|
|
39
|
-
when "SHA1"
|
|
40
|
-
Digest::SHA1.hexdigest(pass_to_hash)
|
|
41
|
-
when "MD5"
|
|
42
|
-
Digest::MD5.hexdigest(pass_to_hash)
|
|
43
|
-
else
|
|
44
|
-
Digest::SHA2.hexdigest(pass_to_hash)
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def username=(username)
|
|
51
|
-
super(username.downcase)
|
|
52
|
-
end
|
|
53
|
-
|
|
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
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
end
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
module Authentasaurus::Ar
|
|
2
|
-
module ActsAsAuthenticatableValidatable
|
|
3
|
-
extend ActiveSupport::Concern
|
|
4
|
-
|
|
5
|
-
included do
|
|
6
|
-
include ActsAsAuthenticatable
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
module ClassMethods
|
|
10
|
-
## Authenticates the username (or email) and password
|
|
11
|
-
def authenticate(username_or_email, password, remember = false)
|
|
12
|
-
user=self.find_by_username(username_or_email) || self.find_by_email(username_or_email)
|
|
13
|
-
if user
|
|
14
|
-
expected_password=encrypt_password(password, user.password_seed)
|
|
15
|
-
unless expected_password == user.hashed_password && user.active && user.validation.nil?
|
|
16
|
-
user = nil
|
|
17
|
-
else
|
|
18
|
-
user.create_remember_me_token if remember
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
return user
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
|
|
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
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
module Authentasaurus::Ar
|
|
2
|
-
Dir[File.dirname(__FILE__) + '/models/*.rb'].each {|file| require file }
|
|
3
|
-
|
|
4
|
-
module ActsAsOverrider
|
|
5
|
-
extend ActiveSupport::Concern
|
|
6
|
-
|
|
7
|
-
module ClassMethods
|
|
8
|
-
def acts_as_area
|
|
9
|
-
unloadable
|
|
10
|
-
|
|
11
|
-
has_many :permissions, :dependent => :destroy
|
|
12
|
-
has_many :groups, :through => :permissions
|
|
13
|
-
|
|
14
|
-
validates_presence_of :name
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def acts_as_group
|
|
18
|
-
has_many :permissions, :dependent => :destroy
|
|
19
|
-
has_many :areas, :through => :permissions
|
|
20
|
-
|
|
21
|
-
validates_presence_of :name
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def acts_as_permission
|
|
25
|
-
unloadable
|
|
26
|
-
|
|
27
|
-
belongs_to :group
|
|
28
|
-
belongs_to :area
|
|
29
|
-
|
|
30
|
-
# Check that everything is there
|
|
31
|
-
validates_presence_of :group_id, :area_id
|
|
32
|
-
# Check foreign keys
|
|
33
|
-
validates_associated :group, :area
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def acts_as_recovery
|
|
37
|
-
include Authentasaurus::Ar::Models::Recovery
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def acts_as_user_invitation
|
|
41
|
-
include Authentasaurus::Ar::Models::UserInvitation
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def acts_as_validation
|
|
45
|
-
include Authentasaurus::Ar::Models::Validation
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
module Authentasaurus::Ar
|
|
2
|
-
module Authenticatable
|
|
3
|
-
extend ActiveSupport::Concern
|
|
4
|
-
|
|
5
|
-
module ClassMethods
|
|
6
|
-
def authenticatable(*args)
|
|
7
|
-
options = args.extract_options!
|
|
8
|
-
args = args.flatten
|
|
9
|
-
# Associations
|
|
10
|
-
belongs_to :group
|
|
11
|
-
has_many :permissions, :through => :group
|
|
12
|
-
# Validation
|
|
13
|
-
# basic attributes
|
|
14
|
-
validates_presence_of :username, :hashed_password, :password_seed, :email, :name
|
|
15
|
-
validates_uniqueness_of :username, :email
|
|
16
|
-
validates_format_of :username, :with => /^[a-z0-9]*([a-z0-9]{4})+[a-z0-9]*$/ # alpha-numeric only and at least 4 characters
|
|
17
|
-
validates_format_of :email, :with => %r{[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}}
|
|
18
|
-
# password validations
|
|
19
|
-
validates_confirmation_of :password, :on => :create, :if => Proc.new {|user| user.hashed_password.nil? || user.password_seed.nil? }
|
|
20
|
-
validates_presence_of :password, :on => :create, :if => Proc.new {|user| user.hashed_password.nil? || user.password_seed.nil? }
|
|
21
|
-
validates_length_of :password, :minimum => 6, :on => :create, :if => Proc.new {|user| user.hashed_password.nil? || user.password_seed.nil? }
|
|
22
|
-
# new password
|
|
23
|
-
validates_confirmation_of :new_password, :on => :update, :unless => :new_password_blank?
|
|
24
|
-
validates_length_of :new_password, :minimum => 6, :on => :update, :unless => :new_password_blank?
|
|
25
|
-
# format of password
|
|
26
|
-
if args.include?(:strong_password)
|
|
27
|
-
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? }
|
|
28
|
-
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? }
|
|
29
|
-
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? }
|
|
30
|
-
validates_format_of :password, :with => %r{[@$%!&]}, :on => :create, :message => :"authenticatable.symbol_password", :if => Proc.new {|user| user.hashed_password.nil? || user.password_seed.nil? }
|
|
31
|
-
# new password
|
|
32
|
-
validates_format_of :new_password, :with => %r{[a-z]}, :on => :update, :message => :"authenticatable.lower_case_password", :unless => :new_password_blank?
|
|
33
|
-
validates_format_of :new_password, :with => %r{[A-Z]}, :on => :update, :message => :"authenticatable.upper_case_password", :unless => :new_password_blank?
|
|
34
|
-
validates_format_of :new_password, :with => %r{[0-9]}, :on => :update, :message => :"authenticatable.digit_password", :unless => :new_password_blank?
|
|
35
|
-
validates_format_of :new_password, :with => %r{[@$%!&]}, :on => :update, :message => :"authenticatable.symbol_password", :unless => :new_password_blank?
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
# Accessors
|
|
39
|
-
attr_accessor :password_confirmation, :new_password_confirmation
|
|
40
|
-
|
|
41
|
-
# default data
|
|
42
|
-
class << self
|
|
43
|
-
attr_accessor :default_data
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
@default_data = {}
|
|
47
|
-
|
|
48
|
-
# dont delete admin
|
|
49
|
-
before_destroy :dont_delete_admin
|
|
50
|
-
|
|
51
|
-
#validation
|
|
52
|
-
if args.include?(:validatable)
|
|
53
|
-
has_one :validation, :as => :user
|
|
54
|
-
after_create :send_validation
|
|
55
|
-
# include authentication methods including validation
|
|
56
|
-
include ActsAsAuthenticatableValidatable
|
|
57
|
-
else
|
|
58
|
-
# include authentication methods
|
|
59
|
-
include ActsAsAuthenticatable
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
end
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
module Authentasaurus::Ar
|
|
2
|
-
module Migrations
|
|
3
|
-
# Extends ActiveRecord::ConnectionAdapters::SchemaStatements
|
|
4
|
-
module Tables
|
|
5
|
-
extend ActiveSupport::Concern
|
|
6
|
-
|
|
7
|
-
# creates all tables
|
|
8
|
-
def authentasaurus_tables
|
|
9
|
-
authentasaurus_user :authorizable
|
|
10
|
-
authentasaurus_group
|
|
11
|
-
authentasaurus_area
|
|
12
|
-
authentasaurus_permission
|
|
13
|
-
authentasaurus_validation
|
|
14
|
-
authentasaurus_user_invitation
|
|
15
|
-
authentasaurus_recovery
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
# creates users table
|
|
19
|
-
def authentasaurus_user(*opts)
|
|
20
|
-
create_table :users do |t|
|
|
21
|
-
t.string :username, :null => false
|
|
22
|
-
t.string :hashed_password, :null => false
|
|
23
|
-
t.string :password_seed, :null => false
|
|
24
|
-
t.string :name, :null => false
|
|
25
|
-
t.string :email, :null => false
|
|
26
|
-
t.boolean :active, :null => false, :default => false
|
|
27
|
-
t.string :remember_me_token
|
|
28
|
-
|
|
29
|
-
if opts.include?(:authorizable) || opts.include?("authorizable")
|
|
30
|
-
t.integer :group_id, :null => false
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
t.timestamps
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
# creates groups table
|
|
38
|
-
def authentasaurus_group
|
|
39
|
-
create_table :groups do |t|
|
|
40
|
-
t.string :name, :null => false
|
|
41
|
-
|
|
42
|
-
t.timestamps
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
# creates areas table
|
|
47
|
-
def authentasaurus_area
|
|
48
|
-
create_table :areas do |t|
|
|
49
|
-
t.string :name, :null => false
|
|
50
|
-
|
|
51
|
-
t.timestamps
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
# creates permissions table
|
|
56
|
-
def authentasaurus_permission
|
|
57
|
-
create_table :permissions do |t|
|
|
58
|
-
t.integer :group_id, :null => false
|
|
59
|
-
t.integer :area_id, :null => false
|
|
60
|
-
t.boolean :read, :null => false, :default => false
|
|
61
|
-
t.boolean :write, :null => false, :default => false
|
|
62
|
-
|
|
63
|
-
t.timestamps
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
# creates validations table
|
|
68
|
-
def authentasaurus_validation
|
|
69
|
-
create_table :validations do |t|
|
|
70
|
-
t.integer :user_id, :null => false
|
|
71
|
-
t.string :user_type, :null => false
|
|
72
|
-
t.string :email, :null => false
|
|
73
|
-
t.string :validation_code, :null => false
|
|
74
|
-
|
|
75
|
-
t.timestamps
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
# creates user_invitations table
|
|
80
|
-
def authentasaurus_user_invitation
|
|
81
|
-
create_table :user_invitations do |t|
|
|
82
|
-
t.string :token, :null => false, :unique => true
|
|
83
|
-
t.string :email
|
|
84
|
-
|
|
85
|
-
t.timestamps
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
# creates recoveries table
|
|
90
|
-
def authentasaurus_recovery
|
|
91
|
-
create_table :recoveries do |t|
|
|
92
|
-
t.integer :user_id, :null => false
|
|
93
|
-
t.string :email, :null => false
|
|
94
|
-
t.string :token, :null => false, :unique => true
|
|
95
|
-
|
|
96
|
-
t.timestamps
|
|
97
|
-
end
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
# drops all tables
|
|
101
|
-
def authentasaurus_drop_tables
|
|
102
|
-
authentasaurus_drop_user
|
|
103
|
-
authentasaurus_drop_group
|
|
104
|
-
authentasaurus_drop_area
|
|
105
|
-
authentasaurus_drop_permission
|
|
106
|
-
authentasaurus_drop_validation
|
|
107
|
-
authentasaurus_drop_user_invitation
|
|
108
|
-
authentasaurus_drop_recovery
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
# drops users table
|
|
112
|
-
def authentasaurus_drop_user
|
|
113
|
-
drop_table :users
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
# drops groups table
|
|
117
|
-
def authentasaurus_drop_group
|
|
118
|
-
drop_table :groups
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
# drops areas table
|
|
122
|
-
def authentasaurus_drop_area
|
|
123
|
-
drop_table :areas
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
# drops permissions table
|
|
127
|
-
def authentasaurus_drop_permission
|
|
128
|
-
drop_table :permissions
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
# drops validations table
|
|
132
|
-
def authentasaurus_drop_validation
|
|
133
|
-
drop_table :validations
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
# drops user_invitations table
|
|
137
|
-
def authentasaurus_drop_user_invitation
|
|
138
|
-
drop_table :user_invitations
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
# drops recoveries table
|
|
142
|
-
def authentasaurus_drop_recovery
|
|
143
|
-
drop_table :recoveries
|
|
144
|
-
end
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
# Extends ActiveRecord::ConnectionAdapters::TableDefinition
|
|
148
|
-
module Columns
|
|
149
|
-
extend ActiveSupport::Concern
|
|
150
|
-
|
|
151
|
-
def user(*opts)
|
|
152
|
-
string :username, :null => false
|
|
153
|
-
string :hashed_password, :null => false
|
|
154
|
-
string :password_seed, :null => false
|
|
155
|
-
string :name, :null => false
|
|
156
|
-
string :email, :null => false
|
|
157
|
-
string :remember_me_token
|
|
158
|
-
boolean :active, :null => false, :default => false
|
|
159
|
-
if opts.include?(:authorizable)
|
|
160
|
-
integer :group_id, :null => false
|
|
161
|
-
end
|
|
162
|
-
end
|
|
163
|
-
end
|
|
164
|
-
end
|
|
165
|
-
end
|