authem 1.5.0 → 2.0.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 +4 -4
- data/.gitignore +3 -0
- data/.rspec +2 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +6 -0
- data/Appraisals +12 -0
- data/CHANGELOG.md +42 -0
- data/Gemfile +10 -0
- data/README.markdown +15 -1
- data/Rakefile +11 -5
- data/authem.gemspec +25 -0
- data/gemfiles/rails_4.0.gemfile +16 -0
- data/gemfiles/rails_4.1.gemfile +15 -0
- data/lib/authem.rb +4 -10
- data/lib/authem/controller.rb +50 -0
- data/lib/authem/errors/ambigous_role.rb +8 -0
- data/lib/authem/errors/unknown_role.rb +7 -0
- data/lib/authem/railtie.rb +12 -0
- data/lib/authem/role.rb +62 -0
- data/lib/authem/session.rb +41 -0
- data/lib/authem/support.rb +129 -0
- data/lib/authem/token.rb +5 -5
- data/lib/authem/user.rb +27 -13
- data/lib/authem/version.rb +1 -1
- data/lib/generators/authem/session/session_generator.rb +12 -0
- data/lib/generators/authem/session/templates/create_sessions.rb +15 -0
- data/lib/generators/authem/user/templates/create_table_migration.rb +22 -0
- data/lib/generators/authem/user/templates/model.rb +11 -0
- data/lib/generators/authem/user/user_generator.rb +13 -0
- data/spec/controller_spec.rb +413 -0
- data/spec/session_spec.rb +52 -0
- data/spec/spec_helper.rb +4 -0
- data/spec/support/active_record.rb +45 -0
- data/spec/support/i18n.rb +1 -0
- data/spec/support/time.rb +1 -0
- data/spec/token_spec.rb +10 -0
- data/spec/user_spec.rb +115 -0
- metadata +42 -112
- data/lib/authem/base_user.rb +0 -54
- data/lib/authem/config.rb +0 -21
- data/lib/authem/controller_support.rb +0 -51
- data/lib/authem/sorcery_user.rb +0 -24
- data/lib/generators/authem/model/model_generator.rb +0 -23
data/lib/authem/base_user.rb
DELETED
@@ -1,54 +0,0 @@
|
|
1
|
-
module Authem::BaseUser
|
2
|
-
extend ::ActiveSupport::Concern
|
3
|
-
|
4
|
-
included do
|
5
|
-
validates_uniqueness_of :email
|
6
|
-
validates_format_of :email, with: /\A\S+@\S+\z/
|
7
|
-
end
|
8
|
-
|
9
|
-
module ClassMethods
|
10
|
-
def find_by_email(email)
|
11
|
-
find_by("lower(email) = ?", email.downcase)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
def remember_token
|
16
|
-
self[:remember_token] || generate_token(:remember)
|
17
|
-
end
|
18
|
-
|
19
|
-
def session_token
|
20
|
-
self[:session_token] || generate_token(:session)
|
21
|
-
end
|
22
|
-
|
23
|
-
def reset_password(password, confirmation)
|
24
|
-
if password.blank?
|
25
|
-
self.errors.add :password, :blank
|
26
|
-
return false
|
27
|
-
end
|
28
|
-
|
29
|
-
reset_password_token = self.reset_password_token
|
30
|
-
|
31
|
-
self.password = password
|
32
|
-
self.password_confirmation = confirmation
|
33
|
-
self.reset_password_token = nil
|
34
|
-
|
35
|
-
return true if save
|
36
|
-
|
37
|
-
self.reset_password_token = reset_password_token
|
38
|
-
false
|
39
|
-
end
|
40
|
-
|
41
|
-
def reset_password_token!
|
42
|
-
generate_token :reset_password
|
43
|
-
end
|
44
|
-
|
45
|
-
def reset_session_token!
|
46
|
-
generate_token :session
|
47
|
-
end
|
48
|
-
|
49
|
-
private
|
50
|
-
|
51
|
-
def generate_token(type)
|
52
|
-
Authem::Token.generate.tap { |token| update_column("#{type}_token", token) }
|
53
|
-
end
|
54
|
-
end
|
data/lib/authem/config.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
module Authem
|
2
|
-
module Config
|
3
|
-
extend self
|
4
|
-
|
5
|
-
attr_accessor :sign_in_path
|
6
|
-
|
7
|
-
Authem::Config.sign_in_path ||= :sign_in
|
8
|
-
|
9
|
-
def configure
|
10
|
-
yield self
|
11
|
-
end
|
12
|
-
|
13
|
-
def user_class
|
14
|
-
@user_class.constantize
|
15
|
-
end
|
16
|
-
|
17
|
-
def user_class=(user_class)
|
18
|
-
@user_class = user_class.to_s
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,51 +0,0 @@
|
|
1
|
-
module Authem::ControllerSupport
|
2
|
-
extend ActiveSupport::Concern
|
3
|
-
|
4
|
-
protected
|
5
|
-
|
6
|
-
def sign_in(user, remember_me=true)
|
7
|
-
cookies.permanent.signed[:remember_token] = user.remember_token if remember_me
|
8
|
-
session[:session_token] = user.session_token
|
9
|
-
end
|
10
|
-
|
11
|
-
def sign_out
|
12
|
-
cookies[:remember_token] = nil
|
13
|
-
session[:session_token] = nil
|
14
|
-
reset_session
|
15
|
-
current_user.reset_session_token! if current_user
|
16
|
-
@current_user = nil
|
17
|
-
end
|
18
|
-
|
19
|
-
def current_user
|
20
|
-
@current_user ||= if session[:session_token]
|
21
|
-
Authem::Config.user_class.where(session_token: session[:session_token].to_s).first
|
22
|
-
elsif cookies[:remember_token].present?
|
23
|
-
Authem::Config.user_class.where(remember_token: cookies.signed[:remember_token].to_s).first.tap do |user|
|
24
|
-
session[:session_token] = user.session_token if user
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def require_user
|
30
|
-
unless signed_in?
|
31
|
-
session[:return_to_url] = request.url unless request.xhr?
|
32
|
-
redirect_to Authem::Config.sign_in_path
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
def signed_in?
|
37
|
-
current_user.present?
|
38
|
-
end
|
39
|
-
|
40
|
-
def redirect_back_or_to(url, flash_hash = {})
|
41
|
-
url = session[:return_to_url] || url
|
42
|
-
session[:return_to_url] = nil
|
43
|
-
redirect_to url, flash: flash_hash
|
44
|
-
end
|
45
|
-
|
46
|
-
included do
|
47
|
-
helper_method :current_user
|
48
|
-
helper_method :signed_in?
|
49
|
-
end
|
50
|
-
|
51
|
-
end
|
data/lib/authem/sorcery_user.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
module Authem::SorceryUser
|
2
|
-
extend ::ActiveSupport::Concern
|
3
|
-
include Authem::BaseUser
|
4
|
-
|
5
|
-
included do
|
6
|
-
attr_accessor :password, :password_confirmation
|
7
|
-
validates_presence_of :password, on: :create
|
8
|
-
validates_presence_of :password_confirmation, if: ->{ password.present? }
|
9
|
-
validates_confirmation_of :password, if: ->{ password.present? }
|
10
|
-
|
11
|
-
before_save :encrypt_password
|
12
|
-
end
|
13
|
-
|
14
|
-
def authenticate(password)
|
15
|
-
self if crypted_password.present? && ::BCrypt::Password.new(crypted_password) == [password, salt].join
|
16
|
-
end
|
17
|
-
|
18
|
-
def encrypt_password
|
19
|
-
if password.present?
|
20
|
-
self.salt = ::BCrypt::Engine.generate_salt
|
21
|
-
self.crypted_password = ::BCrypt::Password.create([password, salt].join)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'rails/generators/base'
|
2
|
-
|
3
|
-
module Authem
|
4
|
-
class ModelGenerator < Rails::Generators::Base
|
5
|
-
|
6
|
-
argument :model_name, type: :string, default: "user"
|
7
|
-
|
8
|
-
def generate_model
|
9
|
-
generate "model #{model_name} email:string password_digest:string reset_password_token:string session_token:string remember_token:string"
|
10
|
-
end
|
11
|
-
|
12
|
-
def update_model_to_include_authem
|
13
|
-
insert_into_file "app/models/#{model_name}.rb", "\n include Authem::User\n\n", after: "class #{model_name.camelize} < ActiveRecord::Base\n"
|
14
|
-
end
|
15
|
-
|
16
|
-
def add_initializer
|
17
|
-
create_file 'config/initializers/authem.rb' do
|
18
|
-
"Authem.configure do |config|\n config.user_class = #{model_name.camelize}\nend"
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
end
|