adp-product-userinfo 0.1.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.
Files changed (44) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +4 -0
  5. data/CODE_OF_CONDUCT.md +42 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE +201 -0
  8. data/README.md +253 -0
  9. data/Rakefile +6 -0
  10. data/adp-product-userinfo.gemspec +41 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/democlient/Gemfile +16 -0
  14. data/democlient/Gemfile.lock +47 -0
  15. data/democlient/LICENSE +201 -0
  16. data/democlient/README.md +2 -0
  17. data/democlient/Rakefile +9 -0
  18. data/democlient/adp_userinfo_ruby.rb +216 -0
  19. data/democlient/config.ru +24 -0
  20. data/democlient/config/authorizationcode_config.yml +15 -0
  21. data/democlient/config/certs/apiclient_iat.key +27 -0
  22. data/democlient/config/certs/apiclient_iat.pem +45 -0
  23. data/democlient/config/certs/apiclient_iat.pfx +0 -0
  24. data/democlient/config/clientcredential_config.yml +11 -0
  25. data/democlient/public/favicon.ico +0 -0
  26. data/democlient/public/images/.gitkeep +0 -0
  27. data/democlient/public/images/ADP_logo_tagline.png +0 -0
  28. data/democlient/public/images/busy.gif +0 -0
  29. data/democlient/public/images/hazel_icon.png +0 -0
  30. data/democlient/public/images/hazel_small.png +0 -0
  31. data/democlient/public/javascripts/.gitkeep +0 -0
  32. data/democlient/public/stylesheets/.gitkeep +0 -0
  33. data/democlient/public/stylesheets/main.css +225 -0
  34. data/democlient/spec/adp_connection_ruby_spec.rb +14 -0
  35. data/democlient/spec/spec_helper.rb +23 -0
  36. data/democlient/views/authorization_code.erb +128 -0
  37. data/democlient/views/client_credentials.erb +76 -0
  38. data/democlient/views/layout.erb +52 -0
  39. data/democlient/views/welcome.erb +33 -0
  40. data/lib/adp/product/dto/user_info.rb +30 -0
  41. data/lib/adp/product/userinfo.rb +11 -0
  42. data/lib/adp/product/userinfo/helper.rb +40 -0
  43. data/lib/adp/product/userinfo/version.rb +7 -0
  44. metadata +162 -0
@@ -0,0 +1,24 @@
1
+ # Load path and gems/bundler
2
+ $LOAD_PATH << File.expand_path(File.dirname(__FILE__))
3
+ $LOAD_PATH << File.expand_path(File.dirname(__FILE__))+'../pkg'
4
+
5
+ require "bundler"
6
+ Bundler.require
7
+
8
+ # Local config
9
+ require "find"
10
+
11
+ # %w{config/initializers lib}.each do |load_path|
12
+ # Find.find(load_path) { |f|
13
+ # require f unless f.match(/\/\..+$/) || File.directory?(f)
14
+ # }
15
+ # end
16
+
17
+
18
+ use Rack::Session::Pool
19
+ set :protection, :session => true
20
+
21
+ # Load app
22
+ require "adp_userinfo_ruby"
23
+ #run AdpConnectionRuby
24
+ AdpConnectionRuby.run!
@@ -0,0 +1,15 @@
1
+ clientID: ec762f06-7410-4f6d-aa82-969902c1836a
2
+ clientSecret: 6daf2cd7-4604-46c0-ab43-a645a6571d34
3
+ sslCertPath: config/certs/apiclient_iat.pem
4
+ sslKeyPath: config/certs/apiclient_iat.key
5
+ sslKeyPass: adpadp10
6
+ tokenServerURL: https://iat-api.adp.com/auth/oauth/v2/token
7
+ disconnectURL: https://iat-accounts.adp.com/auth/oauth/v2/logout
8
+ apiRequestURL: https://iat-api.adp.com
9
+ baseAuthorizationURL: https://iat-accounts.adp.com/auth/oauth/v2/authorize
10
+ redirectURL: http://localhost:8889/callback
11
+ accessScope: hr.workerInformationManagement.workerManagement.workerViewing.worker.read hr.workerInformationManagement.workerManagement.associateManagment.associate.read hr.workerInformationManagement.workerManagement.employeeManagement.employee.read,
12
+ responseType: code
13
+ scope: openid
14
+ defaultexpiration: 3600
15
+ grantType: authorization_code
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEpAIBAAKCAQEA5KnQ/0vmU/PZCs3Cw/chQMjzBELDUC/yOXfPRsXness3PXij
3
+ vPO/ROnQUJ3GY4A32gT6Cw3TjWOyOhWLN5/0ly9aeUSWM+sDWYYSyKp4XRQEc802
4
+ WvOh9oVjRptU3ACPqVaEMq3UF7GNc/F1ms+yI0fdcKabCNiL1tLmQ3u0yZpn1bjG
5
+ Hh0ynqWNf14Mz9hJnXt+SBZc2qIewUH8bYLFJDlC7RHBI62idWXcUW5bSE/9wxE5
6
+ SrUQZCymA7udIYY+7eaAJQXEYlmhRNS/05D6O+71qiIPFOz01rjmg/Dw6F9ZtusY
7
+ DSIFI3F1XogxYODwxRtA6e8/Ldg1gkJqozqDwwIDAQABAoIBAErvT7tqPygCAH2m
8
+ 4o3f3fjiIamiy2jq3YFxvu6dindWQ1sUvuv8IRFPYmIY4lvXN/ZtrReUR2DNbCnW
9
+ x5HKDJjC/u5AyMxo1ucupdc27kzqc28TsB1sPAaSve70loGmeW3wGVCWYKwHFqkJ
10
+ VxYNvH4NXgc9wg7LEECtSqKQ1rU+EuMb9EkHC16lFj6039MqqeTzwz/3r2k76dZv
11
+ CqJDPGFwLtEOE256QnOHeXTBrKs6LTmKQAsZ5jTbQb4sjErkI1ZOWGWCdnP+WKZA
12
+ 8pz0SzhzIgKlEsZKkh3Bgt+pUB6uTFYezU5I0KJqFVw65CZH5AI6bZbWRGrc2UDY
13
+ smiwRwECgYEA+a8MY+uBY1il6gJutsM/UJ7betlabrhwyru4Gf6GLkMVSB3qWjNi
14
+ OXBgT/w8O3rSH4E+FK9zTN1fZMS4s3rbo6uUhp0aS3MaWbSqEsGqSyGbAu78WBER
15
+ LTAyTf2kGhbjmHk2C9qTPoGg6YaisdyRwR7w2Tu6z8HlbbwcLyrm7YECgYEA6nKj
16
+ wsueRbYoZLutzprXfapwqnR67WtaI/gVKmzRn31IQqWFA4ucwFWKUnvNX6VcGyuZ
17
+ ykxliwq5S0oRxWLQb92vjFL5W/zu9O2uiJ7da5eyBmzSYQuvh2xQcupyjkZgDZ4f
18
+ zr0EDhmce8uwC6evxKsJHYlf5DvEAYdbV/Qd20MCgYEA4LAGFmT4Ks67f7pwp0dM
19
+ 0uAh4ot2Ne0Ek2waYEoLtdXocN1653EWE1ptUY1LJruAG5nSpAq/V4xfK+9bxyfo
20
+ P4FIR1tZLkyGifNqmTZuaO308M7fhuDU9DVLD6QQ6OlwJuXtHP21Q6qjg4MFJcm3
21
+ 4HJXiyWVFyEFtZpyQn/5EAECgYBeBtQ+z8MOWlwg6lRuxBMgxzagZk7W4XMpcdmr
22
+ RjFcMbbFY/TQ0zFuwd/T7OsVLRCfpQDs7W7cMNTXqUEvVM4bz2EUekKf7fU4LgsN
23
+ qAlNmW1Avmwxl6oyOfKZ5AVFolvrmjtPgucZcJQd4jcctYf87EufmPToaD/YDR1J
24
+ TRKcWQKBgQCQN7GPScLsLPjB7OL8eyvw+ZQpmtxxX6QrQ73uXCyF4tFa+teSpbkj
25
+ 9r35IGo9Asa8VK7gLvS7NuACgzPz6vO6KRllRVBbGjmS03u8mRYj/c0RhlRarOg1
26
+ DbuyN75TupfTdOCPa8eG1I71FUOsBsMDQ60S2KGAH0MSI0EheXaBBQ==
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,45 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIH6zCCBdOgAwIBAgIKZr3kwAAAAAAKpjANBgkqhkiG9w0BAQwFADB3MRMwEQYK
3
+ CZImiZPyLGQBGRYDY29tMRMwEQYKCZImiZPyLGQBGRYDQURQMRIwEAYKCZImiZPy
4
+ LGQBGRYCQUQxEjAQBgoJkiaJk/IsZAEZFgJFUzEjMCEGA1UEAxMaQURQIEludGVy
5
+ bmFsIElzc3VpbmcgQ0EgMDEwHhcNMTYwMjE3MTYzNjE5WhcNMTgwMjE2MTYzNjE5
6
+ WjCBxjELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxETAPBgNVBAcT
7
+ CFJvc2VsYW5kMScwJQYDVQQKEx5BdXRvbWF0aWMgRGF0YSBQcm9jZXNzaW5nLCBJ
8
+ bmMxGDAWBgNVBAsTD0lubm92YXRpb24gTGFiczEkMCIGA1UEAxMbTGFicyBBUEkg
9
+ Q2xpZW50IENlcnRpZmljYXRlMSYwJAYJKoZIhvcNAQkBFhd3aWxsaWFtLm55cXVp
10
+ c3RAYWRwLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOSp0P9L
11
+ 5lPz2QrNwsP3IUDI8wRCw1Av8jl3z0bF53rLNz14o7zzv0Tp0FCdxmOAN9oE+gsN
12
+ 041jsjoVizef9JcvWnlEljPrA1mGEsiqeF0UBHPNNlrzofaFY0abVNwAj6lWhDKt
13
+ 1BexjXPxdZrPsiNH3XCmmwjYi9bS5kN7tMmaZ9W4xh4dMp6ljX9eDM/YSZ17fkgW
14
+ XNqiHsFB/G2CxSQ5Qu0RwSOtonVl3FFuW0hP/cMROUq1EGQspgO7nSGGPu3mgCUF
15
+ xGJZoUTUv9OQ+jvu9aoiDxTs9Na45oPw8OhfWbbrGA0iBSNxdV6IMWDg8MUbQOnv
16
+ Py3YNYJCaqM6g8MCAwEAAaOCAycwggMjMB0GA1UdDgQWBBQFzk1EYEhaT60rKMur
17
+ Sy2a928RADAfBgNVHSMEGDAWgBQqCSRfiwi+a3Yo4qkvugtqSgHyQTCCATMGA1Ud
18
+ HwSCASowggEmMIIBIqCCAR6gggEahoHSbGRhcDovLy9DTj1BRFAlMjBJbnRlcm5h
19
+ bCUyMElzc3VpbmclMjBDQSUyMDAxLENOPURDMVBSUEtJU1VCQ0ExLENOPUNEUCxD
20
+ Tj1QdWJsaWMlMjBLZXklMjBTZXJ2aWNlcyxDTj1TZXJ2aWNlcyxDTj1Db25maWd1
21
+ cmF0aW9uLERDPUFELERDPUFEUCxEQz1jb20/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
22
+ TGlzdD9iYXNlP29iamVjdENsYXNzPWNSTERpc3RyaWJ1dGlvblBvaW50hkNodHRw
23
+ Oi8vcGtpLmVzLmFkLmFkcC5jb20vQ0RQL0FEUCUyMEludGVybmFsJTIwSXNzdWlu
24
+ ZyUyMENBJTIwMDEuY3JsMIIBKQYIKwYBBQUHAQEEggEbMIIBFzCBwwYIKwYBBQUH
25
+ MAKGgbZsZGFwOi8vL0NOPUFEUCUyMEludGVybmFsJTIwSXNzdWluZyUyMENBJTIw
26
+ MDEsQ049QUlBLENOPVB1YmxpYyUyMEtleSUyMFNlcnZpY2VzLENOPVNlcnZpY2Vz
27
+ LENOPUNvbmZpZ3VyYXRpb24sREM9QUQsREM9QURQLERDPWNvbT9jQUNlcnRpZmlj
28
+ YXRlP2Jhc2U/b2JqZWN0Q2xhc3M9Y2VydGlmaWNhdGlvbkF1dGhvcml0eTBPBggr
29
+ BgEFBQcwAoZDaHR0cDovL3BraS5lcy5hZC5hZHAuY29tL0FJQS9BRFAlMjBJbnRl
30
+ cm5hbCUyMElzc3VpbmclMjBDQSUyMDAxLmNydDAOBgNVHQ8BAf8EBAMCBaAwOwYJ
31
+ KwYBBAGCNxUHBC4wLAYkKwYBBAGCNxUIh8uaRoWIo3mJnzPt/z2gqRiBfIenqFWE
32
+ hfd9AgFkAgEGMBMGA1UdJQQMMAoGCCsGAQUFBwMBMBsGCSsGAQQBgjcVCgQOMAww
33
+ CgYIKwYBBQUHAwEwDQYJKoZIhvcNAQEMBQADggIBADIiHvrqYlYyuyJlvoupZM5r
34
+ bbx2miegyE7iQeSZx9Li5bkkJpQ4hZFfKeGWWFE/5Dkv0tRdbpbOt+F7Jild3rH5
35
+ azZXuhznkeLb//e7dF9w0F7DTmfWA8NASRjNadkWWe9JcyHw+jieVtePE95oCg1b
36
+ jFYoek1Hy4hBdAKpQZBhEe6VivKrVwiBLMV+Quwxdf4IKK4IdGBtW5eizDpu806p
37
+ 6ZkxF6lTeznRxYa2bikZUs1sF4vlNI4g40+WugUtyR/KMRx6aLAaLyFJ3gqbBwsk
38
+ 8k2g/DgPum36NfXtlAEkQd/rAu2bkct6wuzHdKQq5b3+f1bjO2twVt6n4vlS6hAJ
39
+ 9fdxnTayKOZbFlSKkNl4uCeY4PnE/brnz5CHsArFGW6N5Fxa7Q8FDuRMhLDqi2tw
40
+ eF6sqrDzf70c0uxtA1l8ScA0iaZ3uEoe/y2TAXxJ4GfWIpdZisVaWaJbfYmEXneQ
41
+ hDBmwdfNAEsEkCgq5eqMOLDxcXOsSHdLWL8K0Q6LpZOyd/yWSws9wN0mwRoftnSe
42
+ DNIvLBbhIJGy+XFjQWQBmG19V/Gpo1Z+cSSiZA0qzZlsUqv8j6ZwuuKRZoSmHK/7
43
+ gsNNU2qrfprQOvrBO4sOHGrRwT6aAnW2ATkh5kPQdun9o2FtxqlXRKGm17Pa+1LT
44
+ yxZqfRg+TMQYhmzGoICk
45
+ -----END CERTIFICATE-----
@@ -0,0 +1,11 @@
1
+ clientID: 88a73992-07f2-4714-ab4b-de782acd9c4d
2
+ clientSecret: a130adb7-aa51-49ac-9d02-0d4036b63541
3
+ sslCertPath: config/certs/apiclient_iat.pem
4
+ sslKeyPath: config/certs/apiclient_iat.key
5
+ sslKeyPass: adpadp10
6
+ tokenServerURL: https://iat-api.adp.com/auth/oauth/v2/token
7
+ disconnectURL: https://iat-accounts.adp.com/auth/oauth/v2/logout
8
+ apiRequestURL: https://iat-api.adp.com
9
+ responseType: code
10
+ defaultexpiration: 3600
11
+ grantType: client_credentials
Binary file
File without changes
Binary file
File without changes
File without changes
@@ -0,0 +1,225 @@
1
+ @media screen {
2
+ /* --- Reset Styles --- */
3
+ * {
4
+ list-style: none;
5
+ margin: 0;
6
+ padding: 0;
7
+ }
8
+
9
+ html, body {
10
+ height: 100%;
11
+ width: 100%;
12
+ background: #0769ad;
13
+ margin: 0 auto;
14
+ padding: 0 20px;
15
+ }
16
+
17
+ #container {
18
+ background: #0769ad;
19
+ margin: 0 auto;
20
+ padding: 0 20px;
21
+ }
22
+
23
+ /* --- Welcome Page Styles --- */
24
+ body {
25
+ background: #0769ad;
26
+ color: #333;
27
+ font-family: Sans-Serif;
28
+ line-height: 18px;
29
+ }
30
+
31
+ .wrapper {
32
+ background: #fff;
33
+ -moz-box-shadow: 0 0 10px rgba(0,0,0,.3);
34
+ -webkit-box-shadow: 0 0 10px rgba(0,0,0,.3);
35
+ box-shadow: 0 0 10px rgba(0,0,0,.3);
36
+ margin: 16px auto;
37
+ max-width: 960px;
38
+ padding: 2.25%; /* 18px / 800px */
39
+ width: 85%;
40
+ }
41
+
42
+ h1 {
43
+ font-size: 36px;
44
+ line-height: 54px;
45
+ }
46
+
47
+ h2 {
48
+ border-bottom: 2px solid #ccc;
49
+ font-size: 24px;
50
+ line-height: 36px;
51
+ margin-bottom: 16px;
52
+ }
53
+
54
+ h3 {
55
+ font-size: 18px;
56
+ line-height: 36px;
57
+ }
58
+
59
+ p {
60
+ margin-bottom: 18px;
61
+ }
62
+
63
+ .main {
64
+ overflow: hidden;
65
+ }
66
+
67
+ .content {
68
+ float: left;
69
+ width: 470px; /* 480px / 800px */
70
+ }
71
+
72
+ .sidebar_logo {
73
+ float: right;
74
+ }
75
+
76
+ .sidebar {
77
+ background: #eee;
78
+ border: 1px solid #ccc;
79
+ float: right;
80
+ padding: 2.08333333333%; /* 5px / 240px */
81
+ width: 390px; /* 240px / 800px */
82
+ min-height: 170px;
83
+ height: 240px;
84
+ position:relative;
85
+ }
86
+
87
+ .sidebar ul {
88
+ font-size: 14px;
89
+ }
90
+
91
+ .results_footer {
92
+ background-color: #ccc;
93
+ width:95%;
94
+ height:65px;
95
+ bottom: 0px;
96
+ left: 10px;
97
+ position: absolute;
98
+ }
99
+
100
+ .branding {
101
+ clear: both;
102
+ }
103
+
104
+ footer.branding {
105
+ border-top: 2px solid #ccc;
106
+ margin-top: 20px;
107
+ padding-top: 20px;
108
+ }
109
+
110
+ table.success {
111
+ max-width:300px;
112
+ }
113
+ table.success th {
114
+ text-align: left;
115
+ }
116
+ table.success td {
117
+ text-align: left;
118
+ width: 200px;
119
+ }
120
+ .truncate {
121
+ width: 250px;
122
+ white-space: nowrap;
123
+ overflow: hidden;
124
+ text-overflow: ellipsis;
125
+ }
126
+
127
+ .menu a {
128
+ color: #428bca;
129
+ text-decoration: none;
130
+ font-size: 1.3em;
131
+ width: 200px;
132
+ height: 32px;
133
+ display: inline-block;
134
+ background-color: #ccc;
135
+ padding: 10px 10px 10px 5px;
136
+ text-align: center;
137
+ vertical-align: middle;
138
+ }
139
+
140
+ .menu a:hover {
141
+ text-decoration: underline;
142
+ }
143
+
144
+ .menu span {
145
+ text-decoration: none;
146
+ font-size: 1.3em;
147
+ width: 200px;
148
+ height: 32px;
149
+ display: inline-block;
150
+ background-color: #ccc;
151
+ padding: 10px 10px 10px 5px;
152
+ text-align: center;
153
+ vertical-align: middle;
154
+ }
155
+
156
+ .content code {
157
+ font-family: Monaco, Monospace;
158
+ display: block;
159
+ padding: 1em;
160
+ margin-left: 25px;
161
+ background: #2f1f1e;
162
+ font-size: 0.1em;
163
+ font-weight: bold;
164
+ color: #CEC8AA;
165
+ -webkit-border-radius: 12px;
166
+ -moz-border-radius: 12px;
167
+ border-radius: 12px;
168
+ }
169
+
170
+ .busy_icon {
171
+ /*
172
+ width: 24px;
173
+ height: 24px;
174
+ */
175
+ /* margin-top: -20px; */
176
+ margin-left: 10px;
177
+ display: inline-block;
178
+ background-color: transparent;
179
+ }
180
+ .busy_icon img {
181
+ border-radius: 5px;
182
+ box-shadow: 0 1px 3px rgba(0,0,0,0.3);
183
+ margin: 5px auto;
184
+ background: url("../images/busy.gif");
185
+ vertical-align: middle;
186
+ }
187
+
188
+ .message {
189
+ background-color: oldlace;
190
+ padding: 20px;
191
+ color: green;
192
+ }
193
+ }
194
+
195
+ @media screen and (max-width: 600px) {
196
+ .wrapper {
197
+ -moz-box-shadow: none;
198
+ -webkit-box-shadow: none;
199
+ box-shadow: none;
200
+ width: auto;
201
+ }
202
+
203
+ .content, .sidebar {
204
+ float: none;
205
+ width: 100%;
206
+ }
207
+
208
+ .sidebar {
209
+ background: transparent;
210
+ border: none;
211
+ border-top: 2px solid #ccc;
212
+ padding: 0;
213
+ }
214
+
215
+ h1 {
216
+ font-size: 24px;
217
+ line-height: 36px;
218
+ }
219
+
220
+ h2 {
221
+ font-size: 18px;
222
+ line-height: 24px;
223
+ }
224
+ }
225
+
@@ -0,0 +1,14 @@
1
+ require_relative "spec_helper"
2
+ require_relative "../adp_userinfo_ruby.rb"
3
+
4
+ def app
5
+ AdpConnectionRuby
6
+ end
7
+
8
+ describe AdpConnectionRuby do
9
+ it "responds with a welcome message" do
10
+ get '/'
11
+
12
+ last_response.body.must_include 'Welcome to the Sinatra Template!'
13
+ end
14
+ end
@@ -0,0 +1,23 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'bundler'
4
+
5
+ Bundler.setup
6
+ Bundler.require
7
+
8
+ ENV["RACK_ENV"] = "test"
9
+
10
+ require 'minitest/pride'
11
+ require 'minitest/autorun'
12
+ require 'minitest/spec'
13
+ require 'rack/test'
14
+
15
+
16
+ require "find"
17
+ %w{./config/initializers ./lib}.each do |load_path|
18
+ Find.find(load_path) { |f| require f if f.match(/\.rb$/) }
19
+ end
20
+
21
+ class MiniTest::Spec
22
+ include Rack::Test::Methods
23
+ end
@@ -0,0 +1,128 @@
1
+ <div class="menu">
2
+ <p>
3
+ <strong>Authorization </strong><br/>
4
+ <a href="/client_credentials" >Client Credential</a> &nbsp; &nbsp;
5
+ <span href="authorization_code" >Authentication Code</span>
6
+ </p>
7
+ </div>
8
+
9
+ <div class="content">
10
+ <ol>
11
+ <li><b>1.</b>
12
+ <% if session["AuthorizationCode"].nil? %>
13
+ <a href="/authorization_code/login">Login</a>
14
+ <% else %>
15
+ <a>Loged in</a>
16
+ <% end %>
17
+ <br/>
18
+ <code>
19
+ <pre>
20
+ authorizationcode_config = AuthorizationCodeConfiguration.new(config);
21
+ connection = ADPApiConnectionFactory::createConnection(authorizationcode_config)
22
+ authorizationurl = connection.get_authorization_url
23
+ redirect authorizationurl unless authorizationurl.nil?
24
+ </pre>
25
+ </code>
26
+ </li>
27
+ <br/>
28
+ <li><b>2.</b>
29
+ <% if session["AuthorizationCode"].nil? || session["AuthorizationCode"].connection_configuration.authorizationCode.nil? %>
30
+ <a>Get Token</a>
31
+ <% else %>
32
+ <a href="/authorization_code/get_token">Get Token</a>
33
+ <% end %>
34
+ <br/>
35
+ <code>
36
+ <pre>
37
+ #store callback code
38
+ connection.connection_configuration.authorizationCode = params[:code]
39
+ #then connect
40
+ connection.connect()
41
+ </pre>
42
+ </code>
43
+ </li>
44
+ <% if session["AuthorizationCode"].nil? || session["AuthorizationCode"].connection_configuration.authorizationCode.nil? || session["AuthorizationCode"].access_token.nil? %>
45
+ <br/>
46
+ <% else %>
47
+ <br/>
48
+ <li><b>3.</b>
49
+ <a href="/authorization_code/get_userinfo">Get UserInfo</a>
50
+ <br/>
51
+ <code>
52
+ <pre>
53
+ #create new helper with a valid, connected connection
54
+ helper = UserInfoHelper.new(connection)
55
+ #then get the data and put it in a user defined PORO (plain old Ruby Object)
56
+ json_data = helper.get_user_info()
57
+ results[:userinfo] = UserInfo.new(json_data)
58
+ </pre>
59
+ </code>
60
+ </li>
61
+ <% end %>
62
+ <!--
63
+ <li><b>3.</b> <a>Get UserInfo</3.a></li>
64
+ <br/>
65
+ -->
66
+
67
+ <% if !(session["AuthorizationCode"].nil? || session["AuthorizationCode"].connection_configuration.authorizationCode.nil?) %>
68
+
69
+ <li><b>4.</b>
70
+ <a href="/authorization_code/logout">Logout</a>
71
+ <code>
72
+
73
+ connection.logout()
74
+
75
+ </code>
76
+ </li>
77
+ <% end %>
78
+
79
+ </ol>
80
+
81
+ <p>
82
+ <% if (!(session["AuthorizationCode"].nil? || session["AuthorizationCode"].connection_configuration.authorizationCode.nil? || view_bag[:userinfo].nil?)) %>
83
+ <article style="border: 1px ridge #ccc;">
84
+ <table class="success">
85
+ <tr><th>Sub</th> <td class="truncate"><p><%= view_bag[:userinfo].sub %></p></td></tr>
86
+ <tr><th>Organization OID</th> <td><%= view_bag[:userinfo].organizationOID %></td></tr>
87
+ <tr><th>Associate ID</th> <td><%= view_bag[:userinfo].associateOID %></td></tr>
88
+ <tr><th>Given Name</th> <td><%= view_bag[:userinfo].givenName %></td></tr>
89
+ <tr><th>Family Name</th> <td><%= view_bag[:userinfo].familyName %></td></tr>
90
+ <tr><th>Name</th> <td><%= view_bag[:userinfo].name %></td></tr>
91
+ <tr><th>Email</th> <td><%= view_bag[:userinfo].email %></td></tr>
92
+ </table>
93
+ <!-- <b>Picture</b> <dd>@Model.picture</dd> -->
94
+ </article>
95
+ <% end %>
96
+ </p>
97
+ </div>
98
+
99
+ <div class="sidebar">
100
+ <h3>Results...</h3>
101
+ <ul>
102
+ <!--
103
+ <li><b>Ruby:</b> <%= RUBY_VERSION %></li>
104
+ <li><b>Environment:</b> <%= ENV["RACK_ENV"] %></li>
105
+ <li><b>Server:</b> <%= @env["SERVER_SOFTWARE"] %></li>
106
+ <li><b>Port:</b> <%= @env["SERVER_PORT"] %></li>
107
+ -->
108
+ <% if session["AuthorizationCode"].nil? %>
109
+ <li><b>Access token:</b> not logged in</li>
110
+ <li>&nbsp;</li>
111
+ <li>&nbsp;</li>
112
+ <li>&nbsp;</li>
113
+ <li>&nbsp;</li>
114
+ <% else %>
115
+ <li><b>Authorization code:</b> <%= session["AuthorizationCode"].connection_configuration.authorizationCode %> </li>
116
+ <% unless session["AuthorizationCode"].access_token.nil? %>
117
+ <li><b>Access token:</b> <%= session["AuthorizationCode"].access_token.token %> </li>
118
+ <li><b>Token type:</b> <%= session["AuthorizationCode"].access_token.token_type %> </li>
119
+ <li><b>Expires in:</b> <%= session["AuthorizationCode"].access_token.expires_in %> </li>
120
+ <li><b>Scope:</b> <%= session["AuthorizationCode"].access_token.scope %> </li>
121
+ <li><b>Expires on:</b> <%= session["AuthorizationCode"].access_token.expires_on %> </li>
122
+ <% end %>
123
+ <% end %>
124
+ </ul>
125
+ <div class="results_footer" style="">
126
+ <a href="https://github.com/adplabs/adp-userinfo-ruby.git"><img class="sidebar_logo" src="/images/ADP_logo_tagline.png" alt="Marketplace/Ruby/Library" /></a>
127
+ </div>
128
+ </div>