ubiquitous_user 0.3.1 → 0.4.0
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/README.rdoc +8 -5
- data/VERSION +1 -1
- data/generators/ubiquitous_user/ubiquitous_user_generator.rb +3 -0
- data/lib/ubiquitous_user.rb +12 -8
- data/test/test_ubiquitous_user.rb +34 -26
- metadata +4 -4
data/README.rdoc
CHANGED
@@ -6,8 +6,9 @@ accounts for many tasks, but you don't need those accounts to be any more than
|
|
6
6
|
an id. No username, no password, no profile.
|
7
7
|
|
8
8
|
This library is an implementation of that. You add the Usable mixin to your
|
9
|
-
ApplicationController and after that call user to get a user
|
10
|
-
|
9
|
+
ApplicationController and after that call user to get a user. When a new user
|
10
|
+
is saved, it'll automatically store the session[:user_id] in the controller to
|
11
|
+
mark this new user as the logged in user.
|
11
12
|
|
12
13
|
When a user log ins what you have to do is set the user, which is just doing
|
13
14
|
user = userObject.
|
@@ -99,10 +100,12 @@ ApplicationController, like this:
|
|
99
100
|
#...
|
100
101
|
end
|
101
102
|
|
102
|
-
After that you can use user
|
103
|
+
After that you can use user anywhere, for example:
|
104
|
+
|
105
|
+
@item.recommender = user
|
106
|
+
|
107
|
+
or
|
103
108
|
|
104
|
-
@item.recommender = user!
|
105
|
-
|
106
109
|
<%=h user.name %>
|
107
110
|
|
108
111
|
You can use user= and authorize in the controllers, for example:
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
data/lib/ubiquitous_user.rb
CHANGED
@@ -30,26 +30,30 @@ module UsableHelpers
|
|
30
30
|
# Helper method to get the current user. It will always return a user but the
|
31
31
|
# user may not be in the database. If options[:create] is true, then the user
|
32
32
|
# will be in the database (although it may be a ghost user).
|
33
|
-
def user
|
33
|
+
def user
|
34
34
|
# Find the user in the database if session[:user_id] is defined and @ubiquitous_user is not.
|
35
35
|
@ubiquitous_user = UsableConfig::user_model_class.find_by_id(session[:user_id]) if session[:user_id] != nil and @ubiquitous_user == nil
|
36
36
|
|
37
37
|
# Create a new user object if @ubiquitous_user is not defined.
|
38
38
|
@ubiquitous_user = UsableConfig::user_model_class.send(UsableConfig::user_model_new) if @ubiquitous_user == nil
|
39
39
|
|
40
|
-
# If the object is new
|
41
|
-
if
|
42
|
-
|
43
|
-
|
44
|
-
|
40
|
+
# If the object is new, let's get ready to mark the user as logged in when saving.
|
41
|
+
if @ubiquitous_user.new_record? or @ubiquitous_user.id != session[:user_id]
|
42
|
+
@ubiquitous_user.instance_variable_set :@ubiquitous_user_controller, self
|
43
|
+
# TODO: save a previous after_save and call it.
|
44
|
+
def @ubiquitous_user.after_save
|
45
|
+
@ubiquitous_user_controller.session[:user_id] = self.id
|
46
|
+
end
|
45
47
|
end
|
46
48
|
|
47
49
|
return @ubiquitous_user
|
48
50
|
end
|
49
51
|
|
50
|
-
#
|
52
|
+
# <b>DEPRECATED:</b> Please use <tt>user</tt> instead. Call
|
53
|
+
# <tt>user.save!</tt> if you really needed it saved.
|
51
54
|
def user!
|
52
|
-
|
55
|
+
warn "[DEPRECATION] use 'user' instead, call 'user.save!' if you really needed it saved"
|
56
|
+
return user
|
53
57
|
end
|
54
58
|
|
55
59
|
# Helper method to check whether a user is logged in or not
|
@@ -14,6 +14,7 @@ class TestUbiquitousUser < Test::Unit::TestCase
|
|
14
14
|
end
|
15
15
|
|
16
16
|
should "create a new user object on Controller#user" do
|
17
|
+
@user.expects(:new_record?).returns(true)
|
17
18
|
User.expects(:new).returns(@user)
|
18
19
|
|
19
20
|
user = @controller.user
|
@@ -23,6 +24,7 @@ class TestUbiquitousUser < Test::Unit::TestCase
|
|
23
24
|
end
|
24
25
|
|
25
26
|
should "should return previous user object on Controller#user" do
|
27
|
+
@user.expects(:new_record?).returns(true)
|
26
28
|
@controller.ubiquitous_user = @user
|
27
29
|
|
28
30
|
user = @controller.user
|
@@ -33,6 +35,7 @@ class TestUbiquitousUser < Test::Unit::TestCase
|
|
33
35
|
should "find a user on Controller#user if there's a user_id on session" do
|
34
36
|
user_id = 42
|
35
37
|
@controller.session[:user_id] = user_id
|
38
|
+
@user.expects(:new_record?).returns(true)
|
36
39
|
User.expects(:find_by_id).with(user_id).returns(@user)
|
37
40
|
|
38
41
|
user = @controller.user
|
@@ -41,31 +44,35 @@ class TestUbiquitousUser < Test::Unit::TestCase
|
|
41
44
|
assert_equal @user, @controller.ubiquitous_user
|
42
45
|
end
|
43
46
|
|
44
|
-
should "
|
47
|
+
should "set the session user_id when saving a user" do
|
45
48
|
user_id = 43
|
46
49
|
User.expects(:new).returns(@user)
|
47
50
|
@user.expects(:new_record?).returns(true)
|
48
51
|
@user.expects(:save!)
|
49
52
|
@user.expects(:id).returns(user_id)
|
50
|
-
|
51
|
-
user = @controller.user
|
52
|
-
|
53
|
+
|
54
|
+
user = @controller.user
|
55
|
+
user.save!
|
56
|
+
# save! should be calling after_save, but it isn't because it's a mock, so
|
57
|
+
# let's call it manually
|
58
|
+
user.after_save
|
59
|
+
|
53
60
|
assert_equal @user, user
|
54
61
|
assert_equal @user, @controller.ubiquitous_user
|
55
62
|
assert_equal user_id, @controller.session[:user_id]
|
56
63
|
end
|
57
|
-
|
58
|
-
should "not save an existing user even when requested on Controller#user" do
|
59
|
-
user_id = 44
|
60
|
-
@controller.session[:user_id] = user_id
|
61
|
-
User.expects(:find_by_id).with(user_id).returns(@user)
|
62
|
-
@user.expects(:new_record?).returns(false)
|
63
|
-
|
64
|
-
user = @controller.user!
|
65
|
-
|
66
|
-
assert_equal @user, user
|
67
|
-
assert_equal @user, @controller.ubiquitous_user
|
68
|
-
end
|
64
|
+
#
|
65
|
+
# should "not save an existing user even when requested on Controller#user" do
|
66
|
+
# user_id = 44
|
67
|
+
# @controller.session[:user_id] = user_id
|
68
|
+
# User.expects(:find_by_id).with(user_id).returns(@user)
|
69
|
+
# @user.expects(:new_record?).returns(false)
|
70
|
+
#
|
71
|
+
# user = @controller.user!
|
72
|
+
#
|
73
|
+
# assert_equal @user, user
|
74
|
+
# assert_equal @user, @controller.ubiquitous_user
|
75
|
+
# end
|
69
76
|
|
70
77
|
should "set user on Controller#user=" do
|
71
78
|
user_id = 45
|
@@ -171,21 +178,22 @@ class TestUbiquitousUser < Test::Unit::TestCase
|
|
171
178
|
end
|
172
179
|
|
173
180
|
should "create a new user object on #user" do
|
181
|
+
@user.expects(:new_record?).returns(true)
|
174
182
|
Person.expects(:new_person).returns(@user)
|
175
183
|
assert_equal @user, @controller.user
|
176
184
|
assert_equal @user, @controller.ubiquitous_user
|
177
185
|
end
|
178
186
|
|
179
|
-
should "save a new user when requested on #user" do
|
180
|
-
user_id = 43
|
181
|
-
Person.expects(:new_person).returns(@user)
|
182
|
-
@user.expects(:new_record?).returns(true)
|
183
|
-
@user.expects(:save_person!)
|
184
|
-
@user.expects(:id).returns(user_id)
|
185
|
-
assert_equal @user, @controller.user!
|
186
|
-
assert_equal @user, @controller.ubiquitous_user
|
187
|
-
assert_equal user_id, @controller.session[:user_id]
|
188
|
-
end
|
187
|
+
# should "save a new user when requested on #user" do
|
188
|
+
# user_id = 43
|
189
|
+
# Person.expects(:new_person).returns(@user)
|
190
|
+
# @user.expects(:new_record?).returns(true)
|
191
|
+
# @user.expects(:save_person!)
|
192
|
+
# @user.expects(:id).returns(user_id)
|
193
|
+
# assert_equal @user, @controller.user!
|
194
|
+
# assert_equal @user, @controller.ubiquitous_user
|
195
|
+
# assert_equal user_id, @controller.session[:user_id]
|
196
|
+
# end
|
189
197
|
|
190
198
|
should "set user on Controller#user=" do
|
191
199
|
user_id = 45
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 4
|
8
|
+
- 0
|
9
|
+
version: 0.4.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- "J. Pablo Fern\xC3\xA1ndez"
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-03-
|
17
|
+
date: 2010-03-22 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|