webget-current_user 1.2.2
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/lib/current_user.rb +49 -0
- data/test/unit/current_user_test.rb +56 -0
- metadata +79 -0
data/lib/current_user.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# = CurrentUser
|
2
|
+
#
|
3
|
+
# Author:: Joel Parker Henderson, joelparkerhenderson@gmail.com
|
4
|
+
# Copyright:: Copyright (c) 2005-2009 Joel Parker Henderson
|
5
|
+
# License:: CreativeCommons License, Non-commercial Share Alike
|
6
|
+
# License:: LGPL, GNU Lesser General Public License
|
7
|
+
#
|
8
|
+
# Simple gem to get and set the current user,
|
9
|
+
# using the related gem for current_user_id.
|
10
|
+
#
|
11
|
+
# For speed, we memoize the current_user.
|
12
|
+
#
|
13
|
+
# The current_user_find method also includes the user's roles.
|
14
|
+
##
|
15
|
+
|
16
|
+
require 'current_user_id'
|
17
|
+
|
18
|
+
module CurrentUser
|
19
|
+
|
20
|
+
include CurrentUserId
|
21
|
+
|
22
|
+
# Get the current user:
|
23
|
+
# - if it is already set, then return it without doing a lookup
|
24
|
+
# - otherwise, find the user via current_user_find(current_user_id)
|
25
|
+
#
|
26
|
+
# If the current user is not set, and the current user id is nil,
|
27
|
+
# then this returns nil because current_user_find returns nil.
|
28
|
+
|
29
|
+
def current_user
|
30
|
+
@current_user ||= current_user_find(current_user_id)
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
# Set the current user and also set the current user id.
|
35
|
+
|
36
|
+
def current_user=(user)
|
37
|
+
@current_user = user
|
38
|
+
current_user_id = user ? user.id : nil
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
# Return the current user by calling User.find with a user id;
|
43
|
+
# if the user id is nil, then return nil for the current user.
|
44
|
+
|
45
|
+
def current_user_find(id)
|
46
|
+
id ? User.find(id,:include=>[:roles]) : nil
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'current_user'
|
3
|
+
require 'active_record_mock'
|
4
|
+
require 'session_mock'
|
5
|
+
|
6
|
+
class CurrentUserTest < Test::Unit::TestCase
|
7
|
+
|
8
|
+
include CurrentUser
|
9
|
+
|
10
|
+
def session
|
11
|
+
@session||=SessionMock.new
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_get
|
15
|
+
assert_not_nil(session,"session")
|
16
|
+
assert_nil(current_user,"current_user")
|
17
|
+
assert_nil(current_user_id,"current_user_id")
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_set
|
21
|
+
|
22
|
+
# Verify we have a blank slate
|
23
|
+
assert_not_nil(session,"session")
|
24
|
+
assert_nil(current_user,"current_user")
|
25
|
+
assert_nil(current_user_id,"current_user_id")
|
26
|
+
|
27
|
+
# Create mock users
|
28
|
+
anne = User.new(:id => 1, :name => 'Anne')
|
29
|
+
beth = User.new(:id => 2, :name => 'Beth')
|
30
|
+
cate = User.new(:id => 3, :name => 'Cate')
|
31
|
+
|
32
|
+
# Set via object
|
33
|
+
current_user=beth
|
34
|
+
x=current_user
|
35
|
+
assert_equal(beth,x,"beth,x:#{x}")
|
36
|
+
assert_not_equal(anne,x,"anne,x:#{x}")
|
37
|
+
assert_not_equal(cate,x,"beth,x:#{x}")
|
38
|
+
|
39
|
+
# Clear
|
40
|
+
current_user=nil
|
41
|
+
assert_nil(current_user,"current_user")
|
42
|
+
assert_nil(current_user_id,"current_user_id")
|
43
|
+
|
44
|
+
# Set via id
|
45
|
+
current_user_id=2
|
46
|
+
assert_equal(beth,x,"beth,x:#{x}")
|
47
|
+
assert_not_equal(anne,x,"anne,x:#{x}")
|
48
|
+
assert_not_equal(cate,x,"beth,x:#{x}")
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
class User < ActiveRecordMock
|
55
|
+
end
|
56
|
+
|
metadata
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: webget-current_user
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.2.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- WebGet
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-02-05 00:00:00 -08:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: current_user_id
|
17
|
+
version_requirement:
|
18
|
+
version_requirements: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 1.1.1
|
23
|
+
version:
|
24
|
+
- !ruby/object:Gem::Dependency
|
25
|
+
name: active_record_mock
|
26
|
+
version_requirement:
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- - ">="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: 1.2.1
|
32
|
+
version:
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: session_mock
|
35
|
+
version_requirement:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.1.1
|
41
|
+
version:
|
42
|
+
description:
|
43
|
+
email: webget@webget.com
|
44
|
+
executables: []
|
45
|
+
|
46
|
+
extensions: []
|
47
|
+
|
48
|
+
extra_rdoc_files: []
|
49
|
+
|
50
|
+
files:
|
51
|
+
- lib/current_user.rb
|
52
|
+
has_rdoc: true
|
53
|
+
homepage: http://webget.com/
|
54
|
+
post_install_message:
|
55
|
+
rdoc_options: []
|
56
|
+
|
57
|
+
require_paths:
|
58
|
+
- lib
|
59
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: "0"
|
64
|
+
version:
|
65
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: "0"
|
70
|
+
version:
|
71
|
+
requirements: []
|
72
|
+
|
73
|
+
rubyforge_project:
|
74
|
+
rubygems_version: 1.2.0
|
75
|
+
signing_key:
|
76
|
+
specification_version: 2
|
77
|
+
summary: "current_user: get and set a user in a rails app session"
|
78
|
+
test_files:
|
79
|
+
- test/unit/current_user_test.rb
|