as_user 0.0.2 → 0.0.3
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.
- data/CHANGELOG.rdoc +6 -0
- data/app/controllers/as_user/abouts_controller.rb +11 -0
- data/app/controllers/as_user/application_controller.rb +1 -0
- data/app/controllers/as_user/sessions_controller.rb +30 -0
- data/app/controllers/as_user/users_controller.rb +29 -10
- data/app/helpers/as_user/sessions_helper.rb +41 -0
- data/app/models/user.rb +15 -2
- data/app/views/as_user/abouts/index.html.erb +10 -0
- data/app/views/as_user/sessions/new.html.erb +18 -0
- data/app/views/as_user/users/_form.html.erb +6 -2
- data/app/views/as_user/users/edit.html.erb +14 -1
- data/app/views/as_user/users/edit_password.html.erb +20 -0
- data/app/views/as_user/users/index.html.erb +5 -10
- data/app/views/as_user/users/show.html.erb +3 -9
- data/config/routes.rb +11 -1
- data/lib/as_user/version.rb +1 -1
- data/test/as_user_test.rb +1 -1
- data/test/dummy/config/routes.rb +0 -1
- data/test/dummy/log/development.log +6806 -0
- data/test/dummy/log/test.log +20335 -1611
- data/test/dummy/tmp/cache/assets/C9F/E70/sprockets%2F8b67757c740fd825548e755943fcc159 +0 -0
- data/test/dummy/tmp/cache/assets/CD0/0D0/sprockets%2F8d0de3340227ac0a16d94e24230fc686 +0 -0
- data/test/dummy/tmp/cache/assets/D0E/5F0/sprockets%2Fba437c1d4e76801fd3bc104599c2c578 +0 -0
- data/test/dummy/tmp/cache/assets/D22/DD0/sprockets%2Fdac6c00d18f185d1858ff2166ee69877 +0 -0
- data/test/dummy/tmp/cache/assets/D43/1C0/sprockets%2Fce38efff2c50751ae16b548458151df4 +0 -0
- data/test/dummy/tmp/cache/assets/D71/8B0/sprockets%2Fd4cf3307f9d2c74049e38b32bfc7c1a9 +0 -0
- data/test/dummy/tmp/cache/assets/D79/0E0/sprockets%2Fafbf9d2823b6c5d256e6db15985e80c4 +0 -0
- data/test/dummy/tmp/cache/assets/D9F/CA0/sprockets%2F32d6752ac6b8fe73364a60b90cfceac9 +0 -0
- data/test/dummy/tmp/cache/assets/DE4/400/sprockets%2F5ba79f02c56ff6a6e8f5830e4e5cee8f +0 -0
- data/test/dummy/tmp/cache/assets/E44/0D0/sprockets%2Ffefa905655ba62adaadcc1b225dcd1c1 +0 -0
- data/test/dummy/tmp/pids/server.pid +1 -0
- data/test/factories/users.rb +14 -0
- data/test/fixtures/as_user/users.yml +6 -6
- data/test/functional/as_user/abouts_controller_test.rb +16 -0
- data/test/functional/as_user/sessions_controller_test.rb +41 -0
- data/test/functional/as_user/users_controller_test.rb +91 -16
- data/test/integration/as_user/user_flows_test.rb +34 -0
- data/test/test_helper.rb +9 -0
- data/test/unit/as_user/user_test.rb +45 -10
- metadata +39 -5
- data/test/integration/navigation_test.rb +0 -10
data/CHANGELOG.rdoc
CHANGED
@@ -0,0 +1,30 @@
|
|
1
|
+
require_dependency "as_user/application_controller"
|
2
|
+
|
3
|
+
module AsUser
|
4
|
+
class SessionsController < ApplicationController
|
5
|
+
def new
|
6
|
+
if signed_in? then
|
7
|
+
redirect_to current_user
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def create
|
12
|
+
user = User.find_by_email params[:session][:email].downcase
|
13
|
+
if user && user.authenticate(params[:session][:password])
|
14
|
+
sign_in user
|
15
|
+
redirect_back_or user
|
16
|
+
else
|
17
|
+
flash.now[:error] = "Invalid email/password combination"
|
18
|
+
render 'new'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def destroy
|
23
|
+
sign_out
|
24
|
+
redirect_to root_path, notice: "signed out."
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
|
@@ -2,6 +2,8 @@ require_dependency "as_user/application_controller"
|
|
2
2
|
|
3
3
|
module AsUser
|
4
4
|
class UsersController < ApplicationController
|
5
|
+
before_filter :signed_in_as_self, except: [:index, :show, :new, :create]
|
6
|
+
|
5
7
|
# GET /users
|
6
8
|
# GET /users.json
|
7
9
|
def index
|
@@ -35,11 +37,6 @@ module AsUser
|
|
35
37
|
end
|
36
38
|
end
|
37
39
|
|
38
|
-
# GET /users/1/edit
|
39
|
-
def edit
|
40
|
-
@user = User.find(params[:id])
|
41
|
-
end
|
42
|
-
|
43
40
|
# POST /users
|
44
41
|
# POST /users.json
|
45
42
|
def create
|
@@ -47,35 +44,43 @@ module AsUser
|
|
47
44
|
|
48
45
|
respond_to do |format|
|
49
46
|
if @user.save
|
47
|
+
sign_in @user
|
50
48
|
format.html { redirect_to @user, notice: 'User was successfully created.' }
|
51
49
|
format.json { render json: @user, status: :created, location: @user }
|
52
50
|
else
|
51
|
+
flash[:error]="create user failed."
|
53
52
|
format.html { render action: "new" }
|
54
53
|
format.json { render json: @user.errors, status: :unprocessable_entity }
|
55
54
|
end
|
56
55
|
end
|
57
56
|
end
|
58
57
|
|
58
|
+
# GET /users/1/edit
|
59
|
+
def edit
|
60
|
+
end
|
61
|
+
|
62
|
+
def edit_password
|
63
|
+
end
|
64
|
+
|
59
65
|
# PUT /users/1
|
60
66
|
# PUT /users/1.json
|
61
67
|
def update
|
62
|
-
@user = User.find(params[:id])
|
63
|
-
|
64
68
|
respond_to do |format|
|
65
69
|
if @user.update_attributes(params[:user])
|
66
70
|
format.html { redirect_to @user, notice: 'User was successfully updated.' }
|
67
71
|
format.json { head :no_content }
|
68
72
|
else
|
69
|
-
|
73
|
+
flash[:error] = "update password failed."
|
74
|
+
format.html { redirect_to @user }
|
70
75
|
format.json { render json: @user.errors, status: :unprocessable_entity }
|
71
76
|
end
|
72
77
|
end
|
73
78
|
end
|
74
|
-
|
79
|
+
|
75
80
|
# DELETE /users/1
|
76
81
|
# DELETE /users/1.json
|
77
82
|
def destroy
|
78
|
-
|
83
|
+
#@user = User.find(params[:id])
|
79
84
|
@user.destroy
|
80
85
|
|
81
86
|
respond_to do |format|
|
@@ -83,5 +88,19 @@ module AsUser
|
|
83
88
|
format.json { head :no_content }
|
84
89
|
end
|
85
90
|
end
|
91
|
+
|
92
|
+
private
|
93
|
+
def signed_in_as_self
|
94
|
+
@user = User.find(params[:id])
|
95
|
+
if current_user
|
96
|
+
unless current_user?(@user)
|
97
|
+
flash[:error] = "can only modify your own account."
|
98
|
+
redirect_to root_path
|
99
|
+
end
|
100
|
+
else
|
101
|
+
store_location
|
102
|
+
redirect_to signin_path
|
103
|
+
end
|
104
|
+
end
|
86
105
|
end
|
87
106
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module AsUser
|
2
|
+
module SessionsHelper
|
3
|
+
def sign_in(user)
|
4
|
+
session[:user_id] = user.id
|
5
|
+
self.current_user = user
|
6
|
+
end
|
7
|
+
|
8
|
+
def signed_in?
|
9
|
+
#session[:original_url] = request.url
|
10
|
+
!current_user.nil?
|
11
|
+
end
|
12
|
+
|
13
|
+
def sign_out
|
14
|
+
#cookies.delete(:remember_token)
|
15
|
+
session[:user_id] = nil
|
16
|
+
self.current_user = nil
|
17
|
+
end
|
18
|
+
|
19
|
+
def current_user=(user)
|
20
|
+
@current_user = user
|
21
|
+
end
|
22
|
+
|
23
|
+
def current_user
|
24
|
+
#@current_user ||= User.find_by_remember_token(cookies[:remember_token])
|
25
|
+
@current_user ||= User.find_by_id(session[:user_id]) if session[:user_id]
|
26
|
+
end
|
27
|
+
|
28
|
+
def current_user?(user)
|
29
|
+
user == current_user
|
30
|
+
end
|
31
|
+
|
32
|
+
def redirect_back_or(default)
|
33
|
+
redirect_to(session[:return_to] || default)
|
34
|
+
session.delete(:return_to)
|
35
|
+
end
|
36
|
+
|
37
|
+
def store_location
|
38
|
+
session[:return_to] = request.url
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/app/models/user.rb
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
# == Schema Information
|
2
|
+
#
|
3
|
+
# Table name: users
|
4
|
+
#
|
5
|
+
# id :integer not null, primary key
|
6
|
+
# email :string(255) not null
|
7
|
+
# name :string(100)
|
8
|
+
# password_digest :string(60)
|
9
|
+
# created_at :datetime not null
|
10
|
+
# updated_at :datetime not null
|
11
|
+
#
|
12
|
+
|
1
13
|
class User < ActiveRecord::Base
|
2
14
|
self.table_name = "users"
|
3
15
|
attr_accessible :email, :name, :password, :password_confirmation
|
@@ -10,6 +22,7 @@ class User < ActiveRecord::Base
|
|
10
22
|
validates :email, presence: true,
|
11
23
|
format: {with: VALID_EMAIL_REGEX},
|
12
24
|
uniqueness: {case_sensitive: false}
|
13
|
-
validates :password, presence: true, length: {minimum: 3}
|
14
|
-
|
25
|
+
validates :password, :password_confirmation, presence: true, length: {minimum: 3}, if: Proc.new { |user|
|
26
|
+
user.new_record? or user.password
|
27
|
+
}
|
15
28
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<h1>Sign in</h1>
|
2
|
+
|
3
|
+
<div class="message_box">
|
4
|
+
<%= flash[:error] if flash[:error] %>
|
5
|
+
</div>
|
6
|
+
|
7
|
+
<div class="login_form">
|
8
|
+
<%= form_for(:session, url: sessions_path) do |f| %>
|
9
|
+
<%= f.label :email %>
|
10
|
+
<%= f.text_field :email %>
|
11
|
+
|
12
|
+
<%= f.label :password %>
|
13
|
+
<%= f.password_field :password %>
|
14
|
+
|
15
|
+
<%= f.submit "Sign in" %>
|
16
|
+
<%end%>
|
17
|
+
</div>
|
18
|
+
|
@@ -20,8 +20,12 @@
|
|
20
20
|
<%= f.text_field :name %>
|
21
21
|
</div>
|
22
22
|
<div class="field">
|
23
|
-
<%= f.label :
|
24
|
-
<%= f.
|
23
|
+
<%= f.label :password%><br />
|
24
|
+
<%= f.password_field :password%>
|
25
|
+
</div>
|
26
|
+
<div class="field">
|
27
|
+
<%= f.label :password_confirmation %><br />
|
28
|
+
<%= f.password_field :password_confirmation %>
|
25
29
|
</div>
|
26
30
|
<div class="actions">
|
27
31
|
<%= f.submit %>
|
@@ -1,6 +1,19 @@
|
|
1
1
|
<h1>Editing user</h1>
|
2
2
|
|
3
|
-
|
3
|
+
<%#= render 'form' %>
|
4
|
+
<%= form_for(@user) do |f| %>
|
5
|
+
<div class="field">
|
6
|
+
<%= f.label :email %><br />
|
7
|
+
<%= f.text_field :email %>
|
8
|
+
</div>
|
9
|
+
<div class="field">
|
10
|
+
<%= f.label :name %><br />
|
11
|
+
<%= f.text_field :name %>
|
12
|
+
</div>
|
13
|
+
<div class="actions">
|
14
|
+
<%= f.submit %>
|
15
|
+
</div>
|
16
|
+
<% end %>
|
4
17
|
|
5
18
|
<%= link_to 'Show', @user %> |
|
6
19
|
<%= link_to 'Back', users_path %>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<h1>Editing user</h1>
|
2
|
+
|
3
|
+
<%#= render 'form' %>
|
4
|
+
<%= form_for(@user) do |f| %>
|
5
|
+
<h3><%=@user.name%></h3>
|
6
|
+
<h3><%=@user.email%></h3>
|
7
|
+
<div class="field">
|
8
|
+
<%= f.label :password %><br />
|
9
|
+
<%= f.password_field :password %>
|
10
|
+
</div>
|
11
|
+
<div class="field">
|
12
|
+
<%= f.label :password_confirmation %><br />
|
13
|
+
<%= f.password_field :password_confirmation %>
|
14
|
+
</div>
|
15
|
+
<div class="actions">
|
16
|
+
<%= f.submit %>
|
17
|
+
</div>
|
18
|
+
<% end %>
|
19
|
+
|
20
|
+
<%= link_to 'Show', @user %> |
|
@@ -1,23 +1,17 @@
|
|
1
|
-
<h1>
|
1
|
+
<h1>users</h1>
|
2
2
|
|
3
3
|
<table>
|
4
4
|
<tr>
|
5
|
+
<th>Id</th>
|
5
6
|
<th>Email</th>
|
6
7
|
<th>Name</th>
|
7
|
-
<th>Password digest</th>
|
8
|
-
<th></th>
|
9
|
-
<th></th>
|
10
|
-
<th></th>
|
11
8
|
</tr>
|
12
9
|
|
13
10
|
<% @users.each do |user| %>
|
14
11
|
<tr>
|
15
|
-
<td><%= user.
|
12
|
+
<td><%= user.id %></td>
|
13
|
+
<td><%= "***" || user.email %></td>
|
16
14
|
<td><%= user.name %></td>
|
17
|
-
<td><%= user.password_digest %></td>
|
18
|
-
<td><%= link_to 'Show', user %></td>
|
19
|
-
<td><%= link_to 'Edit', edit_user_path(user) %></td>
|
20
|
-
<td><%= link_to 'Destroy', user, method: :delete, data: { confirm: 'Are you sure?' } %></td>
|
21
15
|
</tr>
|
22
16
|
<% end %>
|
23
17
|
</table>
|
@@ -25,3 +19,4 @@
|
|
25
19
|
<br />
|
26
20
|
|
27
21
|
<%= link_to 'New User', new_user_path %>
|
22
|
+
<%= link_to 'Signin', signin_path %>
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<p id="notice"><%= notice %></p>
|
2
2
|
|
3
3
|
<p>
|
4
|
-
<b>
|
5
|
-
<%= @user.
|
4
|
+
<b>Id:</b>
|
5
|
+
<%= @user.id %>
|
6
6
|
</p>
|
7
7
|
|
8
8
|
<p>
|
@@ -10,11 +10,5 @@
|
|
10
10
|
<%= @user.name %>
|
11
11
|
</p>
|
12
12
|
|
13
|
-
<p>
|
14
|
-
<b>Password digest:</b>
|
15
|
-
<%= @user.password_digest %>
|
16
|
-
</p>
|
17
|
-
|
18
|
-
|
19
|
-
<%= link_to 'Edit', edit_user_path(@user) %> |
|
20
13
|
<%= link_to 'Back', users_path %>
|
14
|
+
<%= link_to 'Logout', signout_path,method: :delete if current_user%>
|
data/config/routes.rb
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
AsUser::Engine.routes.draw do
|
2
|
-
resources :users
|
2
|
+
resources :users do
|
3
|
+
member do
|
4
|
+
get :edit_password
|
5
|
+
end
|
6
|
+
end
|
7
|
+
resources :sessions, only: [:new, :create, :destroy]
|
3
8
|
|
9
|
+
match "/signup", to: 'users#new'
|
10
|
+
match "/signin", to: 'sessions#new'
|
11
|
+
match "/signout", to: 'sessions#destroy', via: :delete
|
4
12
|
|
13
|
+
get "abouts/index" => "abouts#index"
|
14
|
+
root to: "abouts#index"
|
5
15
|
end
|
data/lib/as_user/version.rb
CHANGED
data/test/as_user_test.rb
CHANGED
data/test/dummy/config/routes.rb
CHANGED