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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: de969b2a08a156833a4566dfe6948d613dcc6048
4
- data.tar.gz: cb9f5a959c79c6d9643b03e86dbc4c7aa7cab43c
2
+ SHA256:
3
+ metadata.gz: 2b800ac0051d06dab6cdbfa9952c8b1872c1050e738ddfcded8acc6ea91fa2ea
4
+ data.tar.gz: 147fdf458655134354020a018ea16c7445efb79d67057a0f283820d2d165ffe0
5
5
  SHA512:
6
- metadata.gz: 2441f2bfed38efe079115e7f406473096d8373d4d99da6e7fd4e0ba4a8a9d3d9c3a1e7a705ffc3ab3f7373683db2d164569a2e530d9300fb91aab60b22be19bf
7
- data.tar.gz: 2f92115f04d9ff44f5ba2f444afe2b8966863812511f6d6b47680642ee079a73ed56b1a798c8cc1ff39e33894a172c978b66baaf437d4993bc1650c4a34c0dfd
6
+ metadata.gz: cdee496466a821c553a0078c73a2938f0095df3f7073d2cdf46dd53eb328299b6e5cfeca1c16568c46cf8d83a751f1304cf1f34b5d6112708553fe9673810f7b
7
+ data.tar.gz: 5bdbc9915de2cf72b2838978c6b33540455dadc3bd6d3f92a3be723e1279677144b93f94440942612fa9d687a42b7f52918716e48db0ab3d81888dfbaad48c3d
data/.dockerignore ADDED
@@ -0,0 +1,12 @@
1
+ .idea
2
+ .DS_Store
3
+ .dockerignore
4
+ .gitignore
5
+ .travis.yml
6
+ Gemfile.lock
7
+ Dockerfile
8
+ log/
9
+ coverage/
10
+ spec/examples.txt
11
+ pkg/
12
+ frontend/node_modules
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)
@@ -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 . .
@@ -0,0 +1,7 @@
1
+ FROM node:6
2
+
3
+ WORKDIR /opt/phobos_checkpoint_ui
4
+
5
+ ADD frontend/ .
6
+
7
+ RUN npm install
data/README.md CHANGED
@@ -25,11 +25,11 @@ Or install it yourself as:
25
25
 
26
26
  ## Usage
27
27
 
28
- 1) Add `require 'phobos_checkpoint_ui/tasks'` to your __Rakefile__
28
+ 1. Add `require 'phobos_checkpoint_ui/tasks'` to your **Rakefile**
29
29
 
30
- 2) Run `rake phobos_checkpoint_ui:copy_assets`, this will copy the precompile assets to `./public`
30
+ 2. Run `rake phobos_checkpoint_ui:copy_assets`, this will copy the precompile assets to `./public`
31
31
 
32
- 3) Create/update `config.ru` and add:
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 fron-end is prepared to receive the following options:
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
- * `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
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(PhobosDBCheckpoint::EventsAPI, {
55
- logo: '/assets/logo.png',
56
- title: 'Checkpoint',
57
- env_label: 'production'
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.
@@ -0,0 +1,7 @@
1
+ session_secret: the_secret
2
+ saml:
3
+ issuer: the_issuer
4
+ idp_cert_fingerprint: the_idp_cert_fingerprint
5
+ assertion_consumer_service_url: the_assertion_consumer_service_url
6
+ idp_sso_target_url: the_idp_sso_target_url
7
+ idp_logout_url: the_idp_logout_url
@@ -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
@@ -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 3000",
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.15.1",
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",
@@ -4,9 +4,10 @@
4
4
  */
5
5
  const { join } = require('path')
6
6
  const env = process.env.NODE_ENV
7
- const output = (env === 'production')
8
- ? { publicPath: '/assets/', path: join(__dirname, '../assets') }
9
- : { publicPath: '/' }
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:9292',
44
+ target: 'http://localhost:3000',
40
45
  secure: false
41
46
  },
42
47
  '/configs': {
43
- target: 'http://localhost:9292',
48
+ target: 'http://localhost:3000',
44
49
  secure: false
45
50
  },
46
51
  '/assets/*': {
47
- target: 'http://localhost:9292',
52
+ target: 'http://localhost:3000',
48
53
  secure: false
49
54
  }
50
55
  }
@@ -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, configs = {})
4
- StaticApp.configs = configs
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
- set :logging, nil
8
- set :public_folder, -> { File.join(Dir.pwd, 'public') }
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
@@ -1,3 +1,3 @@
1
1
  module PhobosCheckpointUI
2
- VERSION = '1.4.1'
2
+ VERSION = '2.0.0'
3
3
  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: 1.4.1
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: 2017-03-23 00:00:00.000000000 Z
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
- - circle.yml
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.5.1
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