easy_auth-password 0.0.6 → 0.1.0
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.
- checksums.yaml +7 -0
- data/README.md +11 -6
- data/Rakefile +2 -1
- data/app/views/password_reset/edit.html.erb +1 -1
- data/app/views/password_reset/new.html.erb +2 -2
- data/app/views/sessions/new.html.erb +2 -2
- data/config/locales/en.yml +2 -6
- data/db/migrate/20120227014024_create_easy_auth_password.rb +6 -0
- data/lib/easy_auth/controllers/password_reset.rb +40 -26
- data/lib/easy_auth/mailers/password_reset.rb +3 -3
- data/lib/easy_auth/models/identities/password.rb +55 -20
- data/lib/easy_auth/password/controllers/sessions.rb +24 -3
- data/lib/easy_auth/password/helpers/easy_auth.rb +30 -0
- data/lib/easy_auth/password/helpers.rb +4 -0
- data/lib/easy_auth/password/models/account.rb +56 -16
- data/lib/easy_auth/password/models/identity.rb +33 -0
- data/lib/easy_auth/password/models.rb +1 -0
- data/lib/easy_auth/password/routes.rb +11 -6
- data/lib/easy_auth/password/version.rb +1 -1
- data/lib/easy_auth/password.rb +13 -2
- metadata +52 -64
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e419b42c6e04427284b63a41be18698e6cf6b0e9
|
4
|
+
data.tar.gz: aa272d6e85671d33233c5f5b7d922f01d45836fe
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 03743c3e90ed4ffd1b1a826a211628852c8d689febad90a36085d5d98286c8b670bbe758910beb5e1e2d5d757aaa6f121071c60fbfcfbbac2e31c679d04f2251
|
7
|
+
data.tar.gz: a095feb21ca9f6eb401050ddf3b1f7fdde22621c34fdb87df5e241e81ad249c23f4b4714d15e5485771976ae0084ced88a6bd45c1fc36413efd2b9831ab67d16
|
data/README.md
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# EasyAuth-Password #
|
2
2
|
|
3
|
-
[](http://travis-ci.org/dockyard/easy_auth-password)
|
4
4
|
[](https://gemnasium.com/dockyard/easy_auth-password)
|
5
5
|
[](https://codeclimate.com/github/dockyard/easy_auth-password)
|
6
6
|
|
7
|
-
|
7
|
+
Password support for [EasyAuth](https://github.com/dockyard/easy_auth)
|
8
8
|
|
9
9
|
## Installation ##
|
10
10
|
|
@@ -14,13 +14,18 @@ In your Gemfile add the following:
|
|
14
14
|
gem 'easy_auth-password'
|
15
15
|
```
|
16
16
|
|
17
|
-
|
17
|
+
Then follow the general installation instructions for
|
18
|
+
[EasyAuth](https://github.com/dockyard/easy_auth#installation)
|
18
19
|
|
19
|
-
|
20
|
-
|
20
|
+
Then add the migration:
|
21
|
+
|
22
|
+
```bash
|
23
|
+
rake easy_auth_password:install:migrations
|
21
24
|
```
|
22
25
|
|
23
|
-
|
26
|
+
## Usage ##
|
27
|
+
|
28
|
+
`EasyAuth-Password` will handle most of what you want automatically.
|
24
29
|
|
25
30
|
## Authors ##
|
26
31
|
|
data/Rakefile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'bundler/setup'
|
2
2
|
require 'rspec/core/rake_task'
|
3
|
-
|
3
|
+
require 'byebug'
|
4
4
|
|
5
5
|
RSpec::Core::RakeTask.new('default') do |t|
|
6
6
|
t.pattern = FileList['spec/**/*_spec.rb']
|
@@ -8,3 +8,4 @@ end
|
|
8
8
|
|
9
9
|
APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
|
10
10
|
load 'rails/tasks/engine.rake'
|
11
|
+
Bundler::GemHelper.install_tasks
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<%= form_for @
|
1
|
+
<%= form_for @account, :url => edit_password_reset_path(:username => params[:username], :reset_token => params[:reset_token]) do |f| %>
|
2
2
|
<p>
|
3
3
|
<%= f.label :password %>
|
4
4
|
<%= f.text_field :password %>
|
data/config/locales/en.yml
CHANGED
@@ -1,14 +1,10 @@
|
|
1
1
|
en:
|
2
2
|
easy_auth:
|
3
|
-
sessions:
|
4
|
-
create:
|
5
|
-
notice: 'You have been signed in.'
|
6
|
-
error: 'Could not sign you in. Please check your credentials.'
|
7
|
-
delete:
|
8
|
-
notice: 'You have been signed out.'
|
9
3
|
password_reset:
|
10
4
|
create:
|
11
5
|
notice: 'Please check your email for your password reset link.'
|
12
6
|
update:
|
13
7
|
notice: 'Your password has been updated.'
|
14
8
|
error: 'There was an issue updating your password.'
|
9
|
+
edit:
|
10
|
+
error: 'Could not authenticate you from your reset token.'
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module EasyAuth::Controllers::PasswordReset
|
2
2
|
def self.included(base)
|
3
3
|
base.instance_eval do
|
4
|
-
before_filter :
|
4
|
+
before_filter :find_account_from_reset_token, :only => [:edit, :update]
|
5
5
|
end
|
6
6
|
end
|
7
7
|
|
@@ -10,48 +10,62 @@ module EasyAuth::Controllers::PasswordReset
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def create
|
13
|
-
if @identity = EasyAuth.find_identity_model(params).where(:
|
14
|
-
@identity.generate_reset_token!
|
15
|
-
PasswordResetMailer.reset(@identity.id).deliver
|
13
|
+
if @identity = EasyAuth.find_identity_model(params).where(:uid => params[:identities_password][:uid]).first
|
14
|
+
unencrypted_reset_token = @identity.generate_reset_token!
|
15
|
+
PasswordResetMailer.reset(@identity.id, unencrypted_reset_token).deliver
|
16
|
+
after_successful_attempted_password_reset
|
16
17
|
else
|
17
|
-
@identity = EasyAuth.find_identity_model(params).new(params[:identities_password])
|
18
|
+
@identity = EasyAuth.find_identity_model(params).new(uid: params[:identities_password][:uid])
|
19
|
+
after_failed_attempted_password_reset
|
18
20
|
end
|
19
|
-
|
20
|
-
flash.now[:notice] = I18n.t('easy_auth.password_reset.create.notice')
|
21
|
-
render :new
|
22
21
|
end
|
23
22
|
|
24
23
|
def update
|
25
|
-
|
26
|
-
|
24
|
+
@identity = @account.password_identities.first
|
25
|
+
|
26
|
+
if @account.update_attributes(account_params)
|
27
|
+
after_successful_password_reset
|
27
28
|
else
|
28
|
-
after_failed_password_reset
|
29
|
+
after_failed_password_reset
|
29
30
|
end
|
30
31
|
end
|
31
32
|
|
32
|
-
|
33
|
+
def after_successful_password_reset
|
34
|
+
session[:identity_id] = @identity.id
|
35
|
+
@identity.update_column(:reset_token_digest, nil)
|
36
|
+
redirect_to after_successful_password_reset_url, :notice => I18n.t('easy_auth.password_reset.update.notice')
|
37
|
+
end
|
38
|
+
|
39
|
+
def after_successful_password_reset_url
|
40
|
+
@identity.account
|
41
|
+
end
|
33
42
|
|
34
|
-
def
|
35
|
-
|
43
|
+
def after_failed_password_reset
|
44
|
+
flash.now[:error] = I18n.t('easy_auth.password_reset.update.error')
|
45
|
+
render :edit
|
36
46
|
end
|
37
47
|
|
38
|
-
def
|
39
|
-
|
40
|
-
|
48
|
+
def after_successful_attempted_password_reset
|
49
|
+
flash.now[:notice] = I18n.t('easy_auth.password_reset.create.notice')
|
50
|
+
render :new
|
41
51
|
end
|
42
52
|
|
43
|
-
def
|
44
|
-
|
45
|
-
identity.update_column(:reset_token, nil)
|
46
|
-
redirect_to after_successful_password_reset_url(identity), :notice => I18n.t('easy_auth.password_reset.update.notice')
|
53
|
+
def after_failed_attempted_password_reset
|
54
|
+
after_successful_attempted_password_reset
|
47
55
|
end
|
48
56
|
|
49
|
-
|
50
|
-
|
57
|
+
private
|
58
|
+
|
59
|
+
def account_params
|
60
|
+
params.require(ActiveModel::Naming.param_key(@account)).permit(:password, :password_confirmation)
|
51
61
|
end
|
52
62
|
|
53
|
-
def
|
54
|
-
|
55
|
-
|
63
|
+
def find_account_from_reset_token
|
64
|
+
if @account = EasyAuth.find_identity_model(params).authenticate(self, :reset_token).try(:account)
|
65
|
+
@account.password_reset = true
|
66
|
+
else
|
67
|
+
flash[:error] = I18n.t('easy_auth.password_reset.edit.error')
|
68
|
+
redirect_to root_path
|
69
|
+
end
|
56
70
|
end
|
57
71
|
end
|
@@ -3,9 +3,9 @@ module EasyAuth::Mailers::PasswordReset
|
|
3
3
|
base.clear_action_methods!
|
4
4
|
end
|
5
5
|
|
6
|
-
def reset(id)
|
7
|
-
@identity = EasyAuth.
|
8
|
-
@url =
|
6
|
+
def reset(id, unencrypted_reset_token)
|
7
|
+
@identity = EasyAuth.find_identity_model(:identity => :password).find(id)
|
8
|
+
@url = edit_password_reset_url(:id => id, :reset_token => unencrypted_reset_token)
|
9
9
|
mail :to => @identity.account.email, :subject => 'Password reset'
|
10
10
|
end
|
11
11
|
end
|
@@ -1,34 +1,69 @@
|
|
1
|
+
require 'scrypt'
|
2
|
+
|
1
3
|
module EasyAuth::Models::Identities::Password
|
2
4
|
include EasyAuth::TokenGenerator
|
5
|
+
extend ActiveSupport::Concern
|
3
6
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
+
included do
|
8
|
+
# Attributes
|
9
|
+
attr_reader :password
|
10
|
+
alias_attribute :password_digest, :token
|
7
11
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
+
# Validations
|
13
|
+
_validators[:uid].delete_at(_validators[:uid].index { |v| v.instance_of?(ActiveRecord::Validations::UniquenessValidator) })
|
14
|
+
_validators[:token].delete_at(_validators[:token].index { |v| v.instance_of?(ActiveRecord::Validations::PresenceValidator) })
|
15
|
+
validates :uid, uniqueness: { case_sensitive: false }
|
16
|
+
validates :password_digest, presence: true
|
17
|
+
end
|
12
18
|
|
13
|
-
|
14
|
-
|
19
|
+
module ClassMethods
|
20
|
+
def authenticate(controller, token_name = :password)
|
21
|
+
attributes = send("attributes_for_#{token_name}", controller)
|
22
|
+
return nil if attributes.nil?
|
23
|
+
where(send("conditions_for_#{token_name}", attributes)).first.try(:authenticate, attributes[token_name], token_name)
|
24
|
+
end
|
15
25
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
26
|
+
private
|
27
|
+
|
28
|
+
def attributes_for_password(controller)
|
29
|
+
controller.params[:identities_password]
|
30
|
+
end
|
31
|
+
|
32
|
+
def attributes_for_reset_token(controller)
|
33
|
+
controller.params
|
34
|
+
end
|
35
|
+
|
36
|
+
def attributes_for_remember_token(cookies)
|
37
|
+
{ :id => cookies[:remember_id], :remember_token => cookies[:remember_token] }
|
38
|
+
end
|
20
39
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
40
|
+
def conditions_for_password(attributes)
|
41
|
+
arel_table[:uid].matches(attributes[:uid].try(&:strip))
|
42
|
+
end
|
43
|
+
|
44
|
+
def conditions_for_reset_token(attributes)
|
45
|
+
{ :id => attributes[:id] }
|
46
|
+
end
|
47
|
+
|
48
|
+
def conditions_for_remember_token(attributes)
|
49
|
+
{ :id => attributes[:id] }
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def authenticate(unencrypted_token, token_name = :password)
|
54
|
+
SCrypt::Password.new(send("#{token_name}_digest")) == unencrypted_token && self
|
55
|
+
end
|
26
56
|
|
57
|
+
def password=(unencrypted_password)
|
58
|
+
@password = unencrypted_password
|
59
|
+
unless unencrypted_password.blank?
|
60
|
+
self.password_digest = SCrypt::Password.create(unencrypted_password)
|
27
61
|
end
|
28
62
|
end
|
29
63
|
|
30
64
|
def generate_reset_token!
|
31
|
-
|
32
|
-
|
65
|
+
unencrypted_token = _generate_token(:reset_token)
|
66
|
+
update_column(:reset_token_digest, SCrypt::Password.create(unencrypted_token))
|
67
|
+
unencrypted_token
|
33
68
|
end
|
34
69
|
end
|
@@ -1,7 +1,28 @@
|
|
1
1
|
module EasyAuth::Password::Controllers::Sessions
|
2
|
-
extend
|
2
|
+
extend ActiveSupport::Concern
|
3
3
|
|
4
|
-
|
5
|
-
before_filter :no_authentication, :only => :new, :if => Proc.new { params[:identity] ==
|
4
|
+
prepended do
|
5
|
+
before_filter :no_authentication, :only => :new, :if => Proc.new { params[:identity] == 'password' }
|
6
|
+
|
7
|
+
def create
|
8
|
+
super
|
9
|
+
|
10
|
+
if @identity.persisted?
|
11
|
+
if identity_attributes = params[ActiveModel::Naming.param_key(EasyAuth.find_identity_model(params).new)]
|
12
|
+
@identity.remember = identity_attributes[:remember]
|
13
|
+
end
|
14
|
+
|
15
|
+
if @identity.remember
|
16
|
+
cookies[:remember_id] = { :value => @identity.id, :expires => @identity.remember_time.from_now }
|
17
|
+
cookies[:remember_token] = { :value => @identity.generate_remember_token_digest!, :expires => @identity.remember_time.from_now }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def destroy
|
23
|
+
super
|
24
|
+
cookies.delete(:remember_id)
|
25
|
+
cookies.delete(:remember_token)
|
26
|
+
end
|
6
27
|
end
|
7
28
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module EasyAuth::Password::Helpers::EasyAuth
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
prepended do
|
5
|
+
def current_account
|
6
|
+
super
|
7
|
+
|
8
|
+
if @current_account.blank?
|
9
|
+
if cookies[:remember_id] && cookies[:remember_token]
|
10
|
+
begin
|
11
|
+
@current_account = EasyAuth.find_identity_model(:identity => :password).authenticate(cookies, :remember_token).account
|
12
|
+
rescue => e
|
13
|
+
@current_account = nil
|
14
|
+
delete_session_data
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
@current_account
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def delete_session_data
|
25
|
+
super
|
26
|
+
cookies.delete(:remember_id)
|
27
|
+
cookies.delete(:remember_token)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -1,38 +1,78 @@
|
|
1
1
|
module EasyAuth::Password::Models::Account
|
2
|
-
extend
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
class NoIdentityUIDError < StandardError; end
|
3
4
|
|
4
|
-
|
5
|
+
prepended do
|
5
6
|
# Attributes
|
6
|
-
attr_accessor
|
7
|
-
attr_accessible :password, :password_confirmation
|
7
|
+
attr_accessor :password, :password_reset
|
8
8
|
|
9
9
|
# Validations
|
10
|
-
validates :password, :presence => { :
|
11
|
-
|
10
|
+
validates :password, :presence => { :if => :password_reset }, :confirmation => true
|
11
|
+
identity_uid_attributes.each do |attribute|
|
12
|
+
validates attribute, :presence => true, :if => :run_password_identity_validations?
|
13
|
+
end
|
12
14
|
|
13
15
|
# Callbacks
|
14
|
-
|
15
|
-
before_update :update_password_identity, :if => :run_password_identity_validations?
|
16
|
+
before_save :update_password_identities, :if => :can_update_password_identities?
|
16
17
|
|
17
18
|
# Associations
|
18
|
-
|
19
|
+
has_many :password_identities, :class_name => 'Identities::Password', :as => :account
|
20
|
+
end
|
21
|
+
|
22
|
+
module ClassMethods
|
23
|
+
# Will attempt to find the uid attributes of :username and :email
|
24
|
+
# Will return an array of any defined on the model
|
25
|
+
# If neither are defined an exception will be raised
|
26
|
+
#
|
27
|
+
# Override this method with an array of symbols for custom attributes
|
28
|
+
#
|
29
|
+
# @return [Symbol]
|
30
|
+
def identity_uid_attributes
|
31
|
+
if table_exists?
|
32
|
+
attributes = (['email', 'username'] & column_names).map(&:to_sym)
|
33
|
+
else
|
34
|
+
attributes = []
|
35
|
+
end
|
36
|
+
|
37
|
+
if attributes.empty?
|
38
|
+
raise EasyAuth::Password::Models::Account::NoIdentityUIDError, 'your model must have either a #username or #email attribute. Or you must override the .identity_uid_attribute class method'
|
39
|
+
else
|
40
|
+
attributes
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def identity_uid_attributes
|
46
|
+
self.class.identity_uid_attributes
|
19
47
|
end
|
20
48
|
|
21
49
|
def run_password_identity_validations?
|
22
|
-
|
50
|
+
self.password.present? || self.password_identities.present?
|
23
51
|
end
|
24
52
|
|
25
53
|
private
|
26
54
|
|
27
|
-
def
|
28
|
-
|
55
|
+
def can_update_password_identities?
|
56
|
+
password.present? || identity_uid_attributes.detect { |attribute| send("#{attribute}_changed?") && password_identities.where(:uid => send("#{attribute}_was")).first }
|
29
57
|
end
|
30
58
|
|
31
|
-
def
|
32
|
-
|
59
|
+
def update_password_identities
|
60
|
+
identity_uid_attributes.each do |attribute|
|
61
|
+
if send("#{attribute}_changed?")
|
62
|
+
identity = password_identities.find { |identity| identity.uid == send("#{attribute}_was") }
|
63
|
+
else
|
64
|
+
identity = password_identities.find { |identity| identity.uid == send(attribute) }
|
65
|
+
end
|
66
|
+
|
67
|
+
if identity
|
68
|
+
identity.update_attributes(password_identity_attributes(attribute))
|
69
|
+
else
|
70
|
+
self.password_identities.build(password_identity_attributes(attribute))
|
71
|
+
end
|
72
|
+
end
|
33
73
|
end
|
34
74
|
|
35
|
-
def password_identity_attributes
|
36
|
-
{ :
|
75
|
+
def password_identity_attributes(attribute)
|
76
|
+
{ :uid => send(attribute), :password => self.password }
|
37
77
|
end
|
38
78
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module EasyAuth::Password::Models::Identity
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
# Getter for the remember flag
|
5
|
+
def remember
|
6
|
+
@remember
|
7
|
+
end
|
8
|
+
|
9
|
+
# Setter for the remember flag
|
10
|
+
#
|
11
|
+
# @param [Boolean] value
|
12
|
+
def remember=(value)
|
13
|
+
@remember = ::ActiveRecord::ConnectionAdapters::Column.value_to_boolean(value)
|
14
|
+
end
|
15
|
+
|
16
|
+
# Generates a new remember token and updates it on the identity record
|
17
|
+
#
|
18
|
+
# @return [String]
|
19
|
+
def generate_remember_token_digest!
|
20
|
+
remember_token = _generate_token(:remember)
|
21
|
+
update_column(:remember_token_digest, SCrypt::Password.create(remember_token))
|
22
|
+
remember_token
|
23
|
+
end
|
24
|
+
|
25
|
+
# The time used for remembering how long to stay signed in
|
26
|
+
#
|
27
|
+
# Defaults to 1 year, override in the model to set your own custom remember time
|
28
|
+
#
|
29
|
+
# @return [DateTime]
|
30
|
+
def remember_time
|
31
|
+
1.year
|
32
|
+
end
|
33
|
+
end
|
@@ -1,11 +1,16 @@
|
|
1
1
|
module EasyAuth::Password::Routes
|
2
2
|
def easy_auth_password_routes
|
3
|
-
get '/sign_in' => 'sessions#new',
|
4
|
-
post '/sign_in' => 'sessions#create',
|
3
|
+
get '/sign_in' => 'sessions#new', :defaults => { :identity => 'password' }, :as => :sign_in
|
4
|
+
post '/sign_in' => 'sessions#create', :defaults => { :identity => 'password' }
|
5
5
|
|
6
|
-
get '/password_reset' => 'password_reset#new',
|
7
|
-
post '/password_reset' => 'password_reset#create',
|
8
|
-
|
9
|
-
|
6
|
+
get '/password_reset' => 'password_reset#new', :defaults => { :identity => 'password' }, :as => :password_reset
|
7
|
+
post '/password_reset' => 'password_reset#create', :defaults => { :identity => 'password' }
|
8
|
+
|
9
|
+
get '/password_reset/:id/:reset_token' => 'password_reset#edit', :defaults => { :identity => 'password' }, :as => :edit_password_reset
|
10
|
+
if Rails.version >= '4.0.0'
|
11
|
+
patch '/password_reset/:id/:reset_token' => 'password_reset#update', :defaults => { :identity => 'password' }
|
12
|
+
else
|
13
|
+
put '/password_reset/:id/:reset_token' => 'password_reset#update', :defaults => { :identity => 'password' }
|
14
|
+
end
|
10
15
|
end
|
11
16
|
end
|
data/lib/easy_auth/password.rb
CHANGED
@@ -8,6 +8,7 @@ module EasyAuth
|
|
8
8
|
module Password
|
9
9
|
extend ActiveSupport::Autoload
|
10
10
|
autoload :Controllers
|
11
|
+
autoload :Helpers
|
11
12
|
autoload :Models
|
12
13
|
end
|
13
14
|
|
@@ -15,7 +16,13 @@ module EasyAuth
|
|
15
16
|
autoload :PasswordReset
|
16
17
|
|
17
18
|
module Sessions
|
18
|
-
|
19
|
+
prepend EasyAuth::Password::Controllers::Sessions
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
module Helpers
|
24
|
+
module EasyAuth
|
25
|
+
prepend ::EasyAuth::Password::Helpers::EasyAuth
|
19
26
|
end
|
20
27
|
end
|
21
28
|
|
@@ -25,7 +32,11 @@ module EasyAuth
|
|
25
32
|
|
26
33
|
module Models
|
27
34
|
module Account
|
28
|
-
|
35
|
+
prepend EasyAuth::Password::Models::Account
|
36
|
+
end
|
37
|
+
|
38
|
+
module Identity
|
39
|
+
prepend EasyAuth::Password::Models::Identity
|
29
40
|
end
|
30
41
|
|
31
42
|
module Identities
|
metadata
CHANGED
@@ -1,132 +1,130 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: easy_auth-password
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Brian Cardarella
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-03-11 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: easy_auth
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.
|
19
|
+
version: 0.3.0
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.
|
26
|
+
version: 0.3.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: scrypt
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
30
41
|
- !ruby/object:Gem::Dependency
|
31
42
|
name: sqlite3
|
32
43
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
44
|
requirements:
|
35
|
-
- -
|
45
|
+
- - '>='
|
36
46
|
- !ruby/object:Gem::Version
|
37
47
|
version: '0'
|
38
48
|
type: :development
|
39
49
|
prerelease: false
|
40
50
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
51
|
requirements:
|
43
|
-
- -
|
52
|
+
- - '>='
|
44
53
|
- !ruby/object:Gem::Version
|
45
54
|
version: '0'
|
46
55
|
- !ruby/object:Gem::Dependency
|
47
56
|
name: rspec-rails
|
48
57
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
58
|
requirements:
|
51
|
-
- -
|
59
|
+
- - ~>
|
52
60
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
61
|
+
version: 2.11.4
|
54
62
|
type: :development
|
55
63
|
prerelease: false
|
56
64
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
65
|
requirements:
|
59
|
-
- -
|
66
|
+
- - ~>
|
60
67
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
68
|
+
version: 2.11.4
|
62
69
|
- !ruby/object:Gem::Dependency
|
63
70
|
name: capybara
|
64
71
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
72
|
requirements:
|
67
|
-
- -
|
73
|
+
- - ~>
|
68
74
|
- !ruby/object:Gem::Version
|
69
|
-
version: '
|
75
|
+
version: '2.1'
|
70
76
|
type: :development
|
71
77
|
prerelease: false
|
72
78
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
79
|
requirements:
|
75
|
-
- -
|
80
|
+
- - ~>
|
76
81
|
- !ruby/object:Gem::Version
|
77
|
-
version: '
|
82
|
+
version: '2.1'
|
78
83
|
- !ruby/object:Gem::Dependency
|
79
84
|
name: capybara-email
|
80
85
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
86
|
requirements:
|
83
|
-
- -
|
87
|
+
- - ~>
|
84
88
|
- !ruby/object:Gem::Version
|
85
|
-
version:
|
89
|
+
version: 2.1.2
|
86
90
|
type: :development
|
87
91
|
prerelease: false
|
88
92
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
93
|
requirements:
|
91
|
-
- -
|
94
|
+
- - ~>
|
92
95
|
- !ruby/object:Gem::Version
|
93
|
-
version:
|
96
|
+
version: 2.1.2
|
94
97
|
- !ruby/object:Gem::Dependency
|
95
98
|
name: database_cleaner
|
96
99
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
100
|
requirements:
|
99
|
-
- -
|
101
|
+
- - '>='
|
100
102
|
- !ruby/object:Gem::Version
|
101
103
|
version: '0'
|
102
104
|
type: :development
|
103
105
|
prerelease: false
|
104
106
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
107
|
requirements:
|
107
|
-
- -
|
108
|
+
- - '>='
|
108
109
|
- !ruby/object:Gem::Version
|
109
110
|
version: '0'
|
110
111
|
- !ruby/object:Gem::Dependency
|
111
112
|
name: valid_attribute
|
112
113
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
114
|
requirements:
|
115
|
-
- -
|
115
|
+
- - '>='
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: '0'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
121
|
requirements:
|
123
|
-
- -
|
122
|
+
- - '>='
|
124
123
|
- !ruby/object:Gem::Version
|
125
124
|
version: '0'
|
126
125
|
- !ruby/object:Gem::Dependency
|
127
126
|
name: factory_girl_rails
|
128
127
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
128
|
requirements:
|
131
129
|
- - ~>
|
132
130
|
- !ruby/object:Gem::Version
|
@@ -134,7 +132,6 @@ dependencies:
|
|
134
132
|
type: :development
|
135
133
|
prerelease: false
|
136
134
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
135
|
requirements:
|
139
136
|
- - ~>
|
140
137
|
- !ruby/object:Gem::Version
|
@@ -142,7 +139,6 @@ dependencies:
|
|
142
139
|
- !ruby/object:Gem::Dependency
|
143
140
|
name: factory_girl
|
144
141
|
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
142
|
requirements:
|
147
143
|
- - ~>
|
148
144
|
- !ruby/object:Gem::Version
|
@@ -150,41 +146,36 @@ dependencies:
|
|
150
146
|
type: :development
|
151
147
|
prerelease: false
|
152
148
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
149
|
requirements:
|
155
150
|
- - ~>
|
156
151
|
- !ruby/object:Gem::Version
|
157
152
|
version: 2.6.0
|
158
153
|
- !ruby/object:Gem::Dependency
|
159
|
-
name:
|
154
|
+
name: mocha
|
160
155
|
requirement: !ruby/object:Gem::Requirement
|
161
|
-
none: false
|
162
156
|
requirements:
|
163
|
-
- -
|
157
|
+
- - ~>
|
164
158
|
- !ruby/object:Gem::Version
|
165
|
-
version:
|
159
|
+
version: 0.10.5
|
166
160
|
type: :development
|
167
161
|
prerelease: false
|
168
162
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
-
none: false
|
170
163
|
requirements:
|
171
|
-
- -
|
164
|
+
- - ~>
|
172
165
|
- !ruby/object:Gem::Version
|
173
|
-
version:
|
166
|
+
version: 0.10.5
|
174
167
|
- !ruby/object:Gem::Dependency
|
175
168
|
name: launchy
|
176
169
|
requirement: !ruby/object:Gem::Requirement
|
177
|
-
none: false
|
178
170
|
requirements:
|
179
|
-
- -
|
171
|
+
- - '>='
|
180
172
|
- !ruby/object:Gem::Version
|
181
173
|
version: '0'
|
182
174
|
type: :development
|
183
175
|
prerelease: false
|
184
176
|
version_requirements: !ruby/object:Gem::Requirement
|
185
|
-
none: false
|
186
177
|
requirements:
|
187
|
-
- -
|
178
|
+
- - '>='
|
188
179
|
- !ruby/object:Gem::Version
|
189
180
|
version: '0'
|
190
181
|
description: EasyAuth-Password
|
@@ -205,13 +196,17 @@ files:
|
|
205
196
|
- app/views/sessions/new.html.erb
|
206
197
|
- config/locales/en.yml
|
207
198
|
- config/routes.rb
|
199
|
+
- db/migrate/20120227014024_create_easy_auth_password.rb
|
208
200
|
- lib/easy_auth/controllers/password_reset.rb
|
209
201
|
- lib/easy_auth/mailers/password_reset.rb
|
210
202
|
- lib/easy_auth/models/identities/password.rb
|
211
203
|
- lib/easy_auth/password/controllers/sessions.rb
|
212
204
|
- lib/easy_auth/password/controllers.rb
|
213
205
|
- lib/easy_auth/password/engine.rb
|
206
|
+
- lib/easy_auth/password/helpers/easy_auth.rb
|
207
|
+
- lib/easy_auth/password/helpers.rb
|
214
208
|
- lib/easy_auth/password/models/account.rb
|
209
|
+
- lib/easy_auth/password/models/identity.rb
|
215
210
|
- lib/easy_auth/password/models.rb
|
216
211
|
- lib/easy_auth/password/routes.rb
|
217
212
|
- lib/easy_auth/password/version.rb
|
@@ -221,32 +216,25 @@ files:
|
|
221
216
|
- README.md
|
222
217
|
homepage: https://github.com/dockyard/easy_auth-password
|
223
218
|
licenses: []
|
219
|
+
metadata: {}
|
224
220
|
post_install_message:
|
225
221
|
rdoc_options: []
|
226
222
|
require_paths:
|
227
223
|
- lib
|
228
224
|
required_ruby_version: !ruby/object:Gem::Requirement
|
229
|
-
none: false
|
230
225
|
requirements:
|
231
|
-
- -
|
226
|
+
- - '>='
|
232
227
|
- !ruby/object:Gem::Version
|
233
228
|
version: '0'
|
234
|
-
segments:
|
235
|
-
- 0
|
236
|
-
hash: -4240566048460302950
|
237
229
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
238
|
-
none: false
|
239
230
|
requirements:
|
240
|
-
- -
|
231
|
+
- - '>='
|
241
232
|
- !ruby/object:Gem::Version
|
242
233
|
version: '0'
|
243
|
-
segments:
|
244
|
-
- 0
|
245
|
-
hash: -4240566048460302950
|
246
234
|
requirements: []
|
247
235
|
rubyforge_project:
|
248
|
-
rubygems_version:
|
236
|
+
rubygems_version: 2.0.3
|
249
237
|
signing_key:
|
250
|
-
specification_version:
|
238
|
+
specification_version: 4
|
251
239
|
summary: EasyAuth-Password
|
252
240
|
test_files: []
|