hero_generator 0.0.1.alpha5 → 0.0.1.alpha6
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/generators/hero/authentication/USAGE +8 -0
- data/lib/generators/hero/authentication/authentication_generator.rb +107 -0
- data/lib/generators/hero/authentication/templates/config/config.yml +22 -0
- data/lib/generators/hero/authentication/templates/config/initializers/action_mailer.rb +60 -0
- data/lib/generators/hero/authentication/templates/config/initializers/load_config.rb +3 -0
- data/lib/generators/hero/authentication/templates/config/locales/en.yml +52 -0
- data/lib/generators/hero/authentication/templates/config/routes.rb +29 -0
- data/lib/generators/hero/authentication/templates/controllers/application_controller.rb +9 -0
- data/lib/generators/hero/authentication/templates/controllers/confirmation_controller.rb +80 -0
- data/lib/generators/hero/authentication/templates/controllers/sessions_controller.rb +24 -0
- data/lib/generators/hero/authentication/templates/controllers/settings_controller.rb +33 -0
- data/lib/generators/hero/authentication/templates/controllers/users_controller.rb +32 -0
- data/lib/generators/hero/authentication/templates/mailers/confirmation_mailer.rb +30 -0
- data/lib/generators/hero/authentication/templates/migrations/20120213162337_create_users.rb +15 -0
- data/lib/generators/hero/authentication/templates/models/authentication.rb +33 -0
- data/lib/generators/hero/authentication/templates/models/user.rb +144 -0
- data/lib/generators/hero/authentication/templates/tests/spec/controllers/sessions_controller_spec.rb +6 -0
- data/lib/generators/hero/authentication/templates/tests/spec/controllers/users_controller_spec.rb +6 -0
- data/lib/generators/hero/authentication/templates/tests/spec/factories.rb +20 -0
- data/lib/generators/hero/authentication/templates/tests/spec/models/user_spec.rb +154 -0
- data/lib/generators/hero/authentication/templates/tests/spec/requests/new_email_request_spec.rb +69 -0
- data/lib/generators/hero/authentication/templates/tests/spec/requests/password_resets_spec.rb +58 -0
- data/lib/generators/hero/authentication/templates/tests/spec/requests/user_confirmation_spec.rb +61 -0
- data/lib/generators/hero/authentication/templates/tests/spec/requests/user_sign_in_spec.rb +13 -0
- data/lib/generators/hero/authentication/templates/tests/spec/requests/user_sign_up_spec.rb +55 -0
- data/lib/generators/hero/authentication/templates/tests/spec/routing/confirmation_mailer_spec.rb +49 -0
- data/lib/generators/hero/authentication/templates/tests/spec/spec_helper.rb +34 -0
- data/lib/generators/hero/authentication/templates/tests/spec/support/mailer_macros.rb +10 -0
- data/lib/generators/hero/authentication/templates/views/confirmation/new_email_token.html.haml +11 -0
- data/lib/generators/hero/authentication/templates/views/confirmation/order_new_password.html.haml +11 -0
- data/lib/generators/hero/authentication/templates/views/confirmation/password_token.html.haml +11 -0
- data/lib/generators/hero/authentication/templates/views/confirmation/recover_password.html.haml +15 -0
- data/lib/generators/hero/authentication/templates/views/confirmation/registration.html.haml +10 -0
- data/lib/generators/hero/authentication/templates/views/confirmation/resend_signup_token.html.haml +13 -0
- data/lib/generators/hero/authentication/templates/views/confirmation/user_email.html.haml +0 -0
- data/lib/generators/hero/authentication/templates/views/confirmation_mailer/new_email_request.text.haml +9 -0
- data/lib/generators/hero/authentication/templates/views/confirmation_mailer/registration.text.haml +11 -0
- data/lib/generators/hero/authentication/templates/views/confirmation_mailer/resend_signup_token.text.haml +11 -0
- data/lib/generators/hero/authentication/templates/views/confirmation_mailer/send_password_reset.text.haml +9 -0
- data/lib/generators/hero/authentication/templates/views/sessions/new.html.haml +16 -0
- data/lib/generators/hero/authentication/templates/views/settings/index.html.haml +28 -0
- data/lib/generators/hero/authentication/templates/views/users/new.html.haml +35 -0
- data/lib/generators/hero/hero.rb +28 -0
- data/lib/hero_generator/engine.rb +6 -0
- data/lib/hero_generator/version.rb +1 -1
- metadata +53 -11
- data/.gitignore +0 -4
- data/hero_generator.gemspec +0 -28
@@ -0,0 +1,107 @@
|
|
1
|
+
require 'generators/nifty'
|
2
|
+
#require 'rails/generators/migration'
|
3
|
+
|
4
|
+
module Hero
|
5
|
+
module Generators
|
6
|
+
class AuthenticationGenerator < Rails::Generators::Base
|
7
|
+
source_root File.expand_path('../templates', __FILE__)
|
8
|
+
|
9
|
+
attr_accessor :user_name, :session_name
|
10
|
+
|
11
|
+
argument :user_name, :type => :string, :default => "user"
|
12
|
+
argument :session_name, :type => :string, :default => "session"
|
13
|
+
|
14
|
+
|
15
|
+
def copy_files
|
16
|
+
template "models/user.rb", "app/models/#{user_singular_name}.rb"
|
17
|
+
template "models/authentication.rb", "app/models/authentication.rb"
|
18
|
+
|
19
|
+
template "controllers/users_controller.rb", "app/controllers/#{user_plural_name}_controller.rb"
|
20
|
+
template "controllers/settings_controller.rb", "app/controllers/settings_controller.rb"
|
21
|
+
template "controllers/sessions_controller.rb", "app/controllers/sessions_controller.rb"
|
22
|
+
template "controllers/confirmation_controller.rb", "app/controllers/confirmation_controller.rb"
|
23
|
+
template "controllers/application_controller.rb", "app/controllers/application_controller.rb"
|
24
|
+
|
25
|
+
template "mailers/confirmation_mailer.rb", "app/mailers/confirmation_mailer.rb"
|
26
|
+
|
27
|
+
template "views/confirmation/new_email_token.html.haml", "app/views/confirmation/new_email_token.html.haml"
|
28
|
+
template "views/confirmation/order_new_password.html.haml", "app/views/confirmation/order_new_password.html.haml"
|
29
|
+
template "views/confirmation/password_token.html.haml", "app/views/confirmation/password_token.html.haml"
|
30
|
+
template "views/confirmation/recover_password.html.haml", "app/views/confirmation/recover_password.html.haml"
|
31
|
+
template "views/confirmation/registration.html.haml", "app/views/confirmation/registration.html.haml"
|
32
|
+
template "views/confirmation/resend_signup_token.html.haml", "app/views/confirmation/resend_signup_token.html.haml"
|
33
|
+
template "views/confirmation/user_email.html.haml", "app/views/confirmation/user_email.html.haml"
|
34
|
+
|
35
|
+
template "views/confirmation_mailer/new_email_request.text.haml", "app/views/confirmation_mailer/new_email_request.text.haml"
|
36
|
+
template "views/confirmation_mailer/registration.text.haml", "app/views/confirmation_mailer/registration.text.haml"
|
37
|
+
template "views/confirmation_mailer/resend_signup_token.text.haml", "app/views/confirmation_mailer/resend_signup_token.text.haml"
|
38
|
+
template "views/confirmation_mailer/send_password_reset.text.haml", "app/views/confirmation_mailer/send_password_reset.text.haml"
|
39
|
+
|
40
|
+
template "views/sessions/new.html.haml", "app/views/sessions/new.html.haml"
|
41
|
+
template "views/settings/index.html.haml", "app/views/settings/index.html.haml"
|
42
|
+
template "views/users/new.html.haml", "app/views/users/new.html.haml"
|
43
|
+
|
44
|
+
# config, migrations & initializer
|
45
|
+
template "config/config.yml", "config/config.yml"
|
46
|
+
template "config/initializers/action_mailer.rb", "config/initializers/action_mailer.rb"
|
47
|
+
template "config/initializers/load_config.rb", "config/initializers/load_config.rb"
|
48
|
+
template "migrations/20120213162337_create_users.rb", "db/migrate/20120213162337_create_users.rb"
|
49
|
+
template "config/routes.rb", "config/routes.rb"
|
50
|
+
template "config/locales/en.yml", "config/locales/en.yml"
|
51
|
+
|
52
|
+
# tests
|
53
|
+
template "tests/spec/controllers/sessions_controller_spec.rb", "spec/controllers/sessions_controller_spec.rb"
|
54
|
+
template "tests/spec/controllers/users_controller_spec.rb", "spec/controllers/users_controller_spec.rb"
|
55
|
+
|
56
|
+
template "tests/spec/models/user_spec.rb", "spec/models/user_spec.rb"
|
57
|
+
template "tests/spec/requests/new_email_request_spec.rb", "spec/requests/new_email_request_spec.rb"
|
58
|
+
template "tests/spec/requests/password_resets_spec.rb", "spec/requests/password_resets_spec.rb"
|
59
|
+
template "tests/spec/requests/user_confirmation_spec.rb", "spec/requests/user_confirmation_spec.rb"
|
60
|
+
template "tests/spec/requests/user_sign_in_spec.rb", "spec/requests/user_sign_in_spec.rb"
|
61
|
+
template "tests/spec/requests/user_sign_up_spec.rb", "spec/requests/user_sign_up_spec.rb"
|
62
|
+
|
63
|
+
template "tests/spec/routing/confirmation_mailer_spec.rb", "spec/routing/confirmation_mailer_spec.rb"
|
64
|
+
|
65
|
+
template "tests/spec/support/mailer_macros.rb", "spec/support/mailer_macros.rb"
|
66
|
+
|
67
|
+
template "tests/spec/factories.rb", "spec/factories.rb"
|
68
|
+
template "tests/spec/spec_helper.rb", "spec/spec_helper.rb"
|
69
|
+
end
|
70
|
+
|
71
|
+
|
72
|
+
private
|
73
|
+
|
74
|
+
def user_singular_name
|
75
|
+
user_name.underscore
|
76
|
+
end
|
77
|
+
|
78
|
+
def user_plural_name
|
79
|
+
user_singular_name.pluralize
|
80
|
+
end
|
81
|
+
|
82
|
+
def user_class_name
|
83
|
+
user_name.camelize
|
84
|
+
end
|
85
|
+
|
86
|
+
def user_plural_class_name
|
87
|
+
user_plural_name.camelize
|
88
|
+
end
|
89
|
+
|
90
|
+
def session_singular_name
|
91
|
+
session_name.underscore
|
92
|
+
end
|
93
|
+
|
94
|
+
def session_plural_name
|
95
|
+
session_singular_name.pluralize
|
96
|
+
end
|
97
|
+
|
98
|
+
def session_class_name
|
99
|
+
session_name.camelize
|
100
|
+
end
|
101
|
+
|
102
|
+
def session_plural_class_name
|
103
|
+
session_plural_name.camelize
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
|
2
|
+
const: &const
|
3
|
+
|
4
|
+
mailers: &mailers
|
5
|
+
registration_mailer: &mailconfig
|
6
|
+
from: "outbox@projekt.wm2011.boyke.de"
|
7
|
+
|
8
|
+
development: &development
|
9
|
+
<<: *const
|
10
|
+
<<: *mailers
|
11
|
+
|
12
|
+
|
13
|
+
test:
|
14
|
+
<<: *development
|
15
|
+
|
16
|
+
cucumber:
|
17
|
+
<<: *development
|
18
|
+
|
19
|
+
production:
|
20
|
+
<<: *const
|
21
|
+
<<: *mailers
|
22
|
+
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# Email settings
|
2
|
+
|
3
|
+
if Rails.env == "production"
|
4
|
+
ActionMailer::Base.delivery_method = :smtp
|
5
|
+
ActionMailer::Base.raise_delivery_errors = true
|
6
|
+
ActionMailer::Base.perform_deliveries = true
|
7
|
+
ActionMailer::Base.smtp_settings = {
|
8
|
+
:address => "smtp.1und1.de",
|
9
|
+
:port => 25,
|
10
|
+
:domain => 'projekt1.wm2011.boyke.de',
|
11
|
+
:authentication => :plain,
|
12
|
+
:enable_starttls_auto => true,
|
13
|
+
:user_name => "outbox@projekt.wm2011.boyke.de",
|
14
|
+
:password => "xwm2011x"
|
15
|
+
}
|
16
|
+
end
|
17
|
+
|
18
|
+
if Rails.env == "development"
|
19
|
+
ActionMailer::Base.delivery_method = :smtp
|
20
|
+
ActionMailer::Base.raise_delivery_errors = true
|
21
|
+
ActionMailer::Base.perform_deliveries = false
|
22
|
+
ActionMailer::Base.smtp_settings = {
|
23
|
+
:address => "smtp.1und1.de",
|
24
|
+
:port => 25,
|
25
|
+
:domain => 'projekt2.wm2011.boyke.de',
|
26
|
+
:authentication => :plain,
|
27
|
+
:enable_starttls_auto => true,
|
28
|
+
:user_name => "outbox@projekt.wm2011.boyke.de",
|
29
|
+
:password => "xwm2011x"
|
30
|
+
}
|
31
|
+
end
|
32
|
+
|
33
|
+
if Rails.env == "test"
|
34
|
+
ActionMailer::Base.perform_deliveries = true
|
35
|
+
ActionMailer::Base.smtp_settings = {
|
36
|
+
:openssl_verify_mode => 'none'
|
37
|
+
}
|
38
|
+
end
|
39
|
+
|
40
|
+
if ActionMailer::Base.delivery_method == :smtp and ActionMailer::Base.smtp_settings.has_key?(:pop3_auth)
|
41
|
+
class ActionMailer::Base
|
42
|
+
alias_method :base_perform_delivery_smtp, :perform_delivery_smtp
|
43
|
+
@@pop3_auth_done = nil
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def perform_delivery_smtp(mail)
|
48
|
+
do_pop_auth if !@@pop3_auth_done or (Time.now - smtp_settings[:pop3_auth][:expires]) >= @@pop3_auth_done
|
49
|
+
base_perform_delivery_smtp(mail)
|
50
|
+
end
|
51
|
+
|
52
|
+
def do_pop_auth
|
53
|
+
require 'net/pop'
|
54
|
+
pop = Net::POP3.new(smtp_settings[:pop3_auth][:server])
|
55
|
+
pop.start(smtp_settings[:pop3_auth][:user_name], smtp_settings[:pop3_auth][:password])
|
56
|
+
@@pop3_auth_done = Time.now
|
57
|
+
pop.finish
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# Sample localization file for English. Add more files in this directory for other locales.
|
2
|
+
# See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
|
3
|
+
|
4
|
+
en:
|
5
|
+
fe:
|
6
|
+
common:
|
7
|
+
button:
|
8
|
+
send: 'Send'
|
9
|
+
user:
|
10
|
+
new:
|
11
|
+
title: 'Register'
|
12
|
+
label_email: 'Email'
|
13
|
+
label_password: 'Password'
|
14
|
+
label_password_confirmation: 'Password Confirmation'
|
15
|
+
create:
|
16
|
+
flash:
|
17
|
+
success: "Ihnen wurde eine Mail geschickt"
|
18
|
+
error: "Fehler in der Eingabe"
|
19
|
+
|
20
|
+
session:
|
21
|
+
new:
|
22
|
+
title: 'Login'
|
23
|
+
label_email: 'Email'
|
24
|
+
label_password: 'Password'
|
25
|
+
create:
|
26
|
+
flash:
|
27
|
+
success: "Eingeloggt, hurra!"
|
28
|
+
error:
|
29
|
+
not_confirmed: "Bitte erst die Registrierung bestätigen."
|
30
|
+
wrong_password_or_email: "Falsche Mail oder Password"
|
31
|
+
|
32
|
+
|
33
|
+
confirmation:
|
34
|
+
order_new_password:
|
35
|
+
flash:
|
36
|
+
success: 'Es wurde eine Email mit Passwort versendet'
|
37
|
+
registration:
|
38
|
+
flash:
|
39
|
+
success: 'Endlich richtig dabei.'
|
40
|
+
error: 'falscher token'
|
41
|
+
resend_signup_token:
|
42
|
+
flash:
|
43
|
+
success: "Token wurde nochmal gesendet"
|
44
|
+
error: "Sie sind schon freigeschaltet. Was soll das?"
|
45
|
+
|
46
|
+
confirmation_mailer:
|
47
|
+
send_password_reset:
|
48
|
+
subject: 'Neues Passwort angefordert'
|
49
|
+
registration:
|
50
|
+
subject: 'Bitte Anmeldung bestätigen'
|
51
|
+
resend_signup_token:
|
52
|
+
subject: 'Neuer Registrierungstoken'
|
@@ -0,0 +1,29 @@
|
|
1
|
+
Wrkplc::Application.routes.draw do
|
2
|
+
default_url_options :host => "localhost:3000"
|
3
|
+
|
4
|
+
get "log_out" => "sessions#destroy", :as => "log_out"
|
5
|
+
get "registrieren" => "users#new", :as => "sign_up_form"
|
6
|
+
post "sign_up" => "users#create", :as => "sign_up"
|
7
|
+
|
8
|
+
match 'confirm/resend_confirmation' => "confirmation#resend_signup_token", :as => 'resend_signup_token'
|
9
|
+
match 'confirm/:action(/:token)', :controller => :confirmation, :as => 'confirm'
|
10
|
+
|
11
|
+
|
12
|
+
match "log_in" => "sessions#new", :as => "log_in", :via => :get
|
13
|
+
match "log_in" => "sessions#create", :as => "log_in", :via => :post
|
14
|
+
|
15
|
+
get 'recover_password_auth(/:token)' => "confirmation#recover_password_auth", :as => 'recover_password_auth'
|
16
|
+
match 'recover_password(/:token)' => "confirmation#recover_password", :as => 'recover_password'
|
17
|
+
|
18
|
+
match 'new_email(/:token)' => "confirmation#new_email", :as => 'new_email'
|
19
|
+
|
20
|
+
match 'request_password' => "confirmation#order_new_password", :as => 'order_new_password'
|
21
|
+
|
22
|
+
match 'notice' => 'application#notice', :as => 'notice'
|
23
|
+
|
24
|
+
root :to => "users#new"
|
25
|
+
|
26
|
+
resources :users
|
27
|
+
resources :sessions
|
28
|
+
match '/:controller(/:action(/:id))'
|
29
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
class ConfirmationController < ApplicationController
|
2
|
+
|
3
|
+
def registration
|
4
|
+
@user = User.where( :signup_token => params[:token] ).first unless params[:token].nil?
|
5
|
+
|
6
|
+
if @user
|
7
|
+
@user.confirm_signup!
|
8
|
+
redirect_to log_in_path, :notice => t( 'fe.confirmation.registration.flash.success' )
|
9
|
+
end
|
10
|
+
|
11
|
+
flash[:error] = t( 'fe.confirmation.registration.flash.error') if params[:token]
|
12
|
+
end
|
13
|
+
|
14
|
+
def resend_signup_token
|
15
|
+
@user = User.authenticate( params[:email], params[:password] )
|
16
|
+
if @user
|
17
|
+
if @user.resend_signup_token
|
18
|
+
flash[:notice] = t( 'fe.confirmation.resend_signup_token.flash.success' )
|
19
|
+
else
|
20
|
+
flash[:notice] = t( 'fe.confirmation.resend_signup_token.flash.error' )
|
21
|
+
end
|
22
|
+
redirect_to log_in_path
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def order_new_password
|
27
|
+
if params[:email]
|
28
|
+
@user = User.where( :email => params[:email] ).first
|
29
|
+
if @user && @user.send_password_reset
|
30
|
+
flash[:notice] = t( 'fe.confirmation.order_new_password.flash.success' )
|
31
|
+
end
|
32
|
+
redirect_to root_path
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
#
|
37
|
+
# Aufruf des Links, der in der E-Mail steht, wenn man ein neues Passwort anfordert
|
38
|
+
#
|
39
|
+
|
40
|
+
def recover_password_auth
|
41
|
+
@user = User.find_by_password_token( params[:token] ) unless params[:token].nil?
|
42
|
+
render @user ? :recover_password : :password_token
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
def recover_password
|
47
|
+
@token = params[:token]
|
48
|
+
@user = User.find_by_password_token( params[:token] ) unless params[:token].nil?
|
49
|
+
|
50
|
+
if @user
|
51
|
+
if !params[:recover_password].nil? && params[:recover_password_confirmation] == params[:recover_password]
|
52
|
+
if @user.confirm_password!(params[:recover_password])
|
53
|
+
redirect_to( log_in_path, :notice => t( 'fe.confirmation.recover_password.flash_success' ))
|
54
|
+
else
|
55
|
+
flash.now[:notice] = t( 'fe.confirmation.recover_password.flash_error' )
|
56
|
+
end
|
57
|
+
end
|
58
|
+
else
|
59
|
+
redirect_to recover_password_auth_path
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
def new_email
|
65
|
+
@user = User.find_by_new_email_token( params[:token] ) unless params[:token].nil?
|
66
|
+
if @user
|
67
|
+
if @user.confirm_new_email!
|
68
|
+
redirect_to( log_in_path, :notice => t( 'fe.confirmation.new_email.flash_success' ))
|
69
|
+
else
|
70
|
+
flash[:notice] = t( 'fe.confirmation.new_email.flash_error' )
|
71
|
+
end
|
72
|
+
else
|
73
|
+
render :new_email_token
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
|
80
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class SessionsController < ApplicationController
|
2
|
+
def new
|
3
|
+
end
|
4
|
+
|
5
|
+
def create
|
6
|
+
@user = User.authenticate(params[:email], params[:password])
|
7
|
+
if @user
|
8
|
+
if @user.confirmed?
|
9
|
+
session[:user_id] = @user.id
|
10
|
+
redirect_to root_url, :notice => t( 'fe.session.create.flash.success' )
|
11
|
+
else
|
12
|
+
redirect_to confirm_path( :action => "registration" ), :notice => t( 'fe.session.create.flash.error.not_confirmed' )
|
13
|
+
end
|
14
|
+
else
|
15
|
+
flash.now.alert = t( 'fe.session.create.flash.error.wrong_password_or_email' )
|
16
|
+
render :new
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def destroy
|
21
|
+
session[:user_id] = nil
|
22
|
+
redirect_to root_url, :notice => 'ausgeloggt'
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
class SettingsController < ApplicationController
|
2
|
+
|
3
|
+
def index
|
4
|
+
@user = User.new
|
5
|
+
end
|
6
|
+
|
7
|
+
def change_user_email
|
8
|
+
email_updated = false
|
9
|
+
@user = current_user
|
10
|
+
|
11
|
+
flash.now[:notice] = t( 'fe.settings.change_user_email.flash_error' )
|
12
|
+
|
13
|
+
if User.authenticate( current_user.email, params[:user][:password] )
|
14
|
+
current_user.set_new_email = true
|
15
|
+
current_user.new_email = params[:user][:new_email]
|
16
|
+
current_user.new_email_confirmation = params[:user][:new_email_confirmation]
|
17
|
+
if current_user.send_new_email( params[:user][:new_email] )
|
18
|
+
email_updated = true
|
19
|
+
end
|
20
|
+
else
|
21
|
+
flash.now[:notice] = t( "fe.settings.update_email.flash.error.wrong_password" )
|
22
|
+
end
|
23
|
+
|
24
|
+
if email_updated
|
25
|
+
flash.now[:notice] = t( "fe.settings.update_email.flash.success" )
|
26
|
+
redirect_to "/settings"
|
27
|
+
else
|
28
|
+
render :index
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
class UsersController < ApplicationController
|
2
|
+
|
3
|
+
def new
|
4
|
+
@user = User.new
|
5
|
+
end
|
6
|
+
|
7
|
+
def create
|
8
|
+
@user = User.new(params[:user])
|
9
|
+
|
10
|
+
# password(_confirmation) removed from mass assignment
|
11
|
+
@user.password = params[:user][:password]
|
12
|
+
@user.password_confirmation = params[:user][:password_confirmation]
|
13
|
+
|
14
|
+
if @user.save
|
15
|
+
redirect_to root_url, :notice => t( 'fe.user.create.flash.success' )
|
16
|
+
@user.send_registration
|
17
|
+
else
|
18
|
+
flash.now[:error] = t( 'fe.user.create.flash.error' )
|
19
|
+
render :new
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
class ConfirmationMailer < ActionMailer::Base
|
2
|
+
|
3
|
+
helper :application
|
4
|
+
|
5
|
+
default :from => APP_CONFIG['registration_mailer']['from']
|
6
|
+
|
7
|
+
def registration( user )
|
8
|
+
@user = user
|
9
|
+
@confirmation_url = confirm_url( user.signup_token )
|
10
|
+
mail( :to => user.email, :subject => t( 'confirmation_mailer.registration.subject' ))
|
11
|
+
end
|
12
|
+
|
13
|
+
def resend_signup_token( user )
|
14
|
+
@user = user
|
15
|
+
@confirmation_url = confirm_url( :registration, @user.signup_token )
|
16
|
+
mail( :to => user.email, :subject => t( 'confirmation_mailer.resend_signup_token.subject' ))
|
17
|
+
end
|
18
|
+
|
19
|
+
def send_password_reset( user )
|
20
|
+
@confirmation_url = recover_password_url( user.password_token )
|
21
|
+
mail( :to => user.email, :subject => t( 'confirmation_mailer.send_password_reset.subject' ))
|
22
|
+
end
|
23
|
+
|
24
|
+
def new_email_request( user )
|
25
|
+
@user = user
|
26
|
+
@confirmation_url = new_email_url( @user.new_email_token )
|
27
|
+
mail( :to => @user.new_email, :subject => t( 'confirmation_mailer.new_email_request.subject' ))
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class CreateUsers < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :users do |t|
|
4
|
+
t.string :email
|
5
|
+
t.string :password_hash
|
6
|
+
t.string :password_salt
|
7
|
+
t.string :signup_token
|
8
|
+
t.string :password_token
|
9
|
+
t.string :new_email
|
10
|
+
t.string :new_email_token
|
11
|
+
t.datetime :confirmed, :null => true
|
12
|
+
t.timestamps
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# This module is included in your application controller which makes
|
2
|
+
# several methods available to all controllers and views. Here's a
|
3
|
+
# common example you might add to your application layout file.
|
4
|
+
#
|
5
|
+
# user_nav
|
6
|
+
#
|
7
|
+
# - if current_user
|
8
|
+
# = "Logged in as #{current_user.email}. "
|
9
|
+
# = link_to "Log out", log_out_path
|
10
|
+
# - else
|
11
|
+
# = link_to "Registrieren", sign_up_form_path
|
12
|
+
# = " or "
|
13
|
+
# = link_to "Anmelden", log_in_path
|
14
|
+
#
|
15
|
+
#
|
16
|
+
# - [:notice, :error, :success].each do |key|
|
17
|
+
# - unless flash[key].blank?
|
18
|
+
# %p{ :class => "flash #{key}" }= flash[key]
|
19
|
+
#
|
20
|
+
|
21
|
+
module Authentication
|
22
|
+
|
23
|
+
def self.included(controller)
|
24
|
+
controller.send :helper_method, :current_user
|
25
|
+
end
|
26
|
+
|
27
|
+
def current_user
|
28
|
+
@current_user ||= User.find(session[:user_id]) if session[:user_id]
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
|