adp-connection 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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
+