phobos_checkpoint_ui 1.4.1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.dockerignore +12 -0
- data/.travis.yml +37 -0
- data/CHANGELOG.md +6 -0
- data/Dockerfile.backend +16 -0
- data/Dockerfile.frontend +7 -0
- data/README.md +71 -13
- data/config/checkpoint_ui.yml +7 -0
- data/docker-compose.yml +15 -0
- data/frontend/package.json +2 -2
- data/frontend/sagui.config.js +11 -6
- data/lib/phobos_checkpoint_ui.rb +29 -3
- data/lib/phobos_checkpoint_ui/app.rb +19 -5
- data/lib/phobos_checkpoint_ui/saml_handler.rb +21 -0
- data/lib/phobos_checkpoint_ui/static_app.rb +113 -2
- data/lib/phobos_checkpoint_ui/version.rb +1 -1
- data/phobos_checkpoint_ui.gemspec +4 -1
- metadata +66 -18
- data/circle.yml +0 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 2b800ac0051d06dab6cdbfa9952c8b1872c1050e738ddfcded8acc6ea91fa2ea
|
4
|
+
data.tar.gz: 147fdf458655134354020a018ea16c7445efb79d67057a0f283820d2d165ffe0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cdee496466a821c553a0078c73a2938f0095df3f7073d2cdf46dd53eb328299b6e5cfeca1c16568c46cf8d83a751f1304cf1f34b5d6112708553fe9673810f7b
|
7
|
+
data.tar.gz: 5bdbc9915de2cf72b2838978c6b33540455dadc3bd6d3f92a3be723e1279677144b93f94440942612fa9d687a42b7f52918716e48db0ab3d81888dfbaad48c3d
|
data/.dockerignore
ADDED
data/.travis.yml
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
sudo: required
|
2
|
+
language: ruby
|
3
|
+
rvm:
|
4
|
+
- 2.5.1
|
5
|
+
- 2.4.4
|
6
|
+
- 2.3.7
|
7
|
+
|
8
|
+
services:
|
9
|
+
- docker
|
10
|
+
|
11
|
+
env:
|
12
|
+
global:
|
13
|
+
- CC_TEST_REPORTER_ID=26a517d263807d03ee1a05ef17d6dd73ca65131216f113e85171ba1bf5622114
|
14
|
+
|
15
|
+
before_install:
|
16
|
+
- env
|
17
|
+
- docker-compose --version
|
18
|
+
- docker --version
|
19
|
+
- docker-compose config
|
20
|
+
- docker-compose build backend
|
21
|
+
- docker-compose build frontend
|
22
|
+
|
23
|
+
before_script:
|
24
|
+
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
25
|
+
- chmod +x ./cc-test-reporter
|
26
|
+
- if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then ./cc-test-reporter before-build || echo "Skipping CC coverage before-build"; fi
|
27
|
+
- mkdir coverage/
|
28
|
+
- touch ./coverage/.resultset.json
|
29
|
+
|
30
|
+
script:
|
31
|
+
- docker-compose run --rm backend rspec
|
32
|
+
- docker-compose run --rm frontend npm run test:unit
|
33
|
+
|
34
|
+
after_script:
|
35
|
+
- cat ./coverage/.resultset.json | sed "s|/opt/phobos_checkpoint_ui|$PWD|" > ./coverage/.newresultset.json
|
36
|
+
- cp ./coverage/.newresultset.json ./coverage/.resultset.json
|
37
|
+
- if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT || echo "Skipping CC coverage after-build"; fi
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file.
|
|
4
4
|
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
5
5
|
and this project adheres to [Semantic Versioning](http://semver.org/).
|
6
6
|
|
7
|
+
## 2.0.0 (2018-06-26)
|
8
|
+
|
9
|
+
- [added] Customizable logging middleware
|
10
|
+
- [added] Configurable SAML support
|
11
|
+
- [added] Customizable SAML handler
|
12
|
+
|
7
13
|
## 1.4.1 (2017-03-23)
|
8
14
|
|
9
15
|
- [bugfix] Update dependency on phobos_db_checkpoint to support newer api (events without retry)
|
data/Dockerfile.backend
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
FROM ruby:2.4.1-alpine
|
2
|
+
|
3
|
+
RUN apk update && apk upgrade && \
|
4
|
+
apk add --no-cache bash git openssh build-base
|
5
|
+
|
6
|
+
RUN gem install bundler -v 1.16.0
|
7
|
+
|
8
|
+
WORKDIR /opt/phobos_checkpoint_ui
|
9
|
+
|
10
|
+
ADD Gemfile Gemfile
|
11
|
+
ADD phobos_checkpoint_ui.gemspec phobos_checkpoint_ui.gemspec
|
12
|
+
ADD lib/phobos_checkpoint_ui/version.rb lib/phobos_checkpoint_ui/version.rb
|
13
|
+
|
14
|
+
RUN bundle install
|
15
|
+
|
16
|
+
ADD . .
|
data/Dockerfile.frontend
ADDED
data/README.md
CHANGED
@@ -25,11 +25,11 @@ Or install it yourself as:
|
|
25
25
|
|
26
26
|
## Usage
|
27
27
|
|
28
|
-
1
|
28
|
+
1. Add `require 'phobos_checkpoint_ui/tasks'` to your **Rakefile**
|
29
29
|
|
30
|
-
2
|
30
|
+
2. Run `rake phobos_checkpoint_ui:copy_assets`, this will copy the precompile assets to `./public`
|
31
31
|
|
32
|
-
3
|
32
|
+
3. Create/update `config.ru` and add:
|
33
33
|
|
34
34
|
```ruby
|
35
35
|
require 'phobos_checkpoint_ui'
|
@@ -39,25 +39,83 @@ require 'phobos_checkpoint_ui'
|
|
39
39
|
# ...
|
40
40
|
|
41
41
|
# run PhobosDBCheckpoint::EventsAPI
|
42
|
-
run PhobosCheckpointUI::App.new(PhobosDBCheckpoint::EventsAPI)
|
42
|
+
run PhobosCheckpointUI::App.new(api_app: PhobosDBCheckpoint::EventsAPI)
|
43
43
|
```
|
44
44
|
|
45
|
-
It is possible to configure some aspects of the app, `App.new` accepts a hash with options to be delivered to the front-end. The
|
45
|
+
It is possible to configure some aspects of the app, `App.new` accepts a hash with options to be delivered to the front-end. The front-end is prepared to receive the following options:
|
46
46
|
|
47
|
-
|
48
|
-
|
49
|
-
|
47
|
+
- `logo` - Path of image to be used as a logo (can be something inside `/public`)
|
48
|
+
- `title` - App title
|
49
|
+
- `env_label` - Special label display the environment
|
50
50
|
|
51
51
|
Example:
|
52
52
|
|
53
53
|
```ruby
|
54
|
-
run PhobosCheckpointUI::App.new(
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
54
|
+
run PhobosCheckpointUI::App.new(
|
55
|
+
api_app: PhobosDBCheckpoint::EventsAPI,
|
56
|
+
configs: {
|
57
|
+
logo: '/assets/logo.png',
|
58
|
+
title: 'Checkpoint',
|
59
|
+
env_label: 'production'
|
60
|
+
})
|
59
61
|
```
|
60
62
|
|
63
|
+
### SAML
|
64
|
+
|
65
|
+
If configured, Checkpoint UI will support authentication and authorisation with IDP (SAML).
|
66
|
+
|
67
|
+
#### Configuration
|
68
|
+
|
69
|
+
```yml
|
70
|
+
session_secret: the_session_secret
|
71
|
+
saml_config:
|
72
|
+
issuer: the_issuer
|
73
|
+
idp_cert_fingerprint: the_idp_cert_fingerprint
|
74
|
+
assertion_consumer_service_url: the_assertion_consumer_service_url
|
75
|
+
idp_sso_target_url: the_idp_sso_target_url
|
76
|
+
idp_logout_url: the_idp_logout_url
|
77
|
+
```
|
78
|
+
|
79
|
+
If `saml_config` is not provided the Events API will be open for anyone to access.
|
80
|
+
|
81
|
+
PhobosCheckpointUI ships with a default SamlHandler that does not handle authorization, being authenticated is enough. It also sets the same default username for all users. If you want to tweak this, you can customize it (see below)
|
82
|
+
|
83
|
+
#### Customizing the SAML handler
|
84
|
+
|
85
|
+
If authenticating with IDP is not enough, and you want more control over authorization, you can customize this with your own SamlHandler.
|
86
|
+
|
87
|
+
Example:
|
88
|
+
|
89
|
+
```ruby
|
90
|
+
class MySamlHandler < PhobosCheckpointUI::SamlHandler
|
91
|
+
def self.authorized?(user_json)
|
92
|
+
# my custom check
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
run PhobosCheckpointUI::App.new(
|
97
|
+
api_app: PhobosDBCheckpoint::EventsAPI,
|
98
|
+
saml_handler: MySamlHandler
|
99
|
+
)
|
100
|
+
```
|
101
|
+
|
102
|
+
If `saml_handler` is not specified, `PhobosCheckpointUI::SamlHandler` will be used instead which returns some default values without looking at IDP payload.
|
103
|
+
|
104
|
+
### Logging
|
105
|
+
|
106
|
+
Logging middleware can be injected via the `logging_middleware` option.
|
107
|
+
|
108
|
+
Example:
|
109
|
+
|
110
|
+
```ruby
|
111
|
+
run PhobosCheckpointUI::App.new(
|
112
|
+
api_app: PhobosDBCheckpoint::EventsAPI,
|
113
|
+
logger_middleware: MyLoggerMiddleware
|
114
|
+
)
|
115
|
+
```
|
116
|
+
|
117
|
+
The logger middleware will inject itself as rack middleware. If not specified, `Rack::NullLogger` will be used (no logging).
|
118
|
+
|
61
119
|
## Development
|
62
120
|
|
63
121
|
The front-end is written with `React` and `Redux`, ensure that you have `nodejs` version >= 6.3 installed.
|
data/docker-compose.yml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
version: '2'
|
2
|
+
services:
|
3
|
+
backend:
|
4
|
+
build:
|
5
|
+
context: .
|
6
|
+
dockerfile: Dockerfile.backend
|
7
|
+
command: rspec
|
8
|
+
network_mode: host
|
9
|
+
volumes:
|
10
|
+
- ./coverage:/opt/phobos_checkpoint_ui/coverage
|
11
|
+
frontend:
|
12
|
+
build:
|
13
|
+
context: .
|
14
|
+
dockerfile: Dockerfile.frontend
|
15
|
+
command: npm run test:unit
|
data/frontend/package.json
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
"scripts": {
|
11
11
|
"test": "npm run test:lint && npm run test:unit",
|
12
12
|
"build": "sagui build",
|
13
|
-
"develop": "sagui develop --port
|
13
|
+
"develop": "sagui develop --port 3001",
|
14
14
|
"dist": "cross-env NODE_ENV=production sagui build --optimize",
|
15
15
|
"start": "npm run develop",
|
16
16
|
"test:coverage": "npm run test:unit -- --coverage",
|
@@ -27,7 +27,7 @@
|
|
27
27
|
"karma-babel-preprocessor": "6.0.1",
|
28
28
|
"mappersmith": "0.13.3",
|
29
29
|
"material-ui": "0.15.4",
|
30
|
-
"moment": "2.
|
30
|
+
"moment": "2.22.2",
|
31
31
|
"react": "15.3.2",
|
32
32
|
"react-addons-test-utils": "15.3.2",
|
33
33
|
"react-dom": "15.3.2",
|
data/frontend/sagui.config.js
CHANGED
@@ -4,9 +4,10 @@
|
|
4
4
|
*/
|
5
5
|
const { join } = require('path')
|
6
6
|
const env = process.env.NODE_ENV
|
7
|
-
const output =
|
8
|
-
|
9
|
-
|
7
|
+
const output =
|
8
|
+
env === 'production'
|
9
|
+
? { publicPath: '/assets/', path: join(__dirname, '../assets') }
|
10
|
+
: { publicPath: '/' }
|
10
11
|
|
11
12
|
module.exports = {
|
12
13
|
pages: ['index'],
|
@@ -35,16 +36,20 @@ module.exports = {
|
|
35
36
|
|
36
37
|
develop: {
|
37
38
|
proxy: {
|
39
|
+
'/auth/*': {
|
40
|
+
target: 'http://localhost:3000',
|
41
|
+
secure: false
|
42
|
+
},
|
38
43
|
'/api/v1/*': {
|
39
|
-
target: 'http://localhost:
|
44
|
+
target: 'http://localhost:3000',
|
40
45
|
secure: false
|
41
46
|
},
|
42
47
|
'/configs': {
|
43
|
-
target: 'http://localhost:
|
48
|
+
target: 'http://localhost:3000',
|
44
49
|
secure: false
|
45
50
|
},
|
46
51
|
'/assets/*': {
|
47
|
-
target: 'http://localhost:
|
52
|
+
target: 'http://localhost:3000',
|
48
53
|
secure: false
|
49
54
|
}
|
50
55
|
}
|
data/lib/phobos_checkpoint_ui.rb
CHANGED
@@ -3,10 +3,36 @@ require 'rack'
|
|
3
3
|
require 'sinatra'
|
4
4
|
require 'phobos_db_checkpoint'
|
5
5
|
require 'phobos_db_checkpoint/events_api'
|
6
|
-
|
6
|
+
require 'phobos_checkpoint_ui/saml_handler'
|
7
7
|
require 'phobos_checkpoint_ui/version'
|
8
|
-
require 'phobos_checkpoint_ui/static_app'
|
9
|
-
require 'phobos_checkpoint_ui/app'
|
10
8
|
|
11
9
|
module PhobosCheckpointUI
|
10
|
+
class << self
|
11
|
+
def config
|
12
|
+
@config || {}
|
13
|
+
end
|
14
|
+
|
15
|
+
def use_saml?
|
16
|
+
self.config.dig(:saml).present?
|
17
|
+
end
|
18
|
+
|
19
|
+
def configure(path='config/checkpoint_ui.yml')
|
20
|
+
@config = read_config(path)
|
21
|
+
end
|
22
|
+
|
23
|
+
def read_config(path)
|
24
|
+
return {} unless File.exists? path
|
25
|
+
|
26
|
+
YAML.load(
|
27
|
+
ERB.new(
|
28
|
+
File.read(
|
29
|
+
File.expand_path(path)
|
30
|
+
)
|
31
|
+
).result
|
32
|
+
).deep_symbolize_keys
|
33
|
+
end
|
34
|
+
end
|
12
35
|
end
|
36
|
+
|
37
|
+
require 'phobos_checkpoint_ui/static_app'
|
38
|
+
require 'phobos_checkpoint_ui/app'
|
@@ -1,11 +1,25 @@
|
|
1
1
|
module PhobosCheckpointUI
|
2
2
|
module App
|
3
|
-
def self.new(api_app
|
4
|
-
|
3
|
+
def self.new(api_app:,
|
4
|
+
config: {},
|
5
|
+
saml_handler: PhobosCheckpointUI::SamlHandler,
|
6
|
+
logger_middleware: nil
|
7
|
+
)
|
8
|
+
|
9
|
+
StaticApp.configs = config
|
10
|
+
|
11
|
+
if logger_middleware.present?
|
12
|
+
middleware_klass = logger_middleware.dig(:class)
|
13
|
+
raise ':class key missing in :logger_middleware parameter' unless middleware_klass
|
14
|
+
|
15
|
+
StaticApp.use(middleware_klass, logger_middleware.dig(:opts) || {})
|
16
|
+
else
|
17
|
+
StaticApp.use(Rack::NullLogger)
|
18
|
+
end
|
19
|
+
|
5
20
|
Rack::URLMap.new(
|
6
|
-
'/' => StaticApp,
|
7
|
-
'/ping' => Proc.new { |env| ['200', { 'Content-Type' => 'text/plain' }, ['PONG']] }
|
8
|
-
'/api' => api_app
|
21
|
+
'/' => StaticApp.new(api_app, saml_handler),
|
22
|
+
'/ping' => Proc.new { |env| ['200', { 'Content-Type' => 'text/plain' }, ['PONG']] }
|
9
23
|
)
|
10
24
|
end
|
11
25
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module PhobosCheckpointUI
|
2
|
+
class SamlHandler
|
3
|
+
def initialize(data)
|
4
|
+
@data = data
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.authorized?(user_json)
|
8
|
+
true
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.username(user_json)
|
12
|
+
return 'unknown_user' unless user_json
|
13
|
+
|
14
|
+
JSON(user_json).dig('username')
|
15
|
+
end
|
16
|
+
|
17
|
+
def user
|
18
|
+
{ username: 'checkpoint_ui_user' }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -4,16 +4,127 @@ module PhobosCheckpointUI
|
|
4
4
|
attr_accessor :configs
|
5
5
|
end
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
def initialize(app = nil, saml_handler = SamlHandler)
|
8
|
+
super()
|
9
|
+
@app = app
|
10
|
+
@saml_handler = saml_handler
|
11
|
+
@template_cache = Tilt::Cache.new
|
12
|
+
yield self if block_given?
|
13
|
+
end
|
14
|
+
|
15
|
+
SESSION_KEY = '_phobos_checkpoint_ui'
|
16
|
+
NO_AUTH = %w(
|
17
|
+
/ping
|
18
|
+
/auth/saml
|
19
|
+
/auth/failure
|
20
|
+
/auth/saml/callback
|
21
|
+
).freeze
|
22
|
+
|
23
|
+
set(:logging, false)
|
24
|
+
set(:show_exceptions, false)
|
25
|
+
set(:public_folder, -> { File.join(Dir.pwd, 'public') })
|
26
|
+
|
27
|
+
configure do
|
28
|
+
PhobosCheckpointUI.configure
|
29
|
+
|
30
|
+
if PhobosCheckpointUI.use_saml?
|
31
|
+
require 'omniauth'
|
32
|
+
require 'omniauth-saml'
|
33
|
+
require 'sinatra/cookies'
|
34
|
+
|
35
|
+
set(:sessions, key: SESSION_KEY, expire_after: 1_800) # 30 min in seconds
|
36
|
+
set(:session_secret, PhobosCheckpointUI.config.dig(:session_secret))
|
37
|
+
|
38
|
+
use OmniAuth::Strategies::SAML, PhobosCheckpointUI.config.dig(:saml)
|
39
|
+
helpers Sinatra::Cookies
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
before do
|
44
|
+
cache_control :no_cache
|
45
|
+
|
46
|
+
if PhobosCheckpointUI.use_saml?
|
47
|
+
request.env['REMOTE_USER'] = @saml_handler.username(session[:user])
|
48
|
+
|
49
|
+
return if no_auth_path?
|
50
|
+
|
51
|
+
if api_request?
|
52
|
+
return reply_unauthorized if !signed_in?
|
53
|
+
return reply_forbidden unless @saml_handler.authorized?(session[:user])
|
54
|
+
end
|
55
|
+
|
56
|
+
return reply_redirect_to_login if !signed_in?
|
57
|
+
end
|
58
|
+
end
|
9
59
|
|
10
60
|
get '/configs' do
|
11
61
|
content_type :json
|
12
62
|
self.class.configs.to_json
|
13
63
|
end
|
14
64
|
|
65
|
+
if PhobosCheckpointUI.use_saml?
|
66
|
+
post '/auth/saml/callback' do
|
67
|
+
origin = cookies.delete(:origin)
|
68
|
+
session[:user] = @saml_handler.new(omniauth_data).user.to_json
|
69
|
+
redirect to(origin || '/')
|
70
|
+
end
|
71
|
+
|
72
|
+
get '/logout' do
|
73
|
+
session[:user] = nil
|
74
|
+
redirect to(PhobosCheckpointUI.config.dig(:saml, :idp_logout_url))
|
75
|
+
end
|
76
|
+
|
77
|
+
get '/api/session' do
|
78
|
+
content_type :json
|
79
|
+
|
80
|
+
{ user: JSON(session[:user]) }.to_json
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
get '/api/*' do
|
85
|
+
env['PATH_INFO'] = env['PATH_INFO'].sub(/^\/api/, '')
|
86
|
+
status, headers, body = app.call(env)
|
87
|
+
@response.status = status
|
88
|
+
@response.body = body
|
89
|
+
@response.headers.merge! headers
|
90
|
+
nil
|
91
|
+
end
|
92
|
+
|
15
93
|
get '/*' do
|
16
94
|
send_file File.join(settings.public_folder, 'index.html')
|
17
95
|
end
|
96
|
+
|
97
|
+
private
|
98
|
+
|
99
|
+
def no_auth_path?
|
100
|
+
NO_AUTH.include?(request.path)
|
101
|
+
end
|
102
|
+
|
103
|
+
def api_request?
|
104
|
+
!!(request.path_info =~ %r{^/api})
|
105
|
+
end
|
106
|
+
|
107
|
+
def reply_unauthorized
|
108
|
+
content_type :json
|
109
|
+
halt 401, { error: 'Unauthorized' }.to_json
|
110
|
+
end
|
111
|
+
|
112
|
+
def reply_forbidden
|
113
|
+
content_type :json
|
114
|
+
halt 403, { error: 'Forbidden' }.to_json
|
115
|
+
end
|
116
|
+
|
117
|
+
def reply_redirect_to_login
|
118
|
+
cookies[:origin] = request.fullpath
|
119
|
+
redirect to('/auth/saml')
|
120
|
+
end
|
121
|
+
|
122
|
+
def signed_in?
|
123
|
+
!session[:user].nil?
|
124
|
+
end
|
125
|
+
|
126
|
+
def omniauth_data
|
127
|
+
request.env['omniauth.auth']
|
128
|
+
end
|
18
129
|
end
|
19
130
|
end
|
@@ -42,13 +42,16 @@ Gem::Specification.new do |spec|
|
|
42
42
|
spec.require_paths = ['lib']
|
43
43
|
|
44
44
|
spec.add_development_dependency 'bundler', '~> 1.12'
|
45
|
-
spec.add_development_dependency 'rake', '~> 10.0'
|
46
45
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
47
46
|
spec.add_development_dependency 'pry-byebug'
|
48
47
|
spec.add_development_dependency 'rack-test'
|
49
48
|
spec.add_development_dependency 'rspec_junit_formatter', '0.2.2'
|
49
|
+
spec.add_development_dependency 'simplecov'
|
50
50
|
|
51
51
|
spec.add_dependency 'rake'
|
52
52
|
spec.add_dependency 'sinatra'
|
53
53
|
spec.add_dependency 'phobos_db_checkpoint', '~> 3.0'
|
54
|
+
spec.add_dependency 'omniauth'
|
55
|
+
spec.add_dependency 'omniauth-saml'
|
56
|
+
spec.add_dependency 'sinatra-contrib'
|
54
57
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: phobos_checkpoint_ui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Túlio Ornelas
|
@@ -13,7 +13,7 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date:
|
16
|
+
date: 2018-06-29 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: bundler
|
@@ -29,20 +29,6 @@ dependencies:
|
|
29
29
|
- - "~>"
|
30
30
|
- !ruby/object:Gem::Version
|
31
31
|
version: '1.12'
|
32
|
-
- !ruby/object:Gem::Dependency
|
33
|
-
name: rake
|
34
|
-
requirement: !ruby/object:Gem::Requirement
|
35
|
-
requirements:
|
36
|
-
- - "~>"
|
37
|
-
- !ruby/object:Gem::Version
|
38
|
-
version: '10.0'
|
39
|
-
type: :development
|
40
|
-
prerelease: false
|
41
|
-
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
requirements:
|
43
|
-
- - "~>"
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: '10.0'
|
46
32
|
- !ruby/object:Gem::Dependency
|
47
33
|
name: rspec
|
48
34
|
requirement: !ruby/object:Gem::Requirement
|
@@ -99,6 +85,20 @@ dependencies:
|
|
99
85
|
- - '='
|
100
86
|
- !ruby/object:Gem::Version
|
101
87
|
version: 0.2.2
|
88
|
+
- !ruby/object:Gem::Dependency
|
89
|
+
name: simplecov
|
90
|
+
requirement: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
type: :development
|
96
|
+
prerelease: false
|
97
|
+
version_requirements: !ruby/object:Gem::Requirement
|
98
|
+
requirements:
|
99
|
+
- - ">="
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: rake
|
104
104
|
requirement: !ruby/object:Gem::Requirement
|
@@ -141,6 +141,48 @@ dependencies:
|
|
141
141
|
- - "~>"
|
142
142
|
- !ruby/object:Gem::Version
|
143
143
|
version: '3.0'
|
144
|
+
- !ruby/object:Gem::Dependency
|
145
|
+
name: omniauth
|
146
|
+
requirement: !ruby/object:Gem::Requirement
|
147
|
+
requirements:
|
148
|
+
- - ">="
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: '0'
|
151
|
+
type: :runtime
|
152
|
+
prerelease: false
|
153
|
+
version_requirements: !ruby/object:Gem::Requirement
|
154
|
+
requirements:
|
155
|
+
- - ">="
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
158
|
+
- !ruby/object:Gem::Dependency
|
159
|
+
name: omniauth-saml
|
160
|
+
requirement: !ruby/object:Gem::Requirement
|
161
|
+
requirements:
|
162
|
+
- - ">="
|
163
|
+
- !ruby/object:Gem::Version
|
164
|
+
version: '0'
|
165
|
+
type: :runtime
|
166
|
+
prerelease: false
|
167
|
+
version_requirements: !ruby/object:Gem::Requirement
|
168
|
+
requirements:
|
169
|
+
- - ">="
|
170
|
+
- !ruby/object:Gem::Version
|
171
|
+
version: '0'
|
172
|
+
- !ruby/object:Gem::Dependency
|
173
|
+
name: sinatra-contrib
|
174
|
+
requirement: !ruby/object:Gem::Requirement
|
175
|
+
requirements:
|
176
|
+
- - ">="
|
177
|
+
- !ruby/object:Gem::Version
|
178
|
+
version: '0'
|
179
|
+
type: :runtime
|
180
|
+
prerelease: false
|
181
|
+
version_requirements: !ruby/object:Gem::Requirement
|
182
|
+
requirements:
|
183
|
+
- - ">="
|
184
|
+
- !ruby/object:Gem::Version
|
185
|
+
version: '0'
|
144
186
|
description: Phobos Checkpoint UI is a GUI for phobos checkpoint API, it is compatible
|
145
187
|
with https://github.com/klarna/phobos_db_checkpoint
|
146
188
|
email:
|
@@ -156,9 +198,13 @@ executables:
|
|
156
198
|
extensions: []
|
157
199
|
extra_rdoc_files: []
|
158
200
|
files:
|
201
|
+
- ".dockerignore"
|
159
202
|
- ".gitignore"
|
160
203
|
- ".rspec"
|
204
|
+
- ".travis.yml"
|
161
205
|
- CHANGELOG.md
|
206
|
+
- Dockerfile.backend
|
207
|
+
- Dockerfile.frontend
|
162
208
|
- Gemfile
|
163
209
|
- LICENSE.txt
|
164
210
|
- README.md
|
@@ -172,7 +218,8 @@ files:
|
|
172
218
|
- assets/index.html
|
173
219
|
- bin/console
|
174
220
|
- bin/setup
|
175
|
-
-
|
221
|
+
- config/checkpoint_ui.yml
|
222
|
+
- docker-compose.yml
|
176
223
|
- frontend/.babelrc
|
177
224
|
- frontend/.editorconfig
|
178
225
|
- frontend/.eslintignore
|
@@ -300,6 +347,7 @@ files:
|
|
300
347
|
- frontend/src/views/style.js
|
301
348
|
- lib/phobos_checkpoint_ui.rb
|
302
349
|
- lib/phobos_checkpoint_ui/app.rb
|
350
|
+
- lib/phobos_checkpoint_ui/saml_handler.rb
|
303
351
|
- lib/phobos_checkpoint_ui/static_app.rb
|
304
352
|
- lib/phobos_checkpoint_ui/tasks.rb
|
305
353
|
- lib/phobos_checkpoint_ui/version.rb
|
@@ -327,7 +375,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
327
375
|
version: '0'
|
328
376
|
requirements: []
|
329
377
|
rubyforge_project:
|
330
|
-
rubygems_version: 2.
|
378
|
+
rubygems_version: 2.7.6
|
331
379
|
signing_key:
|
332
380
|
specification_version: 4
|
333
381
|
summary: Phobos Checkpoint UI is a GUI for phobos checkpoint API
|
data/circle.yml
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
machine:
|
2
|
-
pre:
|
3
|
-
- curl -sSL https://s3.amazonaws.com/circle-downloads/install-circleci-docker.sh | bash -s -- 1.10.0
|
4
|
-
services:
|
5
|
-
- docker
|
6
|
-
environment:
|
7
|
-
LOG_LEVEL: DEBUG
|
8
|
-
CI: true
|
9
|
-
ruby:
|
10
|
-
version: 2.3.1
|
11
|
-
node:
|
12
|
-
version: 6.3.0
|
13
|
-
|
14
|
-
# Ignores circle ci default database setup
|
15
|
-
database:
|
16
|
-
override:
|
17
|
-
- echo "overrides circle CI commands"
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
pre:
|
21
|
-
- docker -v
|
22
|
-
- gem install bundler -v 1.9.5
|
23
|
-
- bundle install
|
24
|
-
- cd frontend; npm install
|
25
|
-
|
26
|
-
test:
|
27
|
-
override:
|
28
|
-
- bundle exec rspec -r rspec_junit_formatter --format RspecJunitFormatter -o $CIRCLE_TEST_REPORTS/rspec/unit.xml
|
29
|
-
- cd frontend; npm run test:unit
|