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