ncs_navigator_authority 1.1.0 → 1.1.1
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.
@@ -1,12 +1,16 @@
|
|
1
1
|
require 'ncs_navigator/configuration'
|
2
2
|
module NcsNavigator::Authorization::Core
|
3
3
|
class Authority
|
4
|
-
def initialize(
|
5
|
-
@logger = Logger.new(
|
4
|
+
def initialize(config=nil)
|
5
|
+
@logger = config.try(:logger) || Logger.new(STDERR)
|
6
6
|
@groups = {}
|
7
7
|
@portal = :NCSNavigator
|
8
8
|
end
|
9
9
|
|
10
|
+
def logger
|
11
|
+
@logger
|
12
|
+
end
|
13
|
+
|
10
14
|
def amplify!(user)
|
11
15
|
base = user(user)
|
12
16
|
return user unless base
|
@@ -44,6 +48,7 @@ module NcsNavigator::Authorization::Core
|
|
44
48
|
result = []
|
45
49
|
if users = get_users
|
46
50
|
users.each do |u|
|
51
|
+
next if u["username"].blank?
|
47
52
|
au = Aker::User.new(u["username"])
|
48
53
|
au.identifiers[:staff_id] = u["staff_id"]
|
49
54
|
au.first_name = u["first_name"]
|
@@ -61,19 +66,19 @@ module NcsNavigator::Authorization::Core
|
|
61
66
|
end
|
62
67
|
|
63
68
|
def get_connection(user)
|
64
|
-
connection = staff_portal_client(user).connection
|
69
|
+
connection = staff_portal_client(create_authenticator(user)).connection
|
65
70
|
end
|
66
71
|
|
67
|
-
def staff_portal_client(
|
68
|
-
NcsNavigator::Authorization::StaffPortal::Client.new(staff_portal_uri, :authenticator =>
|
72
|
+
def staff_portal_client(authenticator)
|
73
|
+
NcsNavigator::Authorization::StaffPortal::Client.new(staff_portal_uri, :authenticator => authenticator)
|
69
74
|
end
|
70
75
|
|
71
|
-
def create_authenticator(user
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
76
|
+
def create_authenticator(user)
|
77
|
+
{ :token => lambda { user.cas_proxy_ticket(staff_portal_uri) } }
|
78
|
+
end
|
79
|
+
|
80
|
+
def machine_authenticator
|
81
|
+
{ :basic => ["psc_application", NcsNavigator.configuration.staff_portal['psc_user_password']] }
|
77
82
|
end
|
78
83
|
|
79
84
|
def load_group_memberships(portal, group_data)
|
@@ -93,7 +98,7 @@ module NcsNavigator::Authorization::Core
|
|
93
98
|
|
94
99
|
def get_staff(user)
|
95
100
|
connection = get_connection(user)
|
96
|
-
response = connection
|
101
|
+
response = make_request(connection, '/staff/' << user.username << '.json')
|
97
102
|
if response.status == 200
|
98
103
|
response.body
|
99
104
|
else
|
@@ -101,17 +106,22 @@ module NcsNavigator::Authorization::Core
|
|
101
106
|
end
|
102
107
|
end
|
103
108
|
|
109
|
+
def make_request(connection, url)
|
110
|
+
connection.get(url)
|
111
|
+
end
|
112
|
+
|
104
113
|
def get_users
|
105
114
|
users = nil
|
106
115
|
begin
|
107
|
-
|
116
|
+
connection = staff_portal_client(machine_authenticator).connection
|
117
|
+
response = make_request(connection, '/users.json')
|
108
118
|
if response.status == 200
|
109
119
|
users = response.body
|
110
120
|
else
|
111
|
-
|
121
|
+
logger.warn("#{Time.now}: Staff Portal Response: #{response.body}")
|
112
122
|
end
|
113
123
|
rescue => e
|
114
|
-
|
124
|
+
logger.error("#{Time.now} : Staff Portal: #{e.class} #{e}")
|
115
125
|
end
|
116
126
|
users
|
117
127
|
end
|
@@ -52,8 +52,23 @@ describe NcsNavigator::Authorization::Core::Authority do
|
|
52
52
|
users.should be_empty
|
53
53
|
end
|
54
54
|
end
|
55
|
+
|
55
56
|
end
|
56
57
|
|
58
|
+
describe "logger" do
|
59
|
+
|
60
|
+
it "should use the default logger" do
|
61
|
+
@ncs_navigator_authority.logger.should_not be_nil
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should use the configured logger if given" do
|
65
|
+
logger = Logger.new("dummyfile.log")
|
66
|
+
auth = NcsNavigator::Authorization::Core::Authority.new(
|
67
|
+
mock(Aker::Configuration, :logger => logger))
|
68
|
+
auth.logger.should == logger
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
57
72
|
|
58
73
|
describe "#amplify!" do
|
59
74
|
before do
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ncs_navigator_authority
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 1.1.
|
9
|
+
- 1
|
10
|
+
version: 1.1.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jalpa Patel
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-11-
|
18
|
+
date: 2012-11-26 00:00:00 -06:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|