sixarm_ruby_current_user 1.4.0 → 1.4.4

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.txt CHANGED
@@ -1,5 +1,6 @@
1
1
  CHANGELOG
2
2
 
3
+ 2011-04-26 1.4.4 Add current_user_id methods
3
4
  2011-04-25 1.4.0 Add memoize and :reload => true
4
5
  2011-04-19 1.3.4 Add self and more tests
5
6
  2011-04-18 1.3.2 Update for Ruby 1.9.2 and Rails 3.0.5
data/README.rdoc CHANGED
@@ -4,10 +4,69 @@ Author:: Joel Parker Henderson, joel@joelparkerhenderson.com
4
4
  Copyright:: Copyright (c) 2005-2011 Joel Parker Henderson
5
5
  License:: See LICENSE.txt file
6
6
 
7
- Simple gem to get and set the current user,
8
- using the related gem for current_user_id.
7
+ Get and set the current user in the Rails session array.
8
+
9
+ When you set the current user, this does:
10
+ - @current_user = user
11
+ - @current_user_id = user.id
12
+ - session[:current_user_id] = user.id
13
+
14
+
15
+ == Example code
16
+
17
+ joe = User.find(123)
18
+ self.current_user = joe
19
+ =>
20
+ @current_user == joe
21
+ @current_user_id == 123
22
+ session[:current_user_id] == 123
23
+
24
+
25
+ == Example controller
26
+
27
+ class MyController < ApplicationController
28
+
29
+ def sign_in(user)
30
+ self.current_user = user
31
+ end
32
+
33
+ def sign_out
34
+ self.current_user = nil
35
+ end
36
+
37
+ def is_anyone_using_this?
38
+ current_user?
39
+ end
40
+
41
+ end
42
+
43
+
44
+ == Example of reloading
45
+
46
+ For fast speed, we memoize current_user and current_user_id:
47
+ we use fast instance variables @current_user and @current_user_id
48
+ rather than reading the slower session[:current_user_id] each time.
49
+
50
+ To reload @current_user and @current_user_id from session[:current_user_id],
51
+ we use the :reload parameter like this:
52
+
53
+ current_user(:reload => true)
54
+
55
+
56
+ == Why use the self prefix?
57
+
58
+ When we set variables, we must use the "self" prefix because Ruby uses this to do method dispatch.
59
+
60
+ Right:
61
+ self.current_user = joe
62
+
63
+ Wrong:
64
+ current_user = joe
65
+
66
+
67
+
68
+
69
+
9
70
 
10
- For speed, we memoize the current_user.
11
71
 
12
- The current_user_find method also includes the user's roles.
13
72
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.4.0
1
+ 1.4.4
@@ -3,10 +3,17 @@
3
3
  Please see README.rdoc
4
4
  =end
5
5
 
6
- require 'sixarm_ruby_current_user_id'
7
6
 
8
7
  module CurrentUser
9
8
 
9
+
10
+ ###
11
+ #
12
+ # Methods for the User model
13
+ #
14
+ ###
15
+
16
+
10
17
  # Get the current user.
11
18
  #
12
19
  # This calls User.find with the current_user_id
@@ -20,7 +27,7 @@ module CurrentUser
20
27
 
21
28
  def current_user(ops={})
22
29
  if ops[:reload] then @current_user=nil end
23
- @current_user ||= (current_user_id ? User.find(current_user_id) : nil)
30
+ @current_user ||= (current_user_id(ops) ? User.find(current_user_id) : nil)
24
31
  end
25
32
 
26
33
 
@@ -39,4 +46,44 @@ module CurrentUser
39
46
  @current_user = user
40
47
  end
41
48
 
49
+
50
+ ###
51
+ #
52
+ # Methods for the User id
53
+ #
54
+ ###
55
+
56
+
57
+ # Get the current user id in the Rails session array.
58
+ #
59
+ # The current user id is memoized as @current_user_id.
60
+ # To reload, pass :reload => true
61
+ #
62
+ # Return the session's current user id.
63
+
64
+ def current_user_id(ops={})
65
+ if ops[:reload] then @current_user_id=nil end
66
+ @current_user_id ||= session[:current_user_id]
67
+ end
68
+
69
+
70
+ # Is there a current user id in the Rails session array?
71
+
72
+ def current_user_id?
73
+ return session[:current_user_id] ? true : false
74
+ end
75
+
76
+
77
+ # Set the current user id in the Rails session array.
78
+ # Return the current user id, suitable for chaining.
79
+
80
+ def current_user_id=(id)
81
+ @current_user_id=session[:current_user_id]=id
82
+ end
83
+
84
+
42
85
  end
86
+
87
+
88
+
89
+
@@ -1,7 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  require 'test/unit'
3
3
  require 'sixarm_ruby_current_user'
4
- require 'sixarm_ruby_current_user_id'
5
4
  require 'sixarm_ruby_active_record_mock'
6
5
  require 'simplecov'
7
6
  SimpleCov.start
@@ -17,13 +16,18 @@ class Testing < Test::Unit::TestCase
17
16
  end
18
17
 
19
18
  include CurrentUser
20
- include CurrentUserId
19
+
20
+
21
+ ###
22
+ #
23
+ # Methods for the User model
24
+ #
25
+ ###
21
26
 
22
27
  ANNE = User.new(:id => 1, :name => 'Anne')
23
28
  BETH = User.new(:id => 2, :name => 'Beth')
24
29
  CATE = User.new(:id => 3, :name => 'Cate')
25
30
 
26
-
27
31
  def test_blank_slate
28
32
  assert_nil(current_user, "current_user")
29
33
  assert_nil(current_user_id, "current_user_id")
@@ -74,9 +78,58 @@ class Testing < Test::Unit::TestCase
74
78
  assert_equal(nil, actual, "current_user")
75
79
  end
76
80
 
77
- end
78
81
 
79
82
 
83
+ ###
84
+ #
85
+ # Methods for the User id
86
+ #
87
+ ###
88
+
89
+ ID=1234
90
+
91
+ def test_current_user_id_default_is_nil
92
+ assert_nil(current_user_id, "current_user_id is not set, so current_user_id should be nil")
93
+ end
94
+
95
+ def test_current_user_id_equals
96
+ self.current_user_id=ID
97
+ assert_equal(ID, @current_user_id, "current_user_id is set, so @current_user_id should be an id")
98
+ assert_equal(ID, session[:current_user_id], "current_user_id is set, so session[:current_user_id] should be an id")
99
+ end
100
+
101
+ def test_current_user_id_equals_with_round_trip
102
+ self.current_user_id=ID
103
+ assert_equal(ID, current_user_id, "current_user_id is set, so current_user_id should be an id")
104
+ end
80
105
 
81
106
 
107
+ def test_current_user_id_with_memoize
108
+ self.current_user_id=ID
109
+ session[:current_user_id]=ID+1
110
+ assert_equal(ID, current_user_id, "current_user_id is memoized, so current_user_id should be an id")
111
+ end
82
112
 
113
+ def test_current_user_id_reload_false
114
+ self.current_user_id=ID
115
+ session[:current_user_id]=ID+1
116
+ assert_equal(ID, current_user_id(:reload=>false), "current_user_id reload => false, so current_user_id should be an id")
117
+ end
118
+
119
+ def test_current_user_id_reload_true
120
+ self.current_user_id=ID
121
+ session[:current_user_id]=ID+1
122
+ assert_equal(ID+1, current_user_id(:reload=>true), "current_user_id reload => true, so current_user_id should be an id")
123
+ end
124
+
125
+ def test_current_user_id_question_is_false
126
+ assert_equal(false, current_user_id?, "current_user_id is not set, so current_user_id? should be false")
127
+ end
128
+
129
+ def test_current_user_id_question_is_true
130
+ self.current_user_id=ID
131
+ assert_equal(true, current_user_id?, "current_user_id is set, so current_user_id? should be true")
132
+ end
133
+
134
+
135
+ end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: sixarm_ruby_current_user
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.4.0
5
+ version: 1.4.4
6
6
  platform: ruby
7
7
  authors:
8
8
  - SixArm
@@ -33,28 +33,17 @@ cert_chain:
33
33
  date: 2011-04-26 00:00:00 -07:00
34
34
  default_executable:
35
35
  dependencies:
36
- - !ruby/object:Gem::Dependency
37
- name: sixarm_ruby_current_user_id
38
- prerelease: false
39
- requirement: &id001 !ruby/object:Gem::Requirement
40
- none: false
41
- requirements:
42
- - - "="
43
- - !ruby/object:Gem::Version
44
- version: 1.4.0
45
- type: :runtime
46
- version_requirements: *id001
47
36
  - !ruby/object:Gem::Dependency
48
37
  name: sixarm_ruby_active_record_mock
49
38
  prerelease: false
50
- requirement: &id002 !ruby/object:Gem::Requirement
39
+ requirement: &id001 !ruby/object:Gem::Requirement
51
40
  none: false
52
41
  requirements:
53
42
  - - ">="
54
43
  - !ruby/object:Gem::Version
55
44
  version: 1.4.4
56
45
  type: :runtime
57
- version_requirements: *id002
46
+ version_requirements: *id001
58
47
  description:
59
48
  email: sixarm@sixarm.com
60
49
  executables: []
metadata.gz.sig CHANGED
Binary file