user_authentication 0.0.9 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c0771aa4338882aa29e939ae140e6e8ada1c3657
4
- data.tar.gz: e9da8225270fdb650182d2ef831fbb9abb82d511
3
+ metadata.gz: ffb87963dca325931b4e2c6dff618271efbd2d47
4
+ data.tar.gz: 6236635ec627f6096717abaa7d272fca85a5329f
5
5
  SHA512:
6
- metadata.gz: f6690895ae172015719d53c1fb06468fd16c41cb6e8b5ff4fcd9fb20d7837d5635f2956b090d2f3d312319b410fbb50ce1e06265efd15a200b10dfbe1585779e
7
- data.tar.gz: 3635aa3ded98da7f7d8cba087431b12bb67ef6e1e8d7efe0fddaadfb363f14d9c6b9dca6ae7b68df9d34c44a83c47490750cce43852c5a4bec0d21b71013011d
6
+ metadata.gz: 901e26a4ca310b42d4b8d74bf8328923f73dca947b9b08cbf93daf5aa159423abfbd07f830721338ccec8ddf7b93d558b831ee82e88887dc05fc049a7b55b7c8
7
+ data.tar.gz: e21a2c29d3c4eb32fa9554d323b780d2bdad7a9a4eb606c8fbb209db0c75671545fea0cf26d02c731ae6cd9dd588dc11236b6bfbbe5ac0d7047f8b14df472d8b
@@ -19,7 +19,12 @@ class ApplicationController < ActionController::Base
19
19
  end
20
20
 
21
21
  def set_current_user
22
- @current_user ||= User.find(session[:user_id]) if session[:user_id]
22
+ if session[:user_id].nil?
23
+ @current_user = nil
24
+ elsif @current_user.nil? || @current_user.id != session[:user_id]
25
+ @current_user = User.find session[:user_id]
26
+ end
27
+
23
28
  true
24
29
  end
25
30
  end
@@ -1,19 +1,50 @@
1
+ controller = File.join Rails.root, 'app/controllers/users_controller.rb'
2
+ require controller if File.exists? controller
3
+
1
4
  class UsersController < ApplicationController
2
5
  def login
3
6
  user = User.find_by_email params[:email]
4
7
  if user && user.authenticate(params[:password])
5
8
  session[:user_id] = user.id
6
- redirect_to session.delete(:return_to) || root_path
9
+ set_current_user
10
+
11
+ if respond_to? :on_login
12
+ on_login
13
+ else
14
+ redirect_to :back
15
+ end
7
16
  else
8
- redirect_to root_path, alert: "Please check email and password."
17
+ redirect_to :back, alert: 'Please check email and password.'
9
18
  end
10
19
  end
11
20
 
12
21
  def logout
13
- session.delete :return_to
14
22
  session.delete :user_id
23
+ set_current_user
15
24
 
16
- redirect_to root_path
25
+ if respond_to? :on_logout
26
+ on_logout
27
+ else
28
+ redirect_to :back
29
+ end
17
30
  end
18
- end
19
31
 
32
+ def signup
33
+ user = User.new
34
+ user.email = params[:email]
35
+ user.password = params[:password]
36
+
37
+ if user.save
38
+ session[:user_id] = user.id
39
+ set_current_user
40
+
41
+ if respond_to? :on_signup
42
+ on_signup
43
+ else
44
+ redirect_to :back
45
+ end
46
+ else
47
+ redirect_to :back, alert: 'Please check email and password.'
48
+ end
49
+ end
50
+ end
data/app/models/user.rb CHANGED
@@ -4,7 +4,7 @@ class User < ActiveRecord::Base
4
4
  has_secure_password
5
5
 
6
6
  before_validation { |user| user.password = Random.password if user.password.nil? }
7
- validates_presence_of :email
7
+ validates :email, presence: true, uniqueness: true, email: true
8
8
  end
9
9
 
10
10
  app_model = File.join Rails.root, 'app/models/user.rb'
@@ -0,0 +1,11 @@
1
+ # Adapted from http://my.rails-royce.org/2010/07/21/email-validation-in-ruby-on-rails-without-regexp/
2
+
3
+ require 'mail'
4
+
5
+ class EmailValidator < ActiveModel::EachValidator
6
+ def validate_each(record, attribute, value)
7
+ email = Mail::Address.new(value)
8
+ valid = email.domain && email.address == value && email.__send__(:tree).domain.dot_atom_text.elements.size > 1 rescue false
9
+ record.errors[attribute] << (options[:message] || 'is malformed') unless valid
10
+ end
11
+ end
data/config/routes.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  Rails.application.routes.draw do
2
- match "login" => "users#login", :via => :post
3
- match "logout" => "users#logout", :via => :get
2
+ match 'login' => 'users#login', :via => :post
3
+ match 'logout' => 'users#logout', :via => :get
4
+ match 'signup' => 'users#signup', :via => :post
4
5
  end
@@ -1,3 +1,3 @@
1
1
  module UserAuthentication
2
- VERSION = "0.0.9"
2
+ VERSION = "0.1.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: user_authentication
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sujoy Gupta
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-24 00:00:00.000000000 Z
11
+ date: 2013-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: 3.2.1
19
+ version: 3.2.12
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
- version: 3.2.1
26
+ version: 3.2.12
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bcrypt-ruby
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -56,16 +56,16 @@ dependencies:
56
56
  name: rspec-rails
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 2.14.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: 2.14.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: factory_girl_rails
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -95,33 +95,33 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: 0.0.1
97
97
  - !ruby/object:Gem::Dependency
98
- name: specstar-controllers
98
+ name: shoulda-matchers
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ~>
101
+ - - '>='
102
102
  - !ruby/object:Gem::Version
103
- version: 0.0.4
103
+ version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ~>
108
+ - - '>='
109
109
  - !ruby/object:Gem::Version
110
- version: 0.0.4
110
+ version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: specstar-models
112
+ name: specstar-controllers
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - ~>
116
116
  - !ruby/object:Gem::Version
117
- version: 0.0.6
117
+ version: 0.0.9
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - ~>
123
123
  - !ruby/object:Gem::Version
124
- version: 0.0.6
124
+ version: 0.0.9
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: webrat
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -147,13 +147,13 @@ files:
147
147
  - app/controllers/users_controller.rb
148
148
  - app/helpers/application_helper.rb
149
149
  - app/models/user.rb
150
+ - app/validators/email_validator.rb
150
151
  - app/views/users/_login.html.erb
151
152
  - config/routes.rb
152
153
  - db/migrate/20121009010000_create_users.rb
153
154
  - lib/random.rb
154
155
  - lib/tasks/user_authentication_tasks.rake
155
156
  - lib/user_authentication/version.rb
156
- - lib/user_authentication/version.rb~
157
157
  - lib/user_authentication.rb
158
158
  - MIT-LICENSE
159
159
  - Rakefile
@@ -1,3 +0,0 @@
1
- module UserAuthentication
2
- VERSION = "0.0.8"
3
- end