mac_generators 0.0.1 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +7 -0
  2. data/lib/generators/authentication/email/USAGE +39 -0
  3. data/lib/generators/authentication/email/email_generator.rb +128 -0
  4. data/lib/generators/authentication/{templates → email/templates}/create_identities.rb +1 -1
  5. data/lib/generators/authentication/email/templates/database_authentication.rb +16 -0
  6. data/lib/generators/authentication/{templates → email/templates}/erb/identity_new.html.erb +0 -0
  7. data/lib/generators/authentication/email/templates/erb/session_new.html.erb +15 -0
  8. data/lib/generators/authentication/{templates → email/templates}/haml/identity_new.html.haml +0 -0
  9. data/lib/generators/authentication/email/templates/haml/session_new.html.haml +15 -0
  10. data/lib/generators/authentication/{templates → email/templates}/identities_controller.rb +1 -1
  11. data/lib/generators/authentication/email/templates/identity.rb +6 -0
  12. data/lib/generators/authentication/email/templates/sessions_controller.rb +16 -0
  13. data/lib/generators/authentication/email/templates/warden.rb +19 -0
  14. data/lib/generators/authentication/omniauth/USAGE +32 -0
  15. data/lib/generators/authentication/omniauth/omniauth_generator.rb +121 -0
  16. data/lib/generators/authentication/omniauth/templates/authentication_domain.rb +1 -0
  17. data/lib/generators/authentication/omniauth/templates/create_identities.rb +12 -0
  18. data/lib/generators/authentication/omniauth/templates/identity.rb +9 -0
  19. data/lib/generators/authentication/omniauth/templates/oauth_authentication.rb +36 -0
  20. data/lib/generators/authentication/omniauth/templates/omniauth.rb +3 -0
  21. data/lib/generators/authentication/omniauth/templates/sessions_controller.rb +12 -0
  22. data/lib/generators/authentication/omniauth/templates/warden.rb +19 -0
  23. data/lib/mac_generators/version.rb +1 -1
  24. data/test/dummy/app/controllers/application_controller.rb +24 -0
  25. data/test/dummy/config/database.yml +3 -3
  26. data/test/dummy/config/environments/test.rb +0 -3
  27. data/test/dummy/config/locales/en.yml +14 -0
  28. data/test/dummy/config/routes.rb +5 -0
  29. data/test/dummy/db/test.sqlite3 +0 -0
  30. data/test/dummy/log/test.log +3560 -0
  31. data/test/dummy/tmp/Gemfile +3 -0
  32. data/test/dummy/tmp/app/controllers/application_controller.rb +27 -0
  33. data/test/dummy/tmp/app/controllers/sessions_controller.rb +12 -0
  34. data/test/dummy/tmp/app/models/identity.rb +9 -0
  35. data/test/dummy/tmp/config/initializers/authentication_domain.rb +1 -0
  36. data/test/dummy/tmp/config/initializers/omniauth.rb +3 -0
  37. data/test/dummy/tmp/config/initializers/warden.rb +19 -0
  38. data/test/dummy/tmp/config/locales/en.yml +10 -0
  39. data/test/dummy/tmp/config/routes.rb +4 -0
  40. data/test/dummy/tmp/db/migrate/create_identities.rb +12 -0
  41. data/test/dummy/tmp/lib/strategies/oauth_authentication.rb +36 -0
  42. data/test/fixtures/Gemfile +0 -0
  43. data/test/fixtures/application_controller.rb +3 -0
  44. data/test/fixtures/en.yml +1 -0
  45. data/test/fixtures/routes.rb +2 -0
  46. data/test/generators/authentication_email_generator_test.rb +141 -0
  47. data/test/generators/authentication_omniauth_generator_test.rb +107 -0
  48. data/test/support/generators_test_helper.rb +51 -0
  49. data/test/test_helper.rb +20 -0
  50. metadata +115 -37
  51. data/README +0 -3
  52. data/lib/generators/authentication/USAGE +0 -8
  53. data/lib/generators/authentication/authentication_generator.rb +0 -89
  54. data/lib/generators/authentication/templates/erb/session_new.html.erb +0 -14
  55. data/lib/generators/authentication/templates/haml/session_new.html.haml +0 -14
  56. data/lib/generators/authentication/templates/identity.rb +0 -26
  57. data/lib/generators/authentication/templates/sessions_controller.rb +0 -21
  58. data/test/mac_generators_test.rb +0 -7
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b4a91211b48619c200b3a6d3ac7df516d6a61b60
4
+ data.tar.gz: 441a52f6322a8d7de17fbe8b2f71c1d47974508b
5
+ SHA512:
6
+ metadata.gz: e650342c2d53508119153a64f848d0d6fa69a17224094b65fe6edf37feaca9463431a37a394bc890b938acb153769d241a192a204b668084791c3b8fc51955ef
7
+ data.tar.gz: 7f496bde084ac9cdb7f370b3c461994ace1c394a5d1d928f4801359997fe6559747f46ff622f7796b101518c3c34609ca7a89f514c2de73e858c0c7f7549a5be
@@ -0,0 +1,39 @@
1
+ Description:
2
+ Generates files for email/password authentication, based on Rails
3
+ has_secure_password functionality.
4
+ It uses warden with a single database authentication strategy.
5
+
6
+ By default without parameters all code will be generated for a model Identity
7
+ which will be used for authetication purposes.
8
+
9
+ If you want to generate authentication for another model than Identity then
10
+ pass it as a first parameter.
11
+
12
+ Also if you want signup and signin templates to be haml files pass the option
13
+ --haml, otherwise they will be erb.
14
+
15
+ Example:
16
+ rails generate authentication:email
17
+
18
+ This will create:
19
+ app/controllers/identities_controller.rb
20
+ app/controllers/sessions_controller.rb
21
+ app/views/identities/new.html.erb
22
+ app/views/sessions/new.html.erb
23
+ app/models/identity.rb
24
+ config/initializers/warden.rb
25
+ lib/strategies/database_authentication.rb
26
+
27
+ And will modify:
28
+ app/controllers/application_controller.rb
29
+ config/locales/en.yml
30
+
31
+ And will add the following routes:
32
+ route get 'sign_up' => 'identities#new', as: :sign_up
33
+ route get 'log_in' => 'sessions#new', as: :log_in
34
+ route get 'log_out' => 'sessions#destroy', as: :log_out
35
+ route resource :identity, only: [:create, :new]
36
+ route resource :sessions, only: [:create, :new]
37
+
38
+ And finally will add to Gemfile:
39
+ warden (~> 1.2.0)
@@ -0,0 +1,128 @@
1
+ module Authentication
2
+ module Generators
3
+ class EmailGenerator < Rails::Generators::Base
4
+ source_root File.expand_path('../templates', __FILE__)
5
+ argument :resource_name, :type => :string, :default => 'identity'
6
+ class_option :haml, type: :boolean, default: false, description: 'Generate haml templates'
7
+
8
+ def copy_controller_files
9
+ template 'identities_controller.rb', File.join('app/controllers', "#{resource_pluralize}_controller.rb")
10
+ template 'sessions_controller.rb', 'app/controllers/sessions_controller.rb'
11
+ end
12
+
13
+ def copy_view_files
14
+ if options[:haml]
15
+ template 'haml/identity_new.html.haml', "app/views/#{resource_pluralize}/new.html.haml"
16
+ template 'haml/session_new.html.haml', "app/views/sessions/new.html.haml"
17
+ else
18
+ template 'erb/identity_new.html.erb', "app/views/#{resource_pluralize}/new.html.erb"
19
+ template 'erb/session_new.html.erb', "app/views/sessions/new.html.erb"
20
+ end
21
+ end
22
+
23
+ def add_routes
24
+ route "get 'sign_up' => '#{resource_pluralize}#new', as: :sign_up"
25
+ route "get 'log_in' => 'sessions#new', as: :log_in"
26
+ route "delete 'log_out' => 'sessions#destroy', as: :log_out"
27
+
28
+ route "resource :#{resource_name}, only: [:create, :new]"
29
+ route "resource :sessions, only: [:create, :new]"
30
+ end
31
+
32
+ def generate_user
33
+ if Dir["db/migrate/*create_#{resource_pluralize}.rb"].empty?
34
+ template 'create_identities.rb', "db/migrate/#{migration_name}"
35
+ end
36
+ template 'identity.rb', "app/models/#{resource_name}.rb"
37
+ end
38
+
39
+ def add_helper_methods
40
+ insert_into_file 'app/controllers/application_controller.rb', after: /:exception/ do
41
+ <<-EOS
42
+
43
+
44
+ helper_method :current_#{resource_name}, :#{resource_name}_signed_in?, :warden_message
45
+
46
+ protected
47
+ def current_#{resource_name}
48
+ warden.user(scope: :#{resource_name})
49
+ end
50
+
51
+ def #{resource_name}_signed_in?
52
+ warden.authenticate?(scope: :#{resource_name})
53
+ end
54
+
55
+ def authenticate!
56
+ redirect_to root_path, notice: t('.not_logged') unless #{resource_name}_signed_in?
57
+ end
58
+
59
+ def warden_message
60
+ warden.message
61
+ end
62
+
63
+ def warden
64
+ request.env['warden']
65
+ end
66
+ EOS
67
+ end
68
+
69
+ end
70
+
71
+ def add_gems
72
+ gem 'warden', '~> 1.2.0'
73
+ gem 'bcrypt-ruby'
74
+ end
75
+
76
+ def add_translations
77
+ insert_into_file "config/locales/en.yml", after: 'en:' do
78
+ <<-EOS
79
+
80
+ sessions:
81
+ new:
82
+ log_in: 'Log in'
83
+ create:
84
+ invalid_credentials: 'Your credentials are invalid'
85
+ logged_in: 'Welcome back!'
86
+ destroy:
87
+ logged_out: 'See you later!'
88
+ #{resource_pluralize}:
89
+ new:
90
+ create: 'Create #{resource_name}'
91
+ create:
92
+ sign_up: 'Welcome to your new account!'
93
+ EOS
94
+ end
95
+ end
96
+
97
+ def copy_warden_file
98
+ template 'warden.rb', File.join('config', 'initializers', 'warden.rb')
99
+ end
100
+
101
+ def copy_warden_strategies
102
+ template 'database_authentication.rb', File.join('lib', 'strategies', 'database_authentication.rb')
103
+ end
104
+
105
+ def instructions
106
+ message = "There are a few manual steps that you need to take care of\n\n"
107
+ message << "1. Run bundle command to install new gems.\n"
108
+ message << "2. Be sure that to have definition for root in your routes.\n"
109
+ message << "3. Run rake db:migrate to add your #{resource_pluralize} table.\n"
110
+ message << "4. Inspect warden initializer at config/initializers/warden.rb\n"
111
+ message << " and update the failure_app if need it.\n"
112
+ message << "5. Inspect generated files and learn how authentication was implemented.\n\n"
113
+
114
+ puts message
115
+ end
116
+
117
+ private
118
+ def migration_name
119
+ date = (DateTime.now.strftime "%Y %m %d %H %M %S").gsub(' ', '')
120
+ "#{date}_create_#{resource_pluralize}.rb"
121
+ end
122
+
123
+ def resource_pluralize
124
+ @resource_pluralize ||= resource_name.pluralize
125
+ end
126
+ end
127
+ end
128
+ end
@@ -3,7 +3,7 @@ class Create<%= resource_pluralize.capitalize %> < ActiveRecord::Migration
3
3
  create_table :<%= resource_pluralize %> do |t|
4
4
  t.string :email
5
5
  t.string :password_hash
6
- t.string :password_salt
6
+ t.string :password_digest
7
7
 
8
8
  t.timestamps
9
9
  end
@@ -0,0 +1,16 @@
1
+ module Strategies
2
+ class DatabaseAuthentication < ::Warden::Strategies::Base
3
+ def valid?
4
+ params['<%= resource_name %>'].present?
5
+ end
6
+
7
+ def authenticate!
8
+ <%= resource_name %> = <%= resource_name.classify %>.find_by_email(params['<%= resource_name %>']['email']).try(:authenticate, params['<%= resource_name %>']['password'])
9
+
10
+ return success! <%= resource_name %> if <%= resource_name %>
11
+ fail! I18n.t('sessions.create.invalid_credentials')
12
+ end
13
+ end
14
+ end
15
+
16
+ Warden::Strategies.add(:database_authentication, Strategies::DatabaseAuthentication)
@@ -0,0 +1,15 @@
1
+ <%%= form_for @<%= resource_name %>, url: sessions_path do |form| %>
2
+ <%%- if warden_message %>
3
+ <div class='alert'><%%= warden_message %></div>
4
+ <%% end %>
5
+
6
+ <p>
7
+ <%%= form.label :email %><br />
8
+ <%%= form.text_field :email %>
9
+ </p>
10
+ <p>
11
+ <%%= form.label :password %><br />
12
+ <%%= form.password_field :password %>
13
+ </p>
14
+ <p class='button'><%%= form.submit t('.log_in') %></p>
15
+ <%% end %>
@@ -0,0 +1,15 @@
1
+ = form_for @<%= resource_name %>, url: sessions_path do |form|
2
+ - if warden_message
3
+ .alert
4
+ = warden_message
5
+
6
+ %p
7
+ = form.label :email
8
+ %br/
9
+ = form.text_field :email
10
+ %p
11
+ = form.label :password
12
+ %br/
13
+ = form.password_field :password
14
+ %p.button
15
+ = form.submit t('.log_in')
@@ -8,7 +8,7 @@ class <%= resource_pluralize.capitalize %>Controller < ApplicationController
8
8
  @<%= resource_name %> = <%= resource_name.classify %>.new <%= resource_name %>_params
9
9
 
10
10
  if @<%= resource_name %>.save
11
- session[:<%=resource_name %>_id] = <%= resource_name %>.id
11
+ warden.set_user(@<%= resource_name %>, scope: :<%=resource_name %>)
12
12
  redirect_to root_url, notice: t('.sign_up')
13
13
  else
14
14
  render :new
@@ -0,0 +1,6 @@
1
+ class <%= resource_name.classify %> < ActiveRecord::Base
2
+ has_secure_password validations: true
3
+
4
+ validates :email, presence: true, uniqueness: true
5
+ validates :password_confirmation, presence: true, if: -> r { r.password.present? }
6
+ end
@@ -0,0 +1,16 @@
1
+ class SessionsController < ApplicationController
2
+ def new
3
+ @<%= resource_name %> = <%= resource_name.classify %>.new
4
+ end
5
+
6
+ def create
7
+ warden.authenticate!(scope: :<%= resource_name %>)
8
+ redirect_to root_url, notice: t('.logged_in')
9
+ end
10
+
11
+ def destroy
12
+ warden.logout(:<%=resource_name %>)
13
+ redirect_to root_url, notice: t('.logged_out')
14
+ end
15
+ end
16
+
@@ -0,0 +1,19 @@
1
+ load File.expand_path("../../../lib/strategies/database_authentication.rb", __FILE__)
2
+ Rails.application.config.middleware.use Warden::Manager do |manager|
3
+ manager.default_strategies :database_authentication
4
+
5
+ # TODO: Setup warden's failure app, this will be called everytime that
6
+ # and authentication failure happen.
7
+ # Failure app should be a Rack application.
8
+ # In Rails a controller can be used as a Rack app, just specify the
9
+ # controller and the action to be called. Example:
10
+ manager.failure_app = lambda { |env| SessionsController.action(:new).call(env) }
11
+ end
12
+
13
+ Warden::Manager.serialize_into_session(:<%= resource_name %>) do |<%= resource_name %>|
14
+ <%= resource_name %>.id
15
+ end
16
+
17
+ Warden::Manager.serialize_from_session(:<%= resource_name %>) do |id|
18
+ <%= resource_name.classify %>.find(id)
19
+ end
@@ -0,0 +1,32 @@
1
+ Description:
2
+ Generates files for oauth authentication using omniauth.
3
+ It uses warden with a single oauth authentication strategy.
4
+
5
+ By default without parameters all code will be generated for a model Identity
6
+ which will be used for authetication purposes.
7
+
8
+ If you want to generate authentication for another model than Identity then
9
+ pass it as a first parameter.
10
+
11
+ Example:
12
+ rails generate authentication:omniauth
13
+
14
+ This will create:
15
+ app/controllers/sessions_controller.rb
16
+ app/models/identity.rb
17
+ config/initializers/warden.rb
18
+ config/initializers/omniauth.rb
19
+ config/initializers/authentication_domain.rb
20
+ lib/strategies/oauth_authentication.rb
21
+
22
+ And will modify:
23
+ app/controllers/application_controller.rb
24
+ config/locales/en.yml
25
+
26
+ And will add the following routes:
27
+ route get 'auth/:provider/callback' => 'sessions#create', as: :log_in
28
+ route delete '/sessions/destroy' => 'sessions#destroy', as: :log_out
29
+
30
+ And finally will add to Gemfile:
31
+ warden (~> 1.2.0)
32
+ omniauth
@@ -0,0 +1,121 @@
1
+ module Authentication
2
+ module Generators
3
+ class OmniauthGenerator < Rails::Generators::Base
4
+ source_root File.expand_path('../templates', __FILE__)
5
+ argument :resource_name, :type => :string, :default => 'identity'
6
+
7
+ def copy_controller_files
8
+ template 'sessions_controller.rb', 'app/controllers/sessions_controller.rb'
9
+ end
10
+
11
+ def add_routes
12
+ route "get 'auth/:provider/callback' => 'sessions#create', as: :log_in"
13
+ route "delete '/sessions/destroy' => 'sessions#destroy', as: :log_out"
14
+ end
15
+
16
+ def generate_user
17
+ if Dir["db/migrate/*create_#{resource_pluralize}.rb"].empty?
18
+ template 'create_identities.rb', "db/migrate/#{migration_name}"
19
+ end
20
+ template 'identity.rb', "app/models/#{resource_name}.rb"
21
+ end
22
+
23
+ def add_helper_methods
24
+ insert_into_file 'app/controllers/application_controller.rb', after: /:exception/ do
25
+ <<-EOS
26
+
27
+
28
+ helper_method :current_#{resource_name}, :#{resource_name}_signed_in?, :warden_message
29
+
30
+ protected
31
+ def current_#{resource_name}
32
+ warden.user(scope: :#{resource_name})
33
+ end
34
+
35
+ def #{resource_name}_signed_in?
36
+ warden.authenticate?(scope: :#{resource_name})
37
+ end
38
+
39
+ def authenticate!
40
+ redirect_to root_path, notice: t('.not_logged') unless #{resource_name}_signed_in?
41
+ end
42
+
43
+ def warden_message
44
+ warden.message
45
+ end
46
+
47
+ def warden
48
+ request.env['warden']
49
+ end
50
+ EOS
51
+ end
52
+
53
+ end
54
+
55
+ def add_gems
56
+ gem 'warden', '~> 1.2.0'
57
+ gem 'omniauth'
58
+ end
59
+
60
+ def add_translations
61
+ insert_into_file "config/locales/en.yml", after: 'en:' do
62
+ <<-EOS
63
+
64
+ sessions:
65
+ new:
66
+ log_in: 'Log in'
67
+ create:
68
+ unauthorized_domain: 'Sorry but your domain is not authorized'
69
+ logged_in: 'Welcome back!'
70
+ destroy:
71
+ logged_out: 'See you later!'
72
+ EOS
73
+ end
74
+ end
75
+
76
+ def copy_warden_file
77
+ template 'warden.rb', File.join('config', 'initializers', 'warden.rb')
78
+ end
79
+
80
+ def copy_configuration
81
+ template 'authentication_domain.rb', File.join('config', 'initializers', 'authentication_domain.rb')
82
+ end
83
+
84
+ def copy_omniauth_configuration
85
+ template 'omniauth.rb', File.join('config', 'initializers', 'omniauth.rb')
86
+ end
87
+
88
+ def copy_warden_strategies
89
+ template 'oauth_authentication.rb', File.join('lib', 'strategies', 'oauth_authentication.rb')
90
+ end
91
+
92
+ def instructions
93
+ message = "There are a few manual steps that you need to take care of\n\n"
94
+ message << "1. Add an omniauth provider gem like twitter, facebook, etc..\n"
95
+ message << "2. Modify config/initializers/omniauth.rb and setup your provider\n"
96
+ message << " and your provider credentials.\n"
97
+ message << "3. Run bundle command to install new gems.\n"
98
+ message << "4. If you want to restrict access to a specific email domain.\n"
99
+ message << " modify config/initializers/authentication_domain.rb and add \n"
100
+ message << " your allowed domain.\n"
101
+ message << "5. Inspect warden initializer at config/initializers/warden.rb\n"
102
+ message << " and update the failure_app.\n"
103
+ message << "6. Be sure that to have definition for root in your routes.\n"
104
+ message << "7. Run rake db:migrate to add your #{resource_pluralize} table.\n"
105
+ message << "8. Inspect generated files and learn how authentication was implemented.\n\n"
106
+
107
+ puts message
108
+ end
109
+
110
+ private
111
+ def migration_name
112
+ date = (DateTime.now.strftime "%Y %m %d %H %M %S").gsub(' ', '')
113
+ "#{date}_create_#{resource_pluralize}.rb"
114
+ end
115
+
116
+ def resource_pluralize
117
+ @resource_pluralize ||= resource_name.pluralize
118
+ end
119
+ end
120
+ end
121
+ end
@@ -0,0 +1 @@
1
+ Rails.application.config.authentication_domain = ''
@@ -0,0 +1,12 @@
1
+ class Create<%= resource_pluralize.capitalize %> < ActiveRecord::Migration
2
+ def change
3
+ create_table :<%= resource_pluralize %> do |t|
4
+ t.string :provider
5
+ t.string :uid
6
+ t.string :name
7
+ t.string :email
8
+
9
+ t.timestamps
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,9 @@
1
+ class <%= resource_name.classify %> < ActiveRecord::Base
2
+
3
+ class << self
4
+ def find_identity(uid, provider)
5
+ where(uid: uid, provider: provider).first
6
+ end
7
+ end
8
+
9
+ end
@@ -0,0 +1,36 @@
1
+ module Strategies
2
+ class OauthAuthentication < ::Warden::Strategies::Base
3
+ def valid?
4
+ request.env['omniauth.auth'].present?
5
+ end
6
+
7
+ def authenticate!
8
+ auth = request.env['omniauth.auth']
9
+
10
+ if authorized_domain?(auth)
11
+ <%= resource_name %> = <%= resource_name.classify %>.find_<%= resource_name %>(auth['uid'], auth['provider']) || create_<%= resource_name %>(auth)
12
+ return success! <%= resource_name %>
13
+ end
14
+
15
+ fail! I18n.t('sessions.create.unauthorized_domain')
16
+ end
17
+
18
+ private
19
+ def authorized_domain?(auth)
20
+ if Rails.application.config.respond_to?(:authentication_domain) && Rails.application.config.authentication_domain.present?
21
+ return auth['info']['email'].split('@').last == Rails.application.config.authentication_domain
22
+ end
23
+
24
+ true
25
+ end
26
+
27
+ def create_<%= resource_name %>(auth)
28
+ params = { uid: auth['uid'], provider: auth['provider'],
29
+ name: auth['info']['name'], email: auth['info']['email'] }
30
+
31
+ <%= resource_name.classify %>.create! params
32
+ end
33
+ end
34
+ end
35
+
36
+ Warden::Strategies.add(:oauth_authentication, Strategies::OauthAuthentication)
@@ -0,0 +1,3 @@
1
+ Rails.application.config.middleware.use OmniAuth::Builder do
2
+ provider :provider, ENV["KEY"], ENV["SECRET"]
3
+ end
@@ -0,0 +1,12 @@
1
+ class SessionsController < ApplicationController
2
+ def create
3
+ warden.authenticate!(scope: :<%= resource_name %>)
4
+ redirect_to root_url, notice: t('.logged_in')
5
+ end
6
+
7
+ def destroy
8
+ warden.logout(:<%=resource_name %>)
9
+ redirect_to root_url, notice: t('.logged_out')
10
+ end
11
+ end
12
+
@@ -0,0 +1,19 @@
1
+ load File.expand_path("../../../lib/strategies/oauth_authentication.rb", __FILE__)
2
+ Rails.application.config.middleware.use Warden::Manager do |manager|
3
+ manager.default_strategies :oauth_authentication
4
+
5
+ # TODO: Setup warden's failure app, this will be called everytime that
6
+ # and authentication failure happen.
7
+ # Failure app should be a Rack application.
8
+ # In Rails a controller can be used as a Rack app, just specify the
9
+ # controller and the action to be called. Example:
10
+ #manager.failure_app = lambda { |env| HomeController.action(:index).call(env) }
11
+ end
12
+
13
+ Warden::Manager.serialize_into_session(:<%= resource_name %>) do |<%= resource_name %>|
14
+ <%= resource_name %>.id
15
+ end
16
+
17
+ Warden::Manager.serialize_from_session(:<%= resource_name %>) do |id|
18
+ <%= resource_name.classify %>.find(id)
19
+ end
@@ -1,3 +1,3 @@
1
1
  module MacGenerators
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -2,4 +2,28 @@ class ApplicationController < ActionController::Base
2
2
  # Prevent CSRF attacks by raising an exception.
3
3
  # For APIs, you may want to use :null_session instead.
4
4
  protect_from_forgery with: :exception
5
+
6
+ helper_method :current_identity, :identity_signed_in?, :warden_message
7
+
8
+ protected
9
+ def current_identity
10
+ warden.user(scope: :identity)
11
+ end
12
+
13
+ def identity_signed_in?
14
+ warden.authenticate?(scope: :identity)
15
+ end
16
+
17
+ def authenticate!
18
+ redirect_to root_path, notice: t('.not_logged') unless identity_signed_in?
19
+ end
20
+
21
+ def warden_message
22
+ warden.message
23
+ end
24
+
25
+ def warden
26
+ request.env['warden']
27
+ end
28
+
5
29
  end
@@ -5,7 +5,7 @@
5
5
  # gem 'sqlite3'
6
6
  development:
7
7
  adapter: sqlite3
8
- database: db/development.sqlite3
8
+ database: ":memory:"
9
9
  pool: 5
10
10
  timeout: 5000
11
11
 
@@ -14,12 +14,12 @@ development:
14
14
  # Do not set this db to the same as development or production.
15
15
  test:
16
16
  adapter: sqlite3
17
- database: db/test.sqlite3
17
+ database: ":memory:"
18
18
  pool: 5
19
19
  timeout: 5000
20
20
 
21
21
  production:
22
22
  adapter: sqlite3
23
- database: db/production.sqlite3
23
+ database: ":memory:"
24
24
  pool: 5
25
25
  timeout: 5000
@@ -33,7 +33,4 @@ Dummy::Application.configure do
33
33
 
34
34
  # Print deprecation notices to the stderr.
35
35
  config.active_support.deprecation = :stderr
36
-
37
- # Use the synchronous queue to run jobs immediately.
38
- config.queue = ActiveSupport::SynchronousQueue.new
39
36
  end
@@ -20,4 +20,18 @@
20
20
  # available at http://guides.rubyonrails.org/i18n.html.
21
21
 
22
22
  en:
23
+ sessions:
24
+ new:
25
+ log_in: 'Log in'
26
+ create:
27
+ invalid_credentials: 'Your credentials are invalid'
28
+ logged_in: 'Welcome back!'
29
+ destroy:
30
+ logged_out: 'See you later!'
31
+ identities:
32
+ new:
33
+ create: 'Create identity'
34
+ create:
35
+ sign_up: 'Welcome to your new account!'
36
+
23
37
  hello: "Hello world"
@@ -1,4 +1,9 @@
1
1
  Dummy::Application.routes.draw do
2
+ resource :sessions, only: [:create, :new]
3
+ resource :identity, only: [:create, :new]
4
+ get 'log_out' => 'sessions#destroy', as: :log_out
5
+ get 'log_in' => 'sessions#new', as: :log_in
6
+ get 'sign_up' => 'identities#new', as: :sign_up
2
7
  # The priority is based upon order of creation: first created -> highest priority.
3
8
  # See how all your routes lay out with "rake routes".
4
9
 
File without changes