conjur-asset-ui-beta 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (150) hide show
  1. checksums.yaml +7 -0
  2. data/.git-hooks/pre_commit/trailing_whitespace.rb +26 -0
  3. data/.gitignore +23 -0
  4. data/.project +18 -0
  5. data/CHANGELOG.md +14 -0
  6. data/Gemfile +10 -0
  7. data/LICENSE.txt +22 -0
  8. data/README.md +72 -0
  9. data/Rakefile +76 -0
  10. data/TODO.md +31 -0
  11. data/app/.csscomb.json +304 -0
  12. data/app/.jshintrc +46 -0
  13. data/app/build/css/bootstrap.css +6906 -0
  14. data/app/build/fonts/glyphicons-halflings-regular.eot +0 -0
  15. data/app/build/fonts/glyphicons-halflings-regular.svg +288 -0
  16. data/app/build/fonts/glyphicons-halflings-regular.ttf +0 -0
  17. data/app/build/fonts/glyphicons-halflings-regular.woff +0 -0
  18. data/app/build/fonts/glyphicons-halflings-regular.woff2 +0 -0
  19. data/app/build/images/conjur-logo.svg +26 -0
  20. data/app/build/images/icon-client-pc.svg +12 -0
  21. data/app/build/images/icon-environment.png +0 -0
  22. data/app/build/images/icon-person.svg +12 -0
  23. data/app/build/images/icon-policy.png +0 -0
  24. data/app/build/images/icon-resource.png +0 -0
  25. data/app/build/images/icon-service-dots.svg +13 -0
  26. data/app/build/images/icon-variable.png +0 -0
  27. data/app/build/index.html +26 -0
  28. data/app/build/js/app.js +78070 -0
  29. data/app/build/js/pace.js +2 -0
  30. data/app/config/preprocessor.js +9 -0
  31. data/app/config/webpack.js +84 -0
  32. data/app/gulpfile.js +144 -0
  33. data/app/package.json +83 -0
  34. data/app/src/actions.js +493 -0
  35. data/app/src/app.js +76 -0
  36. data/app/src/clients/audit.js +54 -0
  37. data/app/src/clients/generic.js +87 -0
  38. data/app/src/clients/layer_members.js +36 -0
  39. data/app/src/clients/list.js +82 -0
  40. data/app/src/clients/members.js +37 -0
  41. data/app/src/clients/search.js +19 -0
  42. data/app/src/components/app/__tests__/app-test.js +22 -0
  43. data/app/src/components/app/app.js +66 -0
  44. data/app/src/components/audit/__tests__/table_header-test.js +40 -0
  45. data/app/src/components/audit/box.js +11 -0
  46. data/app/src/components/audit/constants.js +7 -0
  47. data/app/src/components/audit/entry.js +107 -0
  48. data/app/src/components/audit/fields_mixin.js +13 -0
  49. data/app/src/components/audit/humanize_event.js +216 -0
  50. data/app/src/components/audit/table.js +100 -0
  51. data/app/src/components/audit/table_header.js +38 -0
  52. data/app/src/components/audit/timestamp.js +30 -0
  53. data/app/src/components/chart/chart.js +539 -0
  54. data/app/src/components/chart/chart_helper_mixin.js +79 -0
  55. data/app/src/components/custom/list.js +5 -0
  56. data/app/src/components/custom/view.js +71 -0
  57. data/app/src/components/dashboard/activity.js +113 -0
  58. data/app/src/components/dashboard/dashboard.js +47 -0
  59. data/app/src/components/flash/flash.js +17 -0
  60. data/app/src/components/generic/__tests__/time-test.js +43 -0
  61. data/app/src/components/generic/annotations.js +41 -0
  62. data/app/src/components/generic/breadcrumbs.js +59 -0
  63. data/app/src/components/generic/foldable_audit_section.js +252 -0
  64. data/app/src/components/generic/list.js +144 -0
  65. data/app/src/components/generic/list_factory.js +42 -0
  66. data/app/src/components/generic/resource_link.js +65 -0
  67. data/app/src/components/generic/role_link.js +65 -0
  68. data/app/src/components/generic/tab_mixin.js +148 -0
  69. data/app/src/components/generic/time.js +34 -0
  70. data/app/src/components/group/list.js +5 -0
  71. data/app/src/components/group/view.js +137 -0
  72. data/app/src/components/host/activity.js +93 -0
  73. data/app/src/components/host/details.js +30 -0
  74. data/app/src/components/host/host_link.js +20 -0
  75. data/app/src/components/host/list.js +5 -0
  76. data/app/src/components/host/view.js +113 -0
  77. data/app/src/components/layer/list.js +5 -0
  78. data/app/src/components/layer/view.js +180 -0
  79. data/app/src/components/navbar/__tests__/navbar-test.js +21 -0
  80. data/app/src/components/navbar/nav_search_form.js +41 -0
  81. data/app/src/components/navbar/navbar.js +71 -0
  82. data/app/src/components/owned_resources/owned_resources.js +86 -0
  83. data/app/src/components/owned_resources/owned_resources_box.js +106 -0
  84. data/app/src/components/permissions/permissions.js +143 -0
  85. data/app/src/components/permissions/permissions_table.js +104 -0
  86. data/app/src/components/policy/list.js +5 -0
  87. data/app/src/components/policy/view.js +98 -0
  88. data/app/src/components/refresh/refresh.js +30 -0
  89. data/app/src/components/refresh/refresh.less +15 -0
  90. data/app/src/components/search/group.js +45 -0
  91. data/app/src/components/search/group_heading.js +50 -0
  92. data/app/src/components/search/group_title.js +38 -0
  93. data/app/src/components/search/result_item.js +57 -0
  94. data/app/src/components/search/search.js +103 -0
  95. data/app/src/components/user/activity.js +92 -0
  96. data/app/src/components/user/details.js +30 -0
  97. data/app/src/components/user/list.js +5 -0
  98. data/app/src/components/user/pubkeys.js +116 -0
  99. data/app/src/components/user/pubkeys.less +56 -0
  100. data/app/src/components/user/view.js +123 -0
  101. data/app/src/components/variable/activity.js +83 -0
  102. data/app/src/components/variable/details.js +48 -0
  103. data/app/src/components/variable/fetchers.js +83 -0
  104. data/app/src/components/variable/list.js +5 -0
  105. data/app/src/components/variable/updaters.js +83 -0
  106. data/app/src/components/variable/view.js +105 -0
  107. data/app/src/constants.js +35 -0
  108. data/app/src/images/conjur-logo.svg +26 -0
  109. data/app/src/images/icon-client-pc.svg +12 -0
  110. data/app/src/images/icon-environment.png +0 -0
  111. data/app/src/images/icon-person.svg +12 -0
  112. data/app/src/images/icon-policy.png +0 -0
  113. data/app/src/images/icon-resource.png +0 -0
  114. data/app/src/images/icon-service-dots.svg +13 -0
  115. data/app/src/images/icon-variable.png +0 -0
  116. data/app/src/pages/index.html +26 -0
  117. data/app/src/routes.js +57 -0
  118. data/app/src/stores/app_store.js +29 -0
  119. data/app/src/stores/audit_store.js +77 -0
  120. data/app/src/stores/group_store.js +105 -0
  121. data/app/src/stores/host_store.js +98 -0
  122. data/app/src/stores/layer_store.js +115 -0
  123. data/app/src/stores/policy_store.js +89 -0
  124. data/app/src/stores/resources_store.js +118 -0
  125. data/app/src/stores/route_store.js +24 -0
  126. data/app/src/stores/search_store.js +73 -0
  127. data/app/src/stores/user_store.js +111 -0
  128. data/app/src/stores/variable_store.js +94 -0
  129. data/app/src/styles/bootstrap.less +56 -0
  130. data/app/src/styles/styles.less +634 -0
  131. data/app/src/utils.js +43 -0
  132. data/app/src/vendor/pace.js +2 -0
  133. data/conjur-asset-ui.gemspec +36 -0
  134. data/features/navigation_bar.feature +31 -0
  135. data/features/step_definitions/custom_step.rb +32 -0
  136. data/features/support/env.rb +38 -0
  137. data/features/support/hooks.rb +30 -0
  138. data/features/support/world.rb +17 -0
  139. data/lib/conjur-asset-ui-version.rb +7 -0
  140. data/lib/conjur-asset-ui.rb +7 -0
  141. data/lib/conjur/command/ui.rb +54 -0
  142. data/lib/conjur/webserver/api_proxy.rb +94 -0
  143. data/lib/conjur/webserver/authorize.rb +28 -0
  144. data/lib/conjur/webserver/conjur_info.rb +33 -0
  145. data/lib/conjur/webserver/home.rb +42 -0
  146. data/lib/conjur/webserver/login.rb +57 -0
  147. data/lib/conjur/webserver/renderer.rb +34 -0
  148. data/lib/conjur/webserver/server.rb +130 -0
  149. data/public/js/views/roleGraph.js +91 -0
  150. metadata +373 -0
@@ -0,0 +1,42 @@
1
+ require 'time'
2
+ require 'rack/utils'
3
+ require 'rack/mime'
4
+
5
+ require 'conjur/webserver/renderer'
6
+
7
+ module Conjur
8
+ module WebServer
9
+ class Home
10
+ def initialize(root)
11
+ @root = root
12
+ end
13
+
14
+ # From Rack::File
15
+ def call(env)
16
+ path = File.expand_path(INDEX, @root)
17
+ renderer = Renderer.new @root
18
+
19
+ page = File.read(path)
20
+ files = [path]
21
+
22
+ last_modified = files.map(&File.method(:mtime)).max.httpdate
23
+
24
+ return [304, {}, []] if env['HTTP_IF_MODIFIED_SINCE'] == last_modified
25
+
26
+ size = Rack::Utils.bytesize(page)
27
+
28
+ headers = {
29
+ "Last-Modified" => last_modified,
30
+ "Content-Type" => "text/html",
31
+ "Content-Length" => size.to_s
32
+ }
33
+
34
+ [200, headers, env["REQUEST_METHOD"] == "HEAD" ? [] : [page]]
35
+ end
36
+
37
+ private
38
+
39
+ INDEX = 'index.html'.freeze
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,57 @@
1
+
2
+ module Conjur
3
+ module WebServer
4
+ class Login
5
+ attr_reader :sessionid
6
+
7
+ def initialize(sessionid)
8
+ @sessionid = sessionid
9
+ end
10
+
11
+ def call(env)
12
+ if sessionid = token_valid?(env)
13
+ require 'conjur/authn'
14
+ require 'base64'
15
+ token = Conjur::Authn.authenticate
16
+ api = Conjur::API.new_from_token token
17
+ userid = [ Conjur.configuration.account, "user", api.username ].join(':')
18
+
19
+ env["rack.session"][:sessionid] = sessionid
20
+ response = Rack::Response.new(env)
21
+ configuration = {
22
+ account: Conjur.configuration.account,
23
+ stack: Conjur.configuration.stack,
24
+ appliance_url: Conjur.configuration.appliance_url,
25
+ login: Conjur::Authn.get_credentials[0]
26
+ }
27
+ response.status = 302
28
+ response.set_cookie('conjur_configuration', value: JSON.pretty_generate(configuration), path: '/')
29
+ response.set_cookie('conjur_userid', value: userid, path: '/')
30
+ response['Location'] = "/ui"
31
+ response.finish
32
+ else
33
+ [ 403, {}, ["Authorization is missing or invalid"] ]
34
+ end
35
+ end
36
+
37
+ protected
38
+
39
+ def token_valid?(env)
40
+ token = extract_token(env)
41
+ if token == sessionid
42
+ sessionid
43
+ else
44
+ nil
45
+ end
46
+ end
47
+
48
+ def extract_token(env)
49
+ require 'cgi'
50
+ require 'uri'
51
+ query = URI.parse(env['REQUEST_URI']).query
52
+ query && ( sessionid = CGI.parse(query)['sessionid'] ) && sessionid[0]
53
+ end
54
+ end
55
+ end
56
+ end
57
+
@@ -0,0 +1,34 @@
1
+ module Conjur
2
+ module WebServer
3
+ # a helper class to render HTML partials
4
+ class Renderer
5
+ def initialize root
6
+ @root = root
7
+ @files = []
8
+ end
9
+
10
+ attr_reader :files
11
+
12
+ def render template
13
+ ERB.new(template).result binding
14
+ end
15
+
16
+ private
17
+
18
+ def method_missing name, *a, &b
19
+ super if !a.empty? || block_given?
20
+
21
+ # try to load fragments
22
+ path = expand_path "_#{name}.html"
23
+ super unless File.exists? path
24
+
25
+ @files << path
26
+ File.read path
27
+ end
28
+
29
+ def expand_path filename
30
+ File.expand_path(filename, @root)
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,130 @@
1
+ #
2
+ # Copyright (C) 2013 Conjur Inc
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of
5
+ # this software and associated documentation files (the "Software"), to deal in
6
+ # the Software without restriction, including without limitation the rights to
7
+ # use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8
+ # the Software, and to permit persons to whom the Software is furnished to do so,
9
+ # subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in all
12
+ # copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16
+ # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18
+ # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
+ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
+ #
21
+
22
+ module Conjur
23
+ module WebServer
24
+ # Launch a web server which serves local files and proxies to the remote Conjur API.
25
+ class Server
26
+ def start(root)
27
+ require 'rack'
28
+ require 'conjur/webserver/login'
29
+ require 'conjur/webserver/authorize'
30
+ require 'conjur/webserver/api_proxy'
31
+ require 'conjur/webserver/home'
32
+ require 'conjur/webserver/conjur_info'
33
+
34
+ # Pry is optional
35
+ begin
36
+ require 'pry'
37
+ rescue LoadError
38
+ end
39
+
40
+ sessionid = self.sessionid
41
+ cookie_options = {
42
+ secret: SecureRandom.hex(32),
43
+ expire_after: 24*60*60
44
+ }
45
+
46
+ api_stack = [
47
+ [Rack::Session::Cookie, cookie_options],
48
+ #[Conjur::WebServer::Authorize, sessionid],
49
+ [Conjur::WebServer::ConjurInfo]
50
+ ]
51
+
52
+ app = Rack::Builder.app do
53
+ map "/login" do
54
+ use Rack::Session::Cookie, cookie_options
55
+ run Conjur::WebServer::Login.new sessionid
56
+ end
57
+ map "/api" do
58
+ api_stack.each{|args| use *args}
59
+ run Conjur::WebServer::APIProxy.new
60
+ end
61
+ %w(js css fonts images maps).each do |path|
62
+ map "/#{path}" do
63
+ run Rack::File.new(File.join(root, path), 'Cache-Control' => 'max-age=0')
64
+ end
65
+ end
66
+ map "/ui" do
67
+ run Conjur::WebServer::Home.new(root)
68
+ end
69
+ end
70
+ options = {
71
+ app: app,
72
+ Port: port,
73
+ Threads: '0:64',
74
+ Verbose: true
75
+ }
76
+
77
+ # this vivifies the env for correct url settings
78
+ # otherwise puma sets it to development and
79
+ # confusion ensues
80
+ # HR: it won't work anymore since API 4.10.2 (because it relies on sticky configuration feature which is removed)
81
+ # instead we just explicitly set RACK_ENV to "production" on the command call -- this is also bad, but... good enough for now, until we'll fix API configuration logic
82
+ Conjur.configuration.env
83
+
84
+ Rack::Server.start(options)
85
+ end
86
+
87
+ def open headless
88
+ require 'launchy'
89
+ url = "http://localhost:#{port}/login?sessionid=#{sessionid}"
90
+ # as launchy sometimes silently fails, we need human-friendly failover
91
+ if ENV['DONT_OPEN_IN_BROWSER'] or headless
92
+ puts "Running in headless mode."
93
+ puts "To reach this UI server via SSH tunnel, run the following command:"
94
+ puts "ssh -N -L #{port}:localhost:#{port} user@hostname"
95
+ puts "Then open your browser to the following URL:"
96
+ puts url
97
+ else
98
+ $stderr.puts "If your browser did not opened the UI automatically, point it to #{url}"
99
+ Launchy.open(url)
100
+ end
101
+ end
102
+
103
+ def set_port p
104
+ @port = p
105
+ end
106
+
107
+ protected
108
+
109
+ def port
110
+ @port ||= find_available_port
111
+ end
112
+
113
+ DEFAULT_PORT = 42_289
114
+
115
+ def find_available_port
116
+ begin
117
+ server = TCPServer.new('127.0.0.1', 0)
118
+ server.addr[1]
119
+ ensure
120
+ server.close if server
121
+ end
122
+ end
123
+
124
+ def sessionid
125
+ require 'securerandom'
126
+ @sessionid ||= SecureRandom.hex(32)
127
+ end
128
+ end
129
+ end
130
+ end
@@ -0,0 +1,91 @@
1
+ /** @jsx React.DOM */
2
+ /* global conjur, React, d3, _ */
3
+
4
+ (function(conjur, React, d3, _) {
5
+ // TODO move these somewhere common
6
+ function _translate(x,y){
7
+ return 'transate(' + x + ',' + y + ')';
8
+ }
9
+
10
+ this.RoleGraph = React.createClass({
11
+ /*
12
+ * React Lifecycle methods
13
+ */
14
+
15
+ getInitialState: function(){
16
+ return { ready: false };
17
+ },
18
+
19
+ componentDidMount: function(){
20
+ this.ctx = {};
21
+ this.el = this.getDOMNode();
22
+ this._computeState(this.props);
23
+ },
24
+
25
+ componentWillReceiveProps: function(nextProps){
26
+ this._computeState(nextProps);
27
+ },
28
+
29
+
30
+ componentDidUpdate: function(){
31
+ if(this.state.ready === false){
32
+ return;
33
+ }
34
+
35
+ if(this.sgv === undefined){
36
+ this._create();
37
+ }
38
+
39
+ this._update();
40
+ },
41
+
42
+ /*
43
+ * Internal Methods
44
+ */
45
+
46
+ /**
47
+ * Create the non-data bound graph components.
48
+ * @private
49
+ */
50
+ _create: function(){
51
+ var svg = this.ctx.svg = d3.select(this.el)
52
+ .append('svg')
53
+ .attr('class', 'd3-digraph') // XXX is this
54
+ .attr('width', this.state.fullWidth)
55
+ .attr('height', this.state.fullHeight)
56
+ .append('g')
57
+ .attr('class', 'd3-digraph__inner')
58
+ .attr('transform', _translate(this.state.margin.left, this.state.margin.top));
59
+ },
60
+
61
+ /**
62
+ * Bind graph components to this.state.data, which should be an object as returned by
63
+ * this.conjur.role.graph(...).
64
+ *
65
+ * @private
66
+ */
67
+ _update: function(){
68
+
69
+ },
70
+
71
+ /**
72
+ * Given props, we try to decide how to do our geometric shit.
73
+ * @param props
74
+ * @private
75
+ */
76
+ _computeState: function(props){
77
+
78
+ }
79
+
80
+
81
+
82
+ });
83
+
84
+ }).bind(conjur.views)
85
+ (
86
+ conjur,
87
+ React,
88
+ d3,
89
+ _
90
+ );
91
+
metadata ADDED
@@ -0,0 +1,373 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: conjur-asset-ui-beta
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.5.0
5
+ platform: ruby
6
+ authors:
7
+ - Jon Mason
8
+ - Kevin Gilpin
9
+ - Rafał Rzepecki
10
+ - Hleb Rubanau
11
+ - Mikalai Sevastsyanau
12
+ autorequire:
13
+ bindir: bin
14
+ cert_chain: []
15
+ date: 2015-03-30 00:00:00.000000000 Z
16
+ dependencies:
17
+ - !ruby/object:Gem::Dependency
18
+ name: puma
19
+ requirement: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - '>='
22
+ - !ruby/object:Gem::Version
23
+ version: '0'
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ requirements:
28
+ - - '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: conjur-api
33
+ requirement: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - '>='
36
+ - !ruby/object:Gem::Version
37
+ version: 4.10.2
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - '>='
43
+ - !ruby/object:Gem::Version
44
+ version: 4.10.2
45
+ - !ruby/object:Gem::Dependency
46
+ name: launchy
47
+ requirement: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - '>='
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ type: :runtime
53
+ prerelease: false
54
+ version_requirements: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - '>='
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ - !ruby/object:Gem::Dependency
60
+ name: rack
61
+ requirement: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - '>='
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ - !ruby/object:Gem::Dependency
74
+ name: rack-streaming-proxy
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - '='
78
+ - !ruby/object:Gem::Version
79
+ version: 2.0.1
80
+ type: :runtime
81
+ prerelease: false
82
+ version_requirements: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - '='
85
+ - !ruby/object:Gem::Version
86
+ version: 2.0.1
87
+ - !ruby/object:Gem::Dependency
88
+ name: conjur-cli
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ type: :development
95
+ prerelease: false
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - '>='
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ - !ruby/object:Gem::Dependency
102
+ name: bundler
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ~>
106
+ - !ruby/object:Gem::Version
107
+ version: '1.3'
108
+ type: :development
109
+ prerelease: false
110
+ version_requirements: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ~>
113
+ - !ruby/object:Gem::Version
114
+ version: '1.3'
115
+ - !ruby/object:Gem::Dependency
116
+ name: rake
117
+ requirement: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - '>='
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ type: :development
123
+ prerelease: false
124
+ version_requirements: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - '>='
127
+ - !ruby/object:Gem::Version
128
+ version: '0'
129
+ - !ruby/object:Gem::Dependency
130
+ name: rspec
131
+ requirement: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - '>='
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ type: :development
137
+ prerelease: false
138
+ version_requirements: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ - !ruby/object:Gem::Dependency
144
+ name: simplecov
145
+ requirement: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - '>='
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
157
+ - !ruby/object:Gem::Dependency
158
+ name: spork
159
+ requirement: !ruby/object:Gem::Requirement
160
+ requirements:
161
+ - - '>='
162
+ - !ruby/object:Gem::Version
163
+ version: '0'
164
+ type: :development
165
+ prerelease: false
166
+ version_requirements: !ruby/object:Gem::Requirement
167
+ requirements:
168
+ - - '>='
169
+ - !ruby/object:Gem::Version
170
+ version: '0'
171
+ - !ruby/object:Gem::Dependency
172
+ name: ci_reporter
173
+ requirement: !ruby/object:Gem::Requirement
174
+ requirements:
175
+ - - '>='
176
+ - !ruby/object:Gem::Version
177
+ version: '0'
178
+ type: :development
179
+ prerelease: false
180
+ version_requirements: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - '>='
183
+ - !ruby/object:Gem::Version
184
+ version: '0'
185
+ description:
186
+ email:
187
+ - jon@conjur.net
188
+ - kgilpin@conjur.net
189
+ - rafal@conjur.net
190
+ - hleb@conjur.net
191
+ - mikalai@conjur.net
192
+ executables: []
193
+ extensions: []
194
+ extra_rdoc_files: []
195
+ files:
196
+ - .git-hooks/pre_commit/trailing_whitespace.rb
197
+ - .gitignore
198
+ - .project
199
+ - CHANGELOG.md
200
+ - Gemfile
201
+ - LICENSE.txt
202
+ - README.md
203
+ - Rakefile
204
+ - TODO.md
205
+ - app/.csscomb.json
206
+ - app/.jshintrc
207
+ - app/build/css/bootstrap.css
208
+ - app/build/fonts/glyphicons-halflings-regular.eot
209
+ - app/build/fonts/glyphicons-halflings-regular.svg
210
+ - app/build/fonts/glyphicons-halflings-regular.ttf
211
+ - app/build/fonts/glyphicons-halflings-regular.woff
212
+ - app/build/fonts/glyphicons-halflings-regular.woff2
213
+ - app/build/images/conjur-logo.svg
214
+ - app/build/images/icon-client-pc.svg
215
+ - app/build/images/icon-environment.png
216
+ - app/build/images/icon-person.svg
217
+ - app/build/images/icon-policy.png
218
+ - app/build/images/icon-resource.png
219
+ - app/build/images/icon-service-dots.svg
220
+ - app/build/images/icon-variable.png
221
+ - app/build/index.html
222
+ - app/build/js/app.js
223
+ - app/build/js/pace.js
224
+ - app/config/preprocessor.js
225
+ - app/config/webpack.js
226
+ - app/gulpfile.js
227
+ - app/package.json
228
+ - app/src/actions.js
229
+ - app/src/app.js
230
+ - app/src/clients/audit.js
231
+ - app/src/clients/generic.js
232
+ - app/src/clients/layer_members.js
233
+ - app/src/clients/list.js
234
+ - app/src/clients/members.js
235
+ - app/src/clients/search.js
236
+ - app/src/components/app/__tests__/app-test.js
237
+ - app/src/components/app/app.js
238
+ - app/src/components/audit/__tests__/table_header-test.js
239
+ - app/src/components/audit/box.js
240
+ - app/src/components/audit/constants.js
241
+ - app/src/components/audit/entry.js
242
+ - app/src/components/audit/fields_mixin.js
243
+ - app/src/components/audit/humanize_event.js
244
+ - app/src/components/audit/table.js
245
+ - app/src/components/audit/table_header.js
246
+ - app/src/components/audit/timestamp.js
247
+ - app/src/components/chart/chart.js
248
+ - app/src/components/chart/chart_helper_mixin.js
249
+ - app/src/components/custom/list.js
250
+ - app/src/components/custom/view.js
251
+ - app/src/components/dashboard/activity.js
252
+ - app/src/components/dashboard/dashboard.js
253
+ - app/src/components/flash/flash.js
254
+ - app/src/components/generic/__tests__/time-test.js
255
+ - app/src/components/generic/annotations.js
256
+ - app/src/components/generic/breadcrumbs.js
257
+ - app/src/components/generic/foldable_audit_section.js
258
+ - app/src/components/generic/list.js
259
+ - app/src/components/generic/list_factory.js
260
+ - app/src/components/generic/resource_link.js
261
+ - app/src/components/generic/role_link.js
262
+ - app/src/components/generic/tab_mixin.js
263
+ - app/src/components/generic/time.js
264
+ - app/src/components/group/list.js
265
+ - app/src/components/group/view.js
266
+ - app/src/components/host/activity.js
267
+ - app/src/components/host/details.js
268
+ - app/src/components/host/host_link.js
269
+ - app/src/components/host/list.js
270
+ - app/src/components/host/view.js
271
+ - app/src/components/layer/list.js
272
+ - app/src/components/layer/view.js
273
+ - app/src/components/navbar/__tests__/navbar-test.js
274
+ - app/src/components/navbar/nav_search_form.js
275
+ - app/src/components/navbar/navbar.js
276
+ - app/src/components/owned_resources/owned_resources.js
277
+ - app/src/components/owned_resources/owned_resources_box.js
278
+ - app/src/components/permissions/permissions.js
279
+ - app/src/components/permissions/permissions_table.js
280
+ - app/src/components/policy/list.js
281
+ - app/src/components/policy/view.js
282
+ - app/src/components/refresh/refresh.js
283
+ - app/src/components/refresh/refresh.less
284
+ - app/src/components/search/group.js
285
+ - app/src/components/search/group_heading.js
286
+ - app/src/components/search/group_title.js
287
+ - app/src/components/search/result_item.js
288
+ - app/src/components/search/search.js
289
+ - app/src/components/user/activity.js
290
+ - app/src/components/user/details.js
291
+ - app/src/components/user/list.js
292
+ - app/src/components/user/pubkeys.js
293
+ - app/src/components/user/pubkeys.less
294
+ - app/src/components/user/view.js
295
+ - app/src/components/variable/activity.js
296
+ - app/src/components/variable/details.js
297
+ - app/src/components/variable/fetchers.js
298
+ - app/src/components/variable/list.js
299
+ - app/src/components/variable/updaters.js
300
+ - app/src/components/variable/view.js
301
+ - app/src/constants.js
302
+ - app/src/images/conjur-logo.svg
303
+ - app/src/images/icon-client-pc.svg
304
+ - app/src/images/icon-environment.png
305
+ - app/src/images/icon-person.svg
306
+ - app/src/images/icon-policy.png
307
+ - app/src/images/icon-resource.png
308
+ - app/src/images/icon-service-dots.svg
309
+ - app/src/images/icon-variable.png
310
+ - app/src/pages/index.html
311
+ - app/src/routes.js
312
+ - app/src/stores/app_store.js
313
+ - app/src/stores/audit_store.js
314
+ - app/src/stores/group_store.js
315
+ - app/src/stores/host_store.js
316
+ - app/src/stores/layer_store.js
317
+ - app/src/stores/policy_store.js
318
+ - app/src/stores/resources_store.js
319
+ - app/src/stores/route_store.js
320
+ - app/src/stores/search_store.js
321
+ - app/src/stores/user_store.js
322
+ - app/src/stores/variable_store.js
323
+ - app/src/styles/bootstrap.less
324
+ - app/src/styles/styles.less
325
+ - app/src/utils.js
326
+ - app/src/vendor/pace.js
327
+ - conjur-asset-ui.gemspec
328
+ - features/navigation_bar.feature
329
+ - features/step_definitions/custom_step.rb
330
+ - features/support/env.rb
331
+ - features/support/hooks.rb
332
+ - features/support/world.rb
333
+ - lib/conjur-asset-ui-version.rb
334
+ - lib/conjur-asset-ui.rb
335
+ - lib/conjur/command/ui.rb
336
+ - lib/conjur/webserver/api_proxy.rb
337
+ - lib/conjur/webserver/authorize.rb
338
+ - lib/conjur/webserver/conjur_info.rb
339
+ - lib/conjur/webserver/home.rb
340
+ - lib/conjur/webserver/login.rb
341
+ - lib/conjur/webserver/renderer.rb
342
+ - lib/conjur/webserver/server.rb
343
+ - public/js/views/roleGraph.js
344
+ homepage: ''
345
+ licenses:
346
+ - MIT
347
+ metadata: {}
348
+ post_install_message:
349
+ rdoc_options: []
350
+ require_paths:
351
+ - lib
352
+ required_ruby_version: !ruby/object:Gem::Requirement
353
+ requirements:
354
+ - - '>='
355
+ - !ruby/object:Gem::Version
356
+ version: '0'
357
+ required_rubygems_version: !ruby/object:Gem::Requirement
358
+ requirements:
359
+ - - '>='
360
+ - !ruby/object:Gem::Version
361
+ version: '0'
362
+ requirements: []
363
+ rubyforge_project:
364
+ rubygems_version: 2.2.1
365
+ signing_key:
366
+ specification_version: 4
367
+ summary: Conjur User Interface Plugin
368
+ test_files:
369
+ - features/navigation_bar.feature
370
+ - features/step_definitions/custom_step.rb
371
+ - features/support/env.rb
372
+ - features/support/hooks.rb
373
+ - features/support/world.rb