easy_auth 0.0.1.alpha.0 → 0.0.1.alpha.1
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/README.md +49 -0
- data/app/controllers/authenticated_controller.rb +3 -0
- data/app/controllers/password_reset_controller.rb +3 -0
- data/app/controllers/sessions_controller.rb +3 -0
- data/app/mailers/password_reset_mailer.rb +4 -0
- data/app/mixins/easy_auth/controllers/authenticated.rb +14 -0
- data/app/mixins/easy_auth/controllers/password_reset.rb +55 -0
- data/app/mixins/easy_auth/controllers/sessions.rb +39 -0
- data/app/mixins/easy_auth/helpers.rb +34 -0
- data/app/mixins/easy_auth/mailers/password_reset.rb +11 -0
- data/app/mixins/easy_auth/models/account.rb +45 -0
- data/app/mixins/easy_auth/models/identity.rb +35 -0
- data/app/models/identity.rb +3 -0
- data/app/views/password_reset/edit.html.erb +7 -0
- data/app/views/password_reset/new.html.erb +5 -0
- data/app/views/password_reset_mailer/reset.html.erb +1 -0
- data/app/views/password_reset_mailer/reset.text.erb +1 -0
- data/app/views/sessions/new.html.erb +7 -0
- data/config/locales/en.yml +14 -0
- data/db/migrate/20120227014023_create_identities.rb +17 -0
- data/lib/easy_auth/engine.rb +9 -0
- data/lib/easy_auth/routes.rb +21 -0
- data/lib/easy_auth/version.rb +1 -1
- data/lib/easy_auth.rb +5 -1
- metadata +118 -14
- data/README.rdoc +0 -3
- data/app/assets/javascripts/easy_auth/application.js +0 -15
- data/app/assets/stylesheets/easy_auth/application.css +0 -13
- data/app/controllers/easy_auth/application_controller.rb +0 -4
- data/app/helpers/easy_auth/application_helper.rb +0 -4
data/README.md
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# EasyAuth #
|
2
|
+
|
3
|
+
[](http://travis-ci.org/dockyard/easy_auth)
|
4
|
+
|
5
|
+
Dead simple drop in authentication for Rails
|
6
|
+
|
7
|
+
## Installation ##
|
8
|
+
|
9
|
+
In your Gemfile add the following:
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
gem 'easy_auth'
|
13
|
+
```
|
14
|
+
|
15
|
+
After running Bundler you'll need to install the migrations
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
rake easy_auth:install:migrations
|
19
|
+
```
|
20
|
+
|
21
|
+
Then run your migrations.
|
22
|
+
|
23
|
+
## Authors ##
|
24
|
+
|
25
|
+
[Brian Cardarella](http://twitter.com/bcardarella)
|
26
|
+
|
27
|
+
## Versioning ##
|
28
|
+
|
29
|
+
This gem follows [Semantic Versioning](http://semver.org)
|
30
|
+
|
31
|
+
## Want to help? ##
|
32
|
+
|
33
|
+
Stable branches are created based upon each minor version. Please make
|
34
|
+
pull requests to specific branches rather than master.
|
35
|
+
|
36
|
+
Please make sure you include tests!
|
37
|
+
|
38
|
+
Unles Rails drops support for Ruby 1.8.7 we will continue to use the
|
39
|
+
hash-rocket syntax. Please respect this.
|
40
|
+
|
41
|
+
Don't use tabs to indent, two spaces are the standard.
|
42
|
+
|
43
|
+
## Legal ##
|
44
|
+
|
45
|
+
[DockYard](http://dockyard.com), LLC © 2012
|
46
|
+
|
47
|
+
[@dockyard](http://twitter.com/dockyard)
|
48
|
+
|
49
|
+
[Licensed under the MIT license](http://www.opensource.org/licenses/mit-license.php)
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module EasyAuth::Controllers::Authenticated
|
2
|
+
def self.included(base)
|
3
|
+
base.before_filter :attempt_to_authenticate
|
4
|
+
end
|
5
|
+
|
6
|
+
private
|
7
|
+
|
8
|
+
def attempt_to_authenticate
|
9
|
+
if user_not_signed_in?
|
10
|
+
session[:requested_path] = request.path
|
11
|
+
redirect_to main_app.sign_in_path
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module EasyAuth::Controllers::PasswordReset
|
2
|
+
def self.included(base)
|
3
|
+
base.instance_eval do
|
4
|
+
before_filter :find_identity_from_reset_token, :only => [:edit, :update]
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
def new
|
9
|
+
@identity = EasyAuth.identity_model.new
|
10
|
+
end
|
11
|
+
|
12
|
+
def create
|
13
|
+
if @identity = EasyAuth.identity_model.where(:username => params[:identity][:username]).first
|
14
|
+
@identity.password_reset
|
15
|
+
else
|
16
|
+
@identity = EasyAuth.identity_model.new(params[:identity])
|
17
|
+
end
|
18
|
+
|
19
|
+
flash.now[:notice] = I18n.t('easy_auth.password_reset.create.notice')
|
20
|
+
render :new
|
21
|
+
end
|
22
|
+
|
23
|
+
def update
|
24
|
+
if @identity.update_attributes(scope_to_password_params(:identity))
|
25
|
+
after_successful_password_reset(@identity)
|
26
|
+
else
|
27
|
+
after_failed_sign_in(@identity)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def scope_to_password_params(key)
|
34
|
+
params[key].select { |k, v| ['password', 'password_confirmation'].include?(k) }
|
35
|
+
end
|
36
|
+
|
37
|
+
def find_identity_from_reset_token
|
38
|
+
@identity = EasyAuth.identity_model.where(:reset_token => params[:reset_token]).first
|
39
|
+
end
|
40
|
+
|
41
|
+
def after_successful_password_reset(identity)
|
42
|
+
session[:session_token] = identity.generate_session_token!
|
43
|
+
identity.update_attribute(:reset_token, nil)
|
44
|
+
redirect_to after_successful_password_reset_path(identity), :notice => I18n.t('easy_auth.password_reset.update.notice')
|
45
|
+
end
|
46
|
+
|
47
|
+
def after_successful_password_reset_path(identity)
|
48
|
+
identity.account
|
49
|
+
end
|
50
|
+
|
51
|
+
def after_failed_password_reset(identity)
|
52
|
+
flash.now[:error] = I18n.t('easy_auth.password_reset.update.error')
|
53
|
+
render :new
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module EasyAuth::Controllers::Sessions
|
2
|
+
def new
|
3
|
+
@identity = EasyAuth.identity_model.new
|
4
|
+
end
|
5
|
+
|
6
|
+
def create
|
7
|
+
if identity = EasyAuth.identity_model.authenticate(params[:identity])
|
8
|
+
session[:session_token] = identity.generate_session_token!
|
9
|
+
after_successful_sign_in(identity)
|
10
|
+
else
|
11
|
+
@identity = EasyAuth.identity_model.new(params[:identity])
|
12
|
+
after_failed_sign_in(@identity)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def destroy
|
17
|
+
session.delete(:session_token)
|
18
|
+
after_sign_out
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def after_successful_sign_in(identity)
|
24
|
+
redirect_to session.delete(:requested_path) || after_successful_sign_in_path(identity), :notice => I18n.t('easy_auth.sessions.create.notice')
|
25
|
+
end
|
26
|
+
|
27
|
+
def after_successful_sign_in_path(identity)
|
28
|
+
identity.account
|
29
|
+
end
|
30
|
+
|
31
|
+
def after_failed_sign_in(identity)
|
32
|
+
flash.now[:error] = I18n.t('easy_auth.sessions.create.error')
|
33
|
+
render :new
|
34
|
+
end
|
35
|
+
|
36
|
+
def after_sign_out
|
37
|
+
redirect_to main_app.root_path, :notice => I18n.t('easy_auth.sessions.delete.notice')
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module EasyAuth
|
2
|
+
module Helpers
|
3
|
+
def self.included(base)
|
4
|
+
base.class_eval do
|
5
|
+
helper_method :current_account, :current_user, :account_signed_in?, :user_signed_in?, :account_not_signed_in?, :user_not_signed_in?
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
def current_account
|
10
|
+
if session[:session_token]
|
11
|
+
begin
|
12
|
+
@current_account ||= EasyAuth.identity_model.find_by_session_token(session[:session_token]).account
|
13
|
+
rescue
|
14
|
+
@current_account = nil
|
15
|
+
session.delete(:session_token)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
@current_account
|
20
|
+
end
|
21
|
+
alias :current_user :current_account
|
22
|
+
|
23
|
+
def account_signed_in?
|
24
|
+
current_account
|
25
|
+
end
|
26
|
+
alias :user_signed_in? :account_signed_in?
|
27
|
+
|
28
|
+
def account_not_signed_in?
|
29
|
+
!account_signed_in?
|
30
|
+
end
|
31
|
+
alias :user_not_signed_in? :account_not_signed_in?
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module EasyAuth::Mailers::PasswordReset
|
2
|
+
def self.included(base)
|
3
|
+
base.clear_action_methods!
|
4
|
+
end
|
5
|
+
|
6
|
+
def reset(id)
|
7
|
+
@identity = EasyAuth.identity_model.find(id)
|
8
|
+
@url = edit_password_url(@identity.reset_token)
|
9
|
+
mail :to => @identity.account.email, :subject => 'Password reset'
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module EasyAuth::Models::Account
|
2
|
+
class NoIdentityUsernameError < StandardError; end
|
3
|
+
def self.included(base)
|
4
|
+
base.class_eval do
|
5
|
+
unless respond_to?(:identity_username_attribute)
|
6
|
+
def self.identity_username_attribute
|
7
|
+
if column_names.include?('username')
|
8
|
+
:username
|
9
|
+
elsif column_names.include?('email')
|
10
|
+
:email
|
11
|
+
else
|
12
|
+
raise EasyAuth::Models::Account::NoIdentityUsernameError, 'your model must have either a #username or #email attribute. Or you must override the .identity_username_attribute class method'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def identity_username_attribute
|
18
|
+
self.send(self.class.identity_username_attribute)
|
19
|
+
end
|
20
|
+
|
21
|
+
has_one :identity, :as => :account
|
22
|
+
before_create :setup_identity
|
23
|
+
before_update :update_identity
|
24
|
+
|
25
|
+
attr_accessor :password
|
26
|
+
validates :password, :presence => { :on => :create }, :confirmation => true
|
27
|
+
attr_accessible :password, :password_confirmation
|
28
|
+
validates identity_username_attribute, :presence => true
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def setup_identity
|
35
|
+
build_identity(identity_attributes)
|
36
|
+
end
|
37
|
+
|
38
|
+
def update_identity
|
39
|
+
identity.update_attributes(identity_attributes)
|
40
|
+
end
|
41
|
+
|
42
|
+
def identity_attributes
|
43
|
+
{ :username => self.identity_username_attribute, :password => self.password, :password_confirmation => self.password_confirmation }
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module EasyAuth::Models::Identity
|
2
|
+
def self.included(base)
|
3
|
+
base.class_eval do
|
4
|
+
belongs_to :account, :polymorphic => true
|
5
|
+
has_secure_password
|
6
|
+
attr_accessible :username, :password, :password_confirmation
|
7
|
+
|
8
|
+
def self.authenticate(attributes = nil)
|
9
|
+
return nil if attributes.nil?
|
10
|
+
|
11
|
+
if identity = where(arel_table[:username].matches(attributes[:username].try(&:strip))).first.try(:authenticate, attributes[:password])
|
12
|
+
identity
|
13
|
+
else
|
14
|
+
nil
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def password_reset
|
21
|
+
update_attribute(:reset_token, URI.escape(_generate_token(:reset).gsub(/[\.|\\\/]/,'')))
|
22
|
+
PasswordResetMailer.reset(self.id).deliver
|
23
|
+
end
|
24
|
+
|
25
|
+
def generate_session_token!
|
26
|
+
self.update_attribute(:session_token, _generate_token(:session))
|
27
|
+
self.session_token
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def _generate_token(type)
|
33
|
+
BCrypt::Password.create("#{id}-#{type}_token-#{DateTime.current}")
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<%= form_for @identity, :url => main_app.edit_password_path(params[:reset_token]) do |f| %>
|
2
|
+
<%= f.label :password %>
|
3
|
+
<%= f.text_field :password %>
|
4
|
+
<%= f.label :password_confirmation %>
|
5
|
+
<%= f.text_field :password_confirmation %>
|
6
|
+
<%= f.submit 'Submit' %>
|
7
|
+
<% end %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= link_to 'Reset password', @url %>
|
@@ -0,0 +1 @@
|
|
1
|
+
Reset password: <%= @url %>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
en:
|
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
|
+
password_reset:
|
10
|
+
create:
|
11
|
+
notice: 'Please check your email for your password reset link.'
|
12
|
+
update:
|
13
|
+
notice: 'Your password has been updated.'
|
14
|
+
error: 'There was an issue updating your password.'
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class CreateIdentities < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :identities do |t|
|
4
|
+
t.string :username
|
5
|
+
t.string :password_digest
|
6
|
+
t.string :account_type
|
7
|
+
t.integer :account_id
|
8
|
+
t.string :reset_token
|
9
|
+
t.string :session_token
|
10
|
+
t.timestamps
|
11
|
+
end
|
12
|
+
|
13
|
+
[:username, :reset_token, :session_token].each do |column|
|
14
|
+
add_index :identities, column
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/easy_auth/engine.rb
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
module EasyAuth
|
2
2
|
class Engine < ::Rails::Engine
|
3
3
|
isolate_namespace EasyAuth
|
4
|
+
|
5
|
+
initializer 'filter_parameters' do |app|
|
6
|
+
app.config.filter_parameters += [:password]
|
7
|
+
app.config.filter_parameters.uniq!
|
8
|
+
end
|
9
|
+
|
10
|
+
config.generators do |g|
|
11
|
+
g.test_framework :rspec, :view_specs => false
|
12
|
+
end
|
4
13
|
end
|
5
14
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module ActionDispatch::Routing
|
2
|
+
class Mapper
|
3
|
+
def easy_auth_routes
|
4
|
+
easy_auth_session_routes
|
5
|
+
easy_auth_password_reset_routes
|
6
|
+
end
|
7
|
+
|
8
|
+
def easy_auth_session_routes
|
9
|
+
get '/sign_out' => 'sessions#destroy', :as => :sign_out
|
10
|
+
get '/sign_in' => 'sessions#new', :as => :sign_in
|
11
|
+
post '/sign_in' => 'sessions#create'
|
12
|
+
end
|
13
|
+
|
14
|
+
def easy_auth_password_reset_routes
|
15
|
+
get '/password_reset' => 'password_reset#new', :as => :password_reset
|
16
|
+
post '/password_reset' => 'password_reset#create'
|
17
|
+
get '/password_reset/:reset_token' => 'password_reset#edit', :as => :edit_password
|
18
|
+
put '/password_reset/:reset_token' => 'password_reset#update'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/easy_auth/version.rb
CHANGED
data/lib/easy_auth.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: easy_auth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.1.alpha.
|
4
|
+
version: 0.0.1.alpha.1
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-05-07 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &70277957196260 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,98 @@ dependencies:
|
|
21
21
|
version: 3.2.1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70277957196260
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: bcrypt-ruby
|
27
|
+
requirement: &70277957194540 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 3.0.0
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70277957194540
|
25
36
|
- !ruby/object:Gem::Dependency
|
26
37
|
name: sqlite3
|
27
|
-
requirement: &
|
38
|
+
requirement: &70277957192280 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70277957192280
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rspec-rails
|
49
|
+
requirement: &70277957175740 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70277957175740
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: capybara
|
60
|
+
requirement: &70277957173520 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70277957173520
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: capybara-email
|
71
|
+
requirement: &70277957172440 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70277957172440
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: valid_attribute
|
82
|
+
requirement: &70277957171180 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *70277957171180
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: factory_girl_rails
|
93
|
+
requirement: &70277957169080 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
type: :development
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *70277957169080
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
name: bourne
|
104
|
+
requirement: &70277957167740 !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
type: :development
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: *70277957167740
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: debugger
|
115
|
+
requirement: &70277957165780 !ruby/object:Gem::Requirement
|
28
116
|
none: false
|
29
117
|
requirements:
|
30
118
|
- - ! '>='
|
@@ -32,8 +120,8 @@ dependencies:
|
|
32
120
|
version: '0'
|
33
121
|
type: :development
|
34
122
|
prerelease: false
|
35
|
-
version_requirements: *
|
36
|
-
description: EasyAuth
|
123
|
+
version_requirements: *70277957165780
|
124
|
+
description: EasyAuth
|
37
125
|
email:
|
38
126
|
- brian@dockyard.com
|
39
127
|
- bcardarella@gmail.com
|
@@ -41,19 +129,35 @@ executables: []
|
|
41
129
|
extensions: []
|
42
130
|
extra_rdoc_files: []
|
43
131
|
files:
|
44
|
-
- app/
|
45
|
-
- app/
|
46
|
-
- app/controllers/
|
47
|
-
- app/
|
132
|
+
- app/controllers/authenticated_controller.rb
|
133
|
+
- app/controllers/password_reset_controller.rb
|
134
|
+
- app/controllers/sessions_controller.rb
|
135
|
+
- app/mailers/password_reset_mailer.rb
|
136
|
+
- app/mixins/easy_auth/controllers/authenticated.rb
|
137
|
+
- app/mixins/easy_auth/controllers/password_reset.rb
|
138
|
+
- app/mixins/easy_auth/controllers/sessions.rb
|
139
|
+
- app/mixins/easy_auth/helpers.rb
|
140
|
+
- app/mixins/easy_auth/mailers/password_reset.rb
|
141
|
+
- app/mixins/easy_auth/models/account.rb
|
142
|
+
- app/mixins/easy_auth/models/identity.rb
|
143
|
+
- app/models/identity.rb
|
48
144
|
- app/views/layouts/easy_auth/application.html.erb
|
145
|
+
- app/views/password_reset/edit.html.erb
|
146
|
+
- app/views/password_reset/new.html.erb
|
147
|
+
- app/views/password_reset_mailer/reset.html.erb
|
148
|
+
- app/views/password_reset_mailer/reset.text.erb
|
149
|
+
- app/views/sessions/new.html.erb
|
150
|
+
- config/locales/en.yml
|
49
151
|
- config/routes.rb
|
152
|
+
- db/migrate/20120227014023_create_identities.rb
|
50
153
|
- lib/easy_auth/engine.rb
|
154
|
+
- lib/easy_auth/routes.rb
|
51
155
|
- lib/easy_auth/version.rb
|
52
156
|
- lib/easy_auth.rb
|
53
157
|
- lib/tasks/easy_auth_tasks.rake
|
54
158
|
- MIT-LICENSE
|
55
159
|
- Rakefile
|
56
|
-
- README.
|
160
|
+
- README.md
|
57
161
|
homepage: https://github.com/dockyard/easy_auth
|
58
162
|
licenses: []
|
59
163
|
post_install_message:
|
@@ -68,7 +172,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
68
172
|
version: '0'
|
69
173
|
segments:
|
70
174
|
- 0
|
71
|
-
hash:
|
175
|
+
hash: -3970848794038147418
|
72
176
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
177
|
none: false
|
74
178
|
requirements:
|
@@ -80,5 +184,5 @@ rubyforge_project:
|
|
80
184
|
rubygems_version: 1.8.15
|
81
185
|
signing_key:
|
82
186
|
specification_version: 3
|
83
|
-
summary: EasyAuth
|
187
|
+
summary: EasyAuth
|
84
188
|
test_files: []
|
data/README.rdoc
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
2
|
-
// listed below.
|
3
|
-
//
|
4
|
-
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
5
|
-
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
|
6
|
-
//
|
7
|
-
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
8
|
-
// the compiled file.
|
9
|
-
//
|
10
|
-
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
|
11
|
-
// GO AFTER THE REQUIRES BELOW.
|
12
|
-
//
|
13
|
-
//= require jquery
|
14
|
-
//= require jquery_ujs
|
15
|
-
//= require_tree .
|
@@ -1,13 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
3
|
-
* listed below.
|
4
|
-
*
|
5
|
-
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
6
|
-
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
|
7
|
-
*
|
8
|
-
* You're free to add application-wide styles to this file and they'll appear at the top of the
|
9
|
-
* compiled file, but it's generally better to create a new file per style scope.
|
10
|
-
*
|
11
|
-
*= require_self
|
12
|
-
*= require_tree .
|
13
|
-
*/
|