adp-connection 0.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.
Files changed (52) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +4 -0
  5. data/CODE_OF_CONDUCT.md +49 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +202 -0
  8. data/README.md +56 -0
  9. data/Rakefile +6 -0
  10. data/adp-connection.gemspec +39 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/democlient/Gemfile +16 -0
  14. data/democlient/LICENSE +201 -0
  15. data/democlient/README.md +2 -0
  16. data/democlient/Rakefile +9 -0
  17. data/democlient/adp_connection_ruby.rb +215 -0
  18. data/democlient/config.ru +24 -0
  19. data/democlient/config/authorizationcode_config.yml +15 -0
  20. data/democlient/config/certs/apiclient_iat.key +27 -0
  21. data/democlient/config/certs/apiclient_iat.pem +45 -0
  22. data/democlient/config/certs/apiclient_iat.pfx +0 -0
  23. data/democlient/config/clientcredential_config.yml +11 -0
  24. data/democlient/public/favicon.ico +0 -0
  25. data/democlient/public/images/.gitkeep +0 -0
  26. data/democlient/public/images/ADP_logo_tagline.png +0 -0
  27. data/democlient/public/images/busy.gif +0 -0
  28. data/democlient/public/images/hazel_icon.png +0 -0
  29. data/democlient/public/images/hazel_small.png +0 -0
  30. data/democlient/public/javascripts/.gitkeep +0 -0
  31. data/democlient/public/stylesheets/.gitkeep +0 -0
  32. data/democlient/public/stylesheets/main.css +163 -0
  33. data/democlient/spec/adp_connection_ruby_spec.rb +14 -0
  34. data/democlient/spec/spec_helper.rb +23 -0
  35. data/democlient/views/authorization_code.erb +90 -0
  36. data/democlient/views/client_credentials.erb +76 -0
  37. data/democlient/views/layout.erb +40 -0
  38. data/democlient/views/welcome.erb +34 -0
  39. data/lib/adp/Product/.gitkeep +0 -0
  40. data/lib/adp/Product/dto/.gitkeep +0 -0
  41. data/lib/adp/access_token.rb +44 -0
  42. data/lib/adp/api_connection.rb +153 -0
  43. data/lib/adp/api_connection_factory.rb +32 -0
  44. data/lib/adp/authorization_code_configuration.rb +33 -0
  45. data/lib/adp/authorization_code_connection.rb +97 -0
  46. data/lib/adp/client_credential_configuration.rb +18 -0
  47. data/lib/adp/client_credential_connection.rb +9 -0
  48. data/lib/adp/connection.rb +16 -0
  49. data/lib/adp/connection/version.rb +5 -0
  50. data/lib/adp/connection_configuration.rb +30 -0
  51. data/lib/adp/connection_exception.rb +12 -0
  52. metadata +154 -0
@@ -0,0 +1,2 @@
1
+ # adp-connection-ruby
2
+ A library for Ruby that help applications connect to the ADP API Gateway
@@ -0,0 +1,9 @@
1
+ %w{ bundler find rake/testtask}.each { |lib| require lib }
2
+
3
+ task :default => :spec
4
+
5
+ Rake::TestTask.new(:spec) do |t|
6
+ t.test_files = FileList['spec/*_spec.rb']
7
+ end
8
+
9
+
@@ -0,0 +1,215 @@
1
+ require 'yaml'
2
+ require 'tilt/erb'
3
+ require 'logger'
4
+ require 'adp/connection'
5
+
6
+ clientcredential_config = YAML.load(ERB.new(File.read('config/clientcredential_config.yml')).result)
7
+ authorizationcode_config = YAML.load(ERB.new(File.read('config/authorizationcode_config.yml')).result)
8
+
9
+ configure do
10
+ Log = Logger.new(STDOUT);
11
+ #Logger.new("sinatra.log")
12
+ Log.level = Logger::DEBUG
13
+ end
14
+
15
+ class AdpConnectionRuby < Sinatra::Base
16
+
17
+ enable :sessions
18
+ set :public_folder => "public", :static => true
19
+
20
+ #set :protection, :session => true
21
+ set :port, 8889
22
+
23
+ results = {
24
+ :message => "Welcome",
25
+ :auth_type => nil
26
+ }
27
+
28
+
29
+ before do
30
+
31
+ # request.path_info = '/foo/bar/baz'
32
+ end
33
+
34
+ after do
35
+ # erb :welcome, :locals => { :view_bag => results }
36
+ end
37
+
38
+ get "/" do
39
+ results[:message] = nil
40
+ erb :welcome, :locals => { :view_bag => results }
41
+ end
42
+
43
+ get '/client_credentials' do
44
+ results[:auth_type] = :client_credentials
45
+ results[:message] = nil
46
+
47
+ erb :client_credentials, :locals => { :view_bag => results }
48
+ end
49
+
50
+ get '/client_credentials/logout' do
51
+ session["ClientCredential"] = nil
52
+ results[:message] = nil
53
+ results[:auth_type] = :client_credentials
54
+ results[:userinfo] = nil
55
+
56
+ erb :client_credentials, :locals => { :view_bag => results }
57
+ end
58
+
59
+ get '/client_credentials/login' do
60
+ results[:auth_type] = :client_credentials
61
+ results[:message] = nil
62
+ connection = session["ClientCredential"]
63
+ results[:userinfo] = nil
64
+
65
+ if (connection.nil?)
66
+
67
+ # get new connection configuration
68
+ # YAML config object placed in yaml configuration files
69
+ config = YAML.load_file('config/clientcredential_config.yml');
70
+
71
+ if (!config || config.nil?)
72
+ results[:message] = "Unable to load configuration settings from file (config/clientcredential_config.yml)"
73
+ else
74
+ begin
75
+ clientcredential_config = Adp::Connection::ClientCredentialConfiguration.new(config);
76
+
77
+ connection = Adp::Connection::ApiConnectionFactory::createConnection(clientcredential_config)
78
+
79
+ connection.connect();
80
+
81
+ if (!connection.is_connected_indicator?)
82
+ results[:message] = "Error attempting to establish a connection"
83
+ Log.error "Not connected"
84
+ else
85
+ Log.debug("Connected and ready for getting data");
86
+ session["ClientCredential"] = connection;
87
+ end
88
+ end
89
+ end
90
+ end
91
+ erb :client_credentials, :locals => { :view_bag => results }
92
+ end
93
+
94
+ get '/authorization_code' do
95
+ results[:message] = nil
96
+ results[:auth_type] = :authorization_code
97
+ erb :authorization_code, :locals => { :view_bag => results}
98
+ end
99
+
100
+ get '/authorization_code/logout' do
101
+ session["AuthorizationCode"] = nil
102
+ results[:message] = nil
103
+ results[:auth_type] = :authorization_code
104
+ results[:userinfo] = nil
105
+
106
+ erb :authorization_code, :locals => { :view_bag => results }
107
+ end
108
+
109
+ get '/authorization_code/login' do
110
+ connection = session["AuthorizationCode"]
111
+ results[:message] = nil
112
+ authorizationurl = nil
113
+ results[:userinfo] = nil
114
+
115
+ if (connection.nil?)
116
+
117
+ # get new connection configuration
118
+ # YAML config object placed in yaml configuration files
119
+ config = YAML.load_file('config/authorizationcode_config.yml');
120
+
121
+ if (config.nil? || !config) then
122
+ results[:message] = "Unable to load configuration settings from file (config/authorizationcode_config.yml)"
123
+ else
124
+ begin
125
+ authorizationcode_config = Adp::Connection::AuthorizationCodeConfiguration.new(config);
126
+
127
+ Log.debug("Configuration from file was #{authorizationcode_config}")
128
+ connection = Adp::Connection::ApiConnectionFactory::createConnection(authorizationcode_config)
129
+
130
+ Log.debug("Connection object was #{connection}")
131
+ session["AuthorizationCode"] = connection;
132
+ end
133
+ end
134
+ end
135
+
136
+ authorizationurl = connection.get_authorization_url
137
+
138
+ Log.debug("Redirecting to authorizationurl #{authorizationurl} from connection #{connection}")
139
+
140
+ results[:auth_type] = :authorization_code
141
+ results[:authorizationurl] = authorizationurl
142
+
143
+ redirect authorizationurl unless authorizationurl.nil?
144
+
145
+ erb :authorization_code, :locals => { :view_bag => results}
146
+ end
147
+
148
+ get '/callback' do
149
+ results[:auth_type] = :authorization_code
150
+ results[:message] = nil
151
+
152
+ if !params[:error].nil?
153
+ results[:message] = "Callback Error: #{params[:error]}"
154
+ else
155
+ if params[:code].nil?
156
+ results[:message] = "Callback Error: Unauthorized"
157
+ else
158
+ connection = session["AuthorizationCode"]
159
+ unless connection.nil?
160
+ connection.connection_configuration.authorizationCode = params[:code]
161
+ Log.debug("Got authorization code #{connection.connection_configuration.authorizationCode}")
162
+ end
163
+ end
164
+ end
165
+ Log.debug("Back to callback with #{params[:code]}")
166
+ erb :authorization_code, :locals => { :view_bag => results}
167
+ end
168
+
169
+ get '/authorization_code/get_token' do
170
+ results[:auth_type] = :authorization_code
171
+ results[:message] = nil
172
+ results[:userinfo] = nil
173
+ connection = session["AuthorizationCode"]
174
+
175
+ begin
176
+ unless connection.nil? || connection.connection_configuration.authorizationCode.nil?
177
+ connection.connect()
178
+ session["AuthorizationCode"] = connection
179
+ end
180
+ rescue Adp::Connection::ConnectionException
181
+ e = env['sinatra.error']
182
+ results[:message] = "Connection error: The requested token could not be retrieved"
183
+ end
184
+
185
+ erb :authorization_code, :locals => { :view_bag => results}
186
+ end
187
+
188
+ get '/authorization_code/get_userinfo' do
189
+ results[:auth_type] = :authorization_code
190
+ results[:message] = nil
191
+ connection = session["AuthorizationCode"]
192
+
193
+ begin
194
+ Log.debug("Do we have a connection object? #{connection}")
195
+ unless connection.nil? || connection.connection_configuration.authorizationCode.nil?
196
+ Log.debug("Check if we are connected: #{connection.access_token}")
197
+ if (connection.is_connected_indicator?)
198
+ Log.debug("Getting helper object")
199
+ helper = Adp::Connection::UserInfoHelper.new(connection)
200
+ Log.debug("getting userinfo using helper object")
201
+ json_data = helper.get_user_info()
202
+ results[:userinfo] = Adp::Connection::UserInfo.new(json_data)
203
+
204
+ Log.debug("Got user info #{json_data}")
205
+ end
206
+ end
207
+ Log.debug("Done getting userinfo #{results[:userinfo]}")
208
+ rescue Adp::Connection::ConnectionException
209
+ e = env['sinatra.error']
210
+ results[:message] = "Connection error: #{e}"
211
+ end
212
+
213
+ erb :authorization_code, :locals => { :view_bag => results}
214
+ end
215
+ end
@@ -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_connection_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
File without changes
File without changes
File without changes
@@ -0,0 +1,163 @@
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
+ }
13
+
14
+ /* --- Welcome Page Styles --- */
15
+ body {
16
+ background: #eee;
17
+ color: #333;
18
+ font-family: Sans-Serif;
19
+ line-height: 18px;
20
+ }
21
+
22
+ .wrapper {
23
+ background: #fff;
24
+ -moz-box-shadow: 0 0 10px rgba(0,0,0,.3);
25
+ -webkit-box-shadow: 0 0 10px rgba(0,0,0,.3);
26
+ box-shadow: 0 0 10px rgba(0,0,0,.3);
27
+ margin: 16px auto;
28
+ max-width: 960px;
29
+ padding: 2.25%; /* 18px / 800px */
30
+ width: 85%;
31
+ }
32
+
33
+ h1 {
34
+ font-size: 36px;
35
+ line-height: 54px;
36
+ }
37
+
38
+ h2 {
39
+ border-bottom: 2px solid #ccc;
40
+ font-size: 24px;
41
+ line-height: 36px;
42
+ margin-bottom: 16px;
43
+ }
44
+
45
+ h3 {
46
+ font-size: 18px;
47
+ line-height: 36px;
48
+ }
49
+
50
+ p {
51
+ margin-bottom: 18px;
52
+ }
53
+
54
+ .main {
55
+ overflow: hidden;
56
+ }
57
+
58
+ .content {
59
+ float: left;
60
+ width: 54%; /* 480px / 800px */
61
+ }
62
+
63
+ .sidebar_logo {
64
+ float: right;
65
+ }
66
+
67
+ .sidebar {
68
+ background: #eee;
69
+ border: 1px solid #ccc;
70
+ float: right;
71
+ padding: 2.08333333333%; /* 5px / 240px */
72
+ width: 390px; /* 240px / 800px */
73
+ min-height: 170px;
74
+ height: 240px;
75
+ position:relative;
76
+ }
77
+
78
+ .sidebar ul {
79
+ font-size: 14px;
80
+ }
81
+
82
+ .results_footer {
83
+ background-color: #ccc;
84
+ width:95%;
85
+ height:65px;
86
+ bottom: 0px;
87
+ left: 10px;
88
+ position: absolute;
89
+ }
90
+
91
+ .branding {
92
+ clear: both;
93
+ }
94
+
95
+ footer.branding {
96
+ border-top: 2px solid #ccc;
97
+ margin-top: 20px;
98
+ padding-top: 20px;
99
+ }
100
+
101
+ table.success {
102
+ max-width:300px;
103
+ }
104
+ table.success th {
105
+ text-align: left;
106
+ }
107
+ table.success td {
108
+ text-align: left;
109
+ width: 200px;
110
+ }
111
+ .truncate {
112
+ width: 250px;
113
+ white-space: nowrap;
114
+ overflow: hidden;
115
+ text-overflow: ellipsis;
116
+ }
117
+
118
+ .content code {
119
+ font-family: Monaco, Monospace;
120
+ display: block;
121
+ padding: 1em;
122
+ margin-left: 25px;
123
+ background: #2f1f1e;
124
+ font-size: 0.1em;
125
+ font-weight: bold;
126
+ color: #CEC8AA;
127
+ -webkit-border-radius: 12px;
128
+ -moz-border-radius: 12px;
129
+ border-radius: 12px;
130
+ }
131
+ }
132
+
133
+ @media screen and (max-width: 600px) {
134
+ .wrapper {
135
+ -moz-box-shadow: none;
136
+ -webkit-box-shadow: none;
137
+ box-shadow: none;
138
+ width: auto;
139
+ }
140
+
141
+ .content, .sidebar {
142
+ float: none;
143
+ width: 100%;
144
+ }
145
+
146
+ .sidebar {
147
+ background: transparent;
148
+ border: none;
149
+ border-top: 2px solid #ccc;
150
+ padding: 0;
151
+ }
152
+
153
+ h1 {
154
+ font-size: 24px;
155
+ line-height: 36px;
156
+ }
157
+
158
+ h2 {
159
+ font-size: 18px;
160
+ line-height: 24px;
161
+ }
162
+ }
163
+