lobby 0.0.1a

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.
Files changed (116) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +3 -0
  3. data/Rakefile +34 -0
  4. data/app/assets/javascripts/lobby/application.js +13 -0
  5. data/app/assets/stylesheets/lobby/application.css +13 -0
  6. data/app/controllers/lobby/application_controller.rb +3 -0
  7. data/app/controllers/lobby/application_controller.rb~ +6 -0
  8. data/app/controllers/lobby/confirmation_controller.rb +46 -0
  9. data/app/controllers/lobby/confirmation_controller.rb~ +44 -0
  10. data/app/controllers/lobby/password_forgotten_controller.rb +48 -0
  11. data/app/controllers/lobby/password_forgotten_controller.rb~ +48 -0
  12. data/app/controllers/lobby/sessions_controller.rb +33 -0
  13. data/app/controllers/lobby/sessions_controller.rb~ +33 -0
  14. data/app/controllers/lobby/users_controller.rb +23 -0
  15. data/app/controllers/lobby/users_controller.rb~ +23 -0
  16. data/app/forms/password_forgotten_form.rb +5 -0
  17. data/app/forms/password_forgotten_form.rb~ +5 -0
  18. data/app/helpers/lobby/application_helper.rb +4 -0
  19. data/app/mailers/confirmation_mailer.rb +30 -0
  20. data/app/mailers/confirmation_mailer.rb~ +28 -0
  21. data/app/models/auth_user.rb~ +100 -0
  22. data/app/models/authentication.rb~ +13 -0
  23. data/app/models/lobby/auth_user.rb +100 -0
  24. data/app/models/lobby/auth_user.rb~ +100 -0
  25. data/app/models/lobby/authentication.rb +13 -0
  26. data/app/models/lobby/password_forgotten_form_abstract.rb +47 -0
  27. data/app/models/password_forgotten_form_abstract.rb~ +45 -0
  28. data/app/views/layouts/lobby/application.html.erb +14 -0
  29. data/app/views/sessions/new.html.haml +19 -0
  30. data/app/views/sessions/new.html.haml~ +0 -0
  31. data/config/locales/de.yml +529 -0
  32. data/config/locales/de.yml~ +529 -0
  33. data/config/locales/en.bootstrap.yml +18 -0
  34. data/config/locales/en.yml +532 -0
  35. data/config/locales/en.yml~ +530 -0
  36. data/config/routes.rb +21 -0
  37. data/config/routes.rb~ +23 -0
  38. data/db/migrate/20131205180849_create_users.rb +16 -0
  39. data/db/migrate/20131205180849_create_users.rb~ +16 -0
  40. data/lib/lobby/engine.rb +7 -0
  41. data/lib/lobby/engine.rb~ +5 -0
  42. data/lib/lobby/version.rb +3 -0
  43. data/lib/lobby/version.rb~ +3 -0
  44. data/lib/lobby.rb +4 -0
  45. data/lib/tasks/lobby_tasks.rake +4 -0
  46. data/test/dummy/README.rdoc +28 -0
  47. data/test/dummy/Rakefile +6 -0
  48. data/test/dummy/app/assets/javascripts/application.js +13 -0
  49. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  50. data/test/dummy/app/controllers/application_controller.rb +6 -0
  51. data/test/dummy/app/controllers/application_controller.rb~ +5 -0
  52. data/test/dummy/app/helpers/application_helper.rb +2 -0
  53. data/test/dummy/app/models/user.rb +30 -0
  54. data/test/dummy/app/models/user.rb~ +30 -0
  55. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  56. data/test/dummy/app/views/lobby/common/_form_errors.html.haml +6 -0
  57. data/test/dummy/app/views/lobby/confirmation/new_email_token.html.haml +10 -0
  58. data/test/dummy/app/views/lobby/confirmation/registration.html.haml +15 -0
  59. data/test/dummy/app/views/lobby/confirmation/registration.html.haml~ +15 -0
  60. data/test/dummy/app/views/lobby/confirmation/resend_signup_token.html.haml +17 -0
  61. data/test/dummy/app/views/lobby/confirmation/resend_signup_token.html.haml~ +17 -0
  62. data/test/dummy/app/views/lobby/confirmation/user_email.html.haml +0 -0
  63. data/test/dummy/app/views/lobby/confirmation_mailer/new_email_request.text.haml +1 -0
  64. data/test/dummy/app/views/lobby/confirmation_mailer/registration.text.haml +1 -0
  65. data/test/dummy/app/views/lobby/confirmation_mailer/resend_signup_token.text.haml +1 -0
  66. data/test/dummy/app/views/lobby/confirmation_mailer/send_password_reset.text.haml +1 -0
  67. data/test/dummy/app/views/lobby/password_forgotten/new.html.haml +21 -0
  68. data/test/dummy/app/views/lobby/password_forgotten/new.html.haml~ +21 -0
  69. data/test/dummy/app/views/lobby/password_forgotten/order_new_password.html.haml +13 -0
  70. data/test/dummy/app/views/lobby/password_forgotten/order_new_password.html.haml~ +13 -0
  71. data/test/dummy/app/views/lobby/password_forgotten/recover_password_auth.html.haml +9 -0
  72. data/test/dummy/app/views/lobby/sessions/new.html.haml +12 -0
  73. data/test/dummy/app/views/lobby/sessions/new.html.haml~ +12 -0
  74. data/test/dummy/app/views/lobby/users/new.html.haml +20 -0
  75. data/test/dummy/app/views/lobby/users/new.html.haml~ +20 -0
  76. data/test/dummy/bin/bundle +3 -0
  77. data/test/dummy/bin/rails +4 -0
  78. data/test/dummy/bin/rake +4 -0
  79. data/test/dummy/config/app_config.yml +31 -0
  80. data/test/dummy/config/application.rb +23 -0
  81. data/test/dummy/config/boot.rb +5 -0
  82. data/test/dummy/config/database.yml +25 -0
  83. data/test/dummy/config/environment.rb +5 -0
  84. data/test/dummy/config/environments/development.rb +29 -0
  85. data/test/dummy/config/environments/production.rb +80 -0
  86. data/test/dummy/config/environments/test.rb +36 -0
  87. data/test/dummy/config/initializers/action_mailer.rb +75 -0
  88. data/test/dummy/config/initializers/action_mailer.rb~ +75 -0
  89. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  90. data/test/dummy/config/initializers/constants.rb +1 -0
  91. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  92. data/test/dummy/config/initializers/inflections.rb +16 -0
  93. data/test/dummy/config/initializers/load_app_config.rb +3 -0
  94. data/test/dummy/config/initializers/mime_types.rb +5 -0
  95. data/test/dummy/config/initializers/secret_token.rb +12 -0
  96. data/test/dummy/config/initializers/session_store.rb +3 -0
  97. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  98. data/test/dummy/config/locales/en.yml +23 -0
  99. data/test/dummy/config/routes.rb +4 -0
  100. data/test/dummy/config.ru +4 -0
  101. data/test/dummy/db/development.sqlite3 +0 -0
  102. data/test/dummy/log/development.log +10657 -0
  103. data/test/dummy/public/404.html +58 -0
  104. data/test/dummy/public/422.html +58 -0
  105. data/test/dummy/public/500.html +57 -0
  106. data/test/dummy/public/favicon.ico +0 -0
  107. data/test/dummy/tmp/cache/assets/development/sprockets/14bc37f3a9c398f6798dd6a37b000ced +0 -0
  108. data/test/dummy/tmp/cache/assets/development/sprockets/940a306c051fc9ecf6ca85c072fac574 +0 -0
  109. data/test/dummy/tmp/cache/assets/development/sprockets/959f475481f39907c5c22136d3ad0b02 +0 -0
  110. data/test/dummy/tmp/cache/assets/development/sprockets/c4adbd06827a23aa54492fb7cb615529 +0 -0
  111. data/test/dummy/tmp/cache/assets/development/sprockets/c615a56268b779cf1f55f9134c8ae04e +0 -0
  112. data/test/dummy/tmp/cache/assets/development/sprockets/e4cc9c240851fac0c22ef37d0ee2fb62 +0 -0
  113. data/test/integration/navigation_test.rb +10 -0
  114. data/test/lobby_test.rb +7 -0
  115. data/test/test_helper.rb +15 -0
  116. metadata +294 -0
@@ -0,0 +1,100 @@
1
+ module Lobby
2
+ module AuthUser
3
+
4
+ def self.included(base)
5
+ base.has_secure_password
6
+
7
+ base.validates :email, presence: true
8
+ base.validates :email, format: {with: EMAIL_REGEX, multiline: true}, if: Proc.new { |u| u.email.present? }
9
+ base.validates :email, uniqueness: true, :unless => :confirmed_duplicate, :on => :create, if: Proc.new { |u| u.email.present? }
10
+ base.validates :password, length: { minimum: 5 }, :on => :create, if: Proc.new { |u| u.password.present? }
11
+
12
+ base.extend ClassMethods
13
+ end
14
+
15
+
16
+ module ClassMethods
17
+ def confirmed
18
+ where("confirmed IS NOT NULL")
19
+ end
20
+
21
+ def with_email(email)
22
+ where(:email => email)
23
+ end
24
+
25
+ end
26
+
27
+
28
+ def confirmed_duplicate(test_mail = self.email)
29
+ if ((self.class.name.constantize.confirmed.with_email(test_mail).count == 0) ||
30
+ (self.class.name.constantize.with_email(test_mail).count == 0))
31
+ true
32
+ else
33
+ #self.id = self.class.name.constantize.confirmed.with_email(test_mail).first.id
34
+ false
35
+ end
36
+ end
37
+
38
+ def confirm_signup!
39
+ update_attribute(:confirmed, Time.now)
40
+ update_attribute(:signup_token, nil)
41
+ update_attribute(:active, true)
42
+ end
43
+
44
+ def confirm_new_email!
45
+ update_attribute(:email, new_email)
46
+ update_attribute(:new_email_token, nil)
47
+ end
48
+
49
+ def confirmed?
50
+ !self.confirmed.nil?
51
+ end
52
+
53
+ def active?
54
+ self.active == true
55
+ end
56
+
57
+ # Wenn der User sich registriert, dann wird ein signup_token für ihn hinterlegt.
58
+ # Dieser Token wird per Mail verschickt. Der User kann sich nun per Klick auf den
59
+ # Tokenlink verifizieren. Sollte die Mail nicht mehr erreichbar sein, so kann der User
60
+ # unter Angabe seiner Email einen neuen signup_Token anfordern. Der alte Token ist
61
+ # ab diesem Zeitpunkt ungültig.
62
+
63
+ # Nach erfolgreicher Verifizierung der Email-Adresse) wird das
64
+ # Feld confirmed mit einem Datum gefüllt. Ab diesem Zeitpunkt kann keine neuer
65
+ # Confirmation-Token generiert und verschickt werden.
66
+
67
+ def tokenmail(request)
68
+ ConfirmationMailer.send(request, self).deliver
69
+ end
70
+
71
+ def send_password_reset(with_mail = true)
72
+ return unless generate_token(:password_token)
73
+ if with_mail
74
+ tokenmail(:send_password_reset)
75
+ end
76
+ end
77
+
78
+ def send_registration
79
+ return unless generate_token(:signup_token)
80
+ tokenmail(:registration)
81
+ end
82
+
83
+ def resend_signup_token
84
+ return unless (!confirmed? && generate_token(:signup_token))
85
+ tokenmail(:resend_signup_token)
86
+ end
87
+
88
+ def send_new_email_request
89
+ return unless (confirmed? && generate_token(:new_email_token))
90
+ tokenmail(:new_email_request)
91
+ end
92
+
93
+
94
+ private
95
+
96
+ def generate_token( token )
97
+ (defined?( token ) && update_attribute( token, SecureRandom.hex(13) ))? true : false
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,100 @@
1
+ module Lobby
2
+ module AuthUser
3
+
4
+ def self.included(base)
5
+ base.has_secure_password
6
+
7
+ base.validates :email, presence: true
8
+ base.validates :email, format: {with: EMAIL_REGEX, multiline: true}, if: Proc.new { |u| u.email.present? }
9
+ base.validates :email, uniqueness: true, :unless => :confirmed_duplicate, :on => :create, if: Proc.new { |u| u.email.present? }
10
+ base.validates :password, length: { minimum: 5 }, :on => :create, if: Proc.new { |u| u.password.present? }
11
+
12
+ base.extend ClassMethods
13
+ end
14
+
15
+
16
+ module ClassMethods
17
+ def confirmed
18
+ where("confirmed IS NOT NULL")
19
+ end
20
+
21
+ def with_email(email)
22
+ where(:email => email)
23
+ end
24
+
25
+ end
26
+
27
+
28
+ def confirmed_duplicate(test_mail = self.email)
29
+ if ((self.class.name.constantize.confirmed.with_email(test_mail).count == 0) ||
30
+ (self.class.name.constantize.with_email(test_mail).count == 0))
31
+ true
32
+ else
33
+ #self.id = self.class.name.constantize.confirmed.with_email(test_mail).first.id
34
+ false
35
+ end
36
+ end
37
+
38
+ def confirm_signup!
39
+ update_attribute(:confirmed, Time.now)
40
+ update_attribute(:signup_token, nil)
41
+ update_attribute(:active, true)
42
+ end
43
+
44
+ def confirm_new_email!
45
+ update_attribute(:email, new_email)
46
+ update_attribute(:new_email_token, nil)
47
+ end
48
+
49
+ def confirmed?
50
+ !self.confirmed.nil?
51
+ end
52
+
53
+ def active?
54
+ self.active == true
55
+ end
56
+
57
+ # Wenn der User sich registriert, dann wird ein signup_token für ihn hinterlegt.
58
+ # Dieser Token wird per Mail verschickt. Der User kann sich nun per Klick auf den
59
+ # Tokenlink verifizieren. Sollte die Mail nicht mehr erreichbar sein, so kann der User
60
+ # unter Angabe seiner Email einen neuen signup_Token anfordern. Der alte Token ist
61
+ # ab diesem Zeitpunkt ungültig.
62
+
63
+ # Nach erfolgreicher Verifizierung der Email-Adresse) wird das
64
+ # Feld confirmed mit einem Datum gefüllt. Ab diesem Zeitpunkt kann keine neuer
65
+ # Confirmation-Token generiert und verschickt werden.
66
+
67
+ def tokenmail(request)
68
+ Lobby::ConfirmationMailer.send(request, self).deliver
69
+ end
70
+
71
+ def send_password_reset(with_mail = true)
72
+ return unless generate_token(:password_token)
73
+ if with_mail
74
+ tokenmail(:send_password_reset)
75
+ end
76
+ end
77
+
78
+ def send_registration
79
+ return unless generate_token(:signup_token)
80
+ tokenmail(:registration)
81
+ end
82
+
83
+ def resend_signup_token
84
+ return unless (!confirmed? && generate_token(:signup_token))
85
+ tokenmail(:resend_signup_token)
86
+ end
87
+
88
+ def send_new_email_request
89
+ return unless (confirmed? && generate_token(:new_email_token))
90
+ tokenmail(:new_email_request)
91
+ end
92
+
93
+
94
+ private
95
+
96
+ def generate_token( token )
97
+ (defined?( token ) && update_attribute( token, SecureRandom.hex(13) ))? true : false
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,13 @@
1
+ module Lobby
2
+ module Authentication
3
+
4
+ def self.included(controller)
5
+ controller.send :helper_method, :current_user
6
+ end
7
+
8
+ def current_user
9
+ @current_user ||= User.find(session[:user_id]) if session[:user_id]
10
+ end
11
+
12
+ end
13
+ end
@@ -0,0 +1,47 @@
1
+ module Lobby
2
+ class PasswordForgottenFormAbstract
3
+ include ActiveModel::Model
4
+
5
+ attr_accessor :new_password
6
+
7
+ validates :new_password, length: { minimum: 5 }
8
+ validates :new_password, confirmation: true
9
+
10
+ USER_CLASS = "User"
11
+
12
+ def user_class
13
+ proc{ self.class::USER_CLASS.constantize}.call
14
+ end
15
+
16
+ def user_object
17
+ @user_object ||= (@token.present?)? user_class.where(password_token: @token).first : nil
18
+ end
19
+
20
+ def initialize(token)
21
+ @token = token
22
+ end
23
+
24
+ def submit(params)
25
+ self.new_password = params[:new_password]
26
+ self.new_password_confirmation = params[:new_password_confirmation]
27
+
28
+ if valid?
29
+ user_object.password = new_password
30
+ user_object.password_confirmation = new_password_confirmation
31
+ user_object.password_token = nil
32
+ user_object.save!
33
+ true
34
+ else
35
+ false
36
+ end
37
+ end
38
+
39
+ def method_missing(m, *args, &block)
40
+ if m == self.user_class.name.downcase.to_sym
41
+ send("user_object")
42
+ else
43
+ super
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,45 @@
1
+ class PasswordForgottenFormAbstract
2
+ include ActiveModel::Model
3
+
4
+ attr_accessor :new_password
5
+
6
+ validates :new_password, length: { minimum: 5 }
7
+ validates :new_password, confirmation: true
8
+
9
+ USER_CLASS = "User"
10
+
11
+ def user_class
12
+ proc{ self.class::USER_CLASS.constantize}.call
13
+ end
14
+
15
+ def user_object
16
+ @user_object ||= (@token.present?)? user_class.where(password_token: @token).first : nil
17
+ end
18
+
19
+ def initialize(token)
20
+ @token = token
21
+ end
22
+
23
+ def submit(params)
24
+ self.new_password = params[:new_password]
25
+ self.new_password_confirmation = params[:new_password_confirmation]
26
+
27
+ if valid?
28
+ user_object.password = new_password
29
+ user_object.password_confirmation = new_password_confirmation
30
+ user_object.password_token = nil
31
+ user_object.save!
32
+ true
33
+ else
34
+ false
35
+ end
36
+ end
37
+
38
+ def method_missing(m, *args, &block)
39
+ if m == self.user_class.name.downcase.to_sym
40
+ send("user_object")
41
+ else
42
+ super
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Lobby</title>
5
+ <%= stylesheet_link_tag "lobby/application", media: "all" %>
6
+ <%= javascript_include_tag "lobby/application" %>
7
+ <%= csrf_meta_tags %>
8
+ </head>
9
+ <body>
10
+
11
+ <%= yield %>
12
+
13
+ </body>
14
+ </html>
@@ -0,0 +1,19 @@
1
+ %main
2
+ %page-header
3
+ %h1
4
+ = t '.title'
5
+ .page-main
6
+
7
+ = form_tag log_in_url, :id => "loginform" do
8
+ %fieldset
9
+ .row
10
+ .col-lg-6
11
+ .form-group
12
+ = text_field_tag :email, params[:email], :class => "form-control", :placeholder => t( '.label_email' ), :id => 'email'
13
+ .form-group
14
+ = password_field_tag :password, nil, :class => "form-control", :placeholder => t( '.label_password' ), :id => 'inputPassword'
15
+ .form-group
16
+ = link_to "Passwort vergessen?", order_new_password_path, :id => 'password_forgotten_link'
17
+
18
+ .form-actions
19
+ = submit_tag(t( 'common.button.send' ), :id => 'log_in_button', :class => 'btn btn-primary')
File without changes