conjur-asset-ui 1.3.1 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -3
  3. data/Gemfile +1 -3
  4. data/README.md +0 -34
  5. data/Rakefile +1 -69
  6. data/conjur-asset-ui.gemspec +1 -1
  7. data/lib/conjur-asset-ui-version.rb +1 -1
  8. data/lib/conjur/command/ui.rb +1 -1
  9. data/lib/conjur/webserver/server.rb +8 -14
  10. data/public/_client_code.html +42 -0
  11. data/public/_client_libs.html +15 -2
  12. data/public/css/bootstrap.css +7 -0
  13. data/public/css/styles.less +4 -170
  14. data/public/fonts/glyphicons-halflings-regular.eot +0 -0
  15. data/public/fonts/glyphicons-halflings-regular.svg +229 -0
  16. data/public/fonts/glyphicons-halflings-regular.ttf +0 -0
  17. data/public/fonts/glyphicons-halflings-regular.woff +0 -0
  18. data/public/index.html.erb +7 -5
  19. data/public/js/init.js +97 -183
  20. data/public/js/lib/JSXTransformer.js +10862 -0
  21. data/public/js/lib/async.js +958 -0
  22. data/public/js/lib/backbone.js +2 -0
  23. data/public/js/lib/bootstrap.js +6 -0
  24. data/public/js/lib/less.js +16 -0
  25. data/public/js/lib/moment.js +7768 -0
  26. data/public/js/lib/react-bootstrap.js +5346 -0
  27. data/public/js/lib/react-bootstrap.min.js +4 -0
  28. data/public/js/lib/sorted-set.no-require.js +28 -3
  29. data/public/js/lib/underscore-min.js +6 -0
  30. data/public/js/lib/underscore.string.min.js +1 -0
  31. data/public/js/main.js +57 -0
  32. data/public/js/models/groupRecord.js +11 -12
  33. data/public/js/models/hostRecord.js +7 -6
  34. data/public/js/models/layerRecord.js +11 -12
  35. data/public/js/models/namespace.js +0 -2
  36. data/public/js/models/policyList.js +1 -3
  37. data/public/js/models/policyRecord.js +7 -6
  38. data/public/js/models/record.js +23 -24
  39. data/public/js/models/resourceList.js +10 -28
  40. data/public/js/models/userList.js +2 -7
  41. data/public/js/models/userRecord.js +8 -7
  42. data/public/js/models/variableList.js +7 -18
  43. data/public/js/models/variableRecord.js +12 -13
  44. data/public/js/routers.js +26 -72
  45. data/public/js/views/annotations.js +27 -38
  46. data/public/js/views/audit.js +17 -23
  47. data/public/js/views/dashboard.js +58 -94
  48. data/public/js/views/generic.js +9 -16
  49. data/public/js/views/group.js +55 -94
  50. data/public/js/views/groups.js +7 -3
  51. data/public/js/views/host.js +44 -75
  52. data/public/js/views/hosts.js +6 -2
  53. data/public/js/views/layer.js +82 -127
  54. data/public/js/views/layers.js +6 -2
  55. data/public/js/views/mixins/search.js +5 -12
  56. data/public/js/views/mixins/tabs.js +55 -95
  57. data/public/js/views/navSearch.js +5 -16
  58. data/public/js/views/owned.js +8 -14
  59. data/public/js/views/permissions.js +178 -244
  60. data/public/js/views/policies.js +4 -2
  61. data/public/js/views/policy.js +38 -65
  62. data/public/js/views/resource.js +34 -49
  63. data/public/js/views/role.js +37 -52
  64. data/public/js/views/searchResults.js +138 -205
  65. data/public/js/views/time.js +13 -26
  66. data/public/js/views/user.js +55 -178
  67. data/public/js/views/users.js +7 -2
  68. data/public/js/views/variable.js +45 -226
  69. data/public/js/views/variables.js +8 -4
  70. metadata +19 -18
  71. data/.jshintrc +0 -41
  72. data/bower.json +0 -93
  73. data/features/navigation_bar.feature +0 -31
  74. data/features/step_definitions/custom_step.rb +0 -32
  75. data/features/support/env.rb +0 -38
  76. data/features/support/hooks.rb +0 -30
  77. data/features/support/world.rb +0 -17
  78. data/gulpfile.js +0 -140
  79. data/package.json +0 -47
  80. data/preprocessor.js +0 -7
  81. data/public/js/views/chart.js +0 -471
@@ -1,27 +1,14 @@
1
1
  /** @jsx React.DOM */
2
- /* global conjur, React, moment */
3
-
4
- (function(conjur, React, moment) {
5
- 'use strict';
6
-
7
- // render a <time> tag. props.timestamp should be a timestamp
8
- // that moment can parse, props.format should be one of the
9
- // format strings accepted by moment (optional).
10
- this.Time = React.createClass({
11
- render: function(){
12
- var timestamp = this.props.timestamp;
13
- var format = this.props.format || 'lll';
14
- var m = moment(timestamp);
15
-
16
- return (
17
- <time dateTime={m.format()}>{m.format(format)}</time>
18
- );
19
- }
20
- });
21
-
22
- }).bind(conjur.views)
23
- (
24
- conjur,
25
- React,
26
- moment
27
- );
2
+
3
+ // render a <time> tag. props.timestamp should be a timestamp
4
+ // that moment can parse, props.format should be one of the
5
+ // format strings accepted by moment (optional).
6
+ var Time = React.createClass({
7
+ render: function(){
8
+ var timestamp = this.props.timestamp;
9
+ var format = this.props.format || 'lll';
10
+ var m = moment(timestamp);
11
+
12
+ return <time dateTime={m.format()}>{m.format(format)}</time>;
13
+ }
14
+ })
@@ -1,133 +1,20 @@
1
1
  /** @jsx React.DOM */
2
- /* global conjur, _, React, ReactBootstrap */
3
2
 
4
- (function(conjur, _, React, ReactBootstrap) {
5
- 'use strict';
6
-
7
- var TabbedArea = ReactBootstrap.TabbedArea,
8
- TabPane = ReactBootstrap.TabPane,
9
- Tab = conjur.views.mixins.Tab,
10
- AuditBox = window.AuditBox,
11
- RoleLink = conjur.views.RoleLink;
12
-
13
- var PubkeyItem = React.createClass({
14
- render: function() {
15
- return (
16
- <div className="b-pubkey">
17
- <div className="b-pubkey__logo">
18
- <span className="badge">{this.props.pubkey[0]}</span>
19
- </div>
20
- <ul className="b-pubkey__list list-unstyled">
21
- <li className="b-pubkey__name">
22
- {this.props.pubkey[2]}
23
- </li>
24
- <li className="b-pubkey__fingerprint">
25
- {/* TODO: key fingerprint */}
26
- </li>
27
- <li className="b-pubkey__info">
28
- {/* TODO: When added, when last time used */}
29
- </li>
30
- </ul>
31
- <div className="b-pubkeys__actions">
32
- {/* TODO: Action buttons */}
33
- </div>
34
- </div>
35
- );
36
- }
37
- });
38
-
39
- var PubkeysList = React.createClass({
40
- render: function() {
41
- var login = this.props.login;
42
-
43
- var pubkeysList = this.props.pubkeys.map(function(k, idx, coll) {
44
- var tokens = k.split(' ');
45
-
46
- console.log(arguments);
47
-
48
- var className = 'b-pubkeys__item list-group-item list-group-item-noborder';
49
-
50
- if (idx + 1 !== coll.length) {
51
- className = className + ' b-pubkeys__item--headline';
52
- }
53
-
54
- return (
55
- <li className={className}>
56
- <PubkeyItem pubkey={tokens} />
57
- </li>
58
- );
59
- });
60
-
61
- return (
62
- <div className="b-pubkeys">
63
- <PubkeysHelp>
64
- This is list of SSH public keys associated with user {login}.
65
- </PubkeysHelp>
66
- <ul className="b-pubkeys__list">
67
- {pubkeysList}
68
- </ul>
69
- </div>
70
- );
71
- }
72
- });
73
-
74
- var PubkeysHelp = React.createClass({
75
- render: function() {
76
- var ret;
77
-
78
- if (React.Children.count(this.props.children) > 0) {
79
- ret = (
80
- <p className="b-pubkeys__help">
81
- {this.props.children}
82
- </p>
83
- );
84
- } else {
85
- var login = this.props.login;
86
-
87
- ret = (
88
- <p className="b-pubkeys__help">
89
- User {login} have not any pubkey. Use follow command to create one:
90
- <pre>$ conjur pubkeys add {login} @id_{login}.pub</pre>
91
- </p>
92
- );
93
- }
94
-
95
- return ret;
96
- }
97
- });
98
-
99
- var PubkeysTabContent = React.createClass({
100
- render: function() {
101
- var body;
102
-
103
- if (this.props.pubkeys.length > 0) {
104
- body = (
105
- <PubkeysList login={this.props.login} pubkeys={this.props.pubkeys} />
106
- );
107
- } else {
108
- body = (
109
- <div className="b-pubkeys">
110
- <PubkeysHelp login={this.props.login} />
111
- </div>
112
- );
113
- }
114
-
115
- return body;
116
- }
117
- });
118
-
119
- this.User = React.createClass({
120
- mixins: [Tab],
121
-
122
- render: function() {
123
- var user = this.props.data.user;
124
-
125
- // TODO: refactor
126
- // TODO: show public keys
127
- // TODO: actions menu (e.g. 'upload public key', 'add annotation')
128
- // TODO: memberships panel
129
- var overviewTab = (
130
- <TabPane key="overview" tab="Overview">
3
+ //var ReactBootstrap=root.ReactBootstrap;
4
+ var TabbedArea = ReactBootstrap.TabbedArea;
5
+ var TabPane = ReactBootstrap.TabPane;
6
+
7
+ var User = React.createClass({
8
+ mixins: [conjur.views.mixins.Tab],
9
+ render: function(){
10
+ var user = this.props.data.user;
11
+
12
+ // TODO: refactor
13
+ // TODO: show public keys
14
+ // TODO: actions menu (e.g. 'upload public key', 'add annotation')
15
+ // TODO: memberships panel
16
+ var overview_tab =
17
+ <TabPane key="overview" tab="Overview">
131
18
  <dl className="dl-horizontal">
132
19
  <dt>Created by</dt>
133
20
  <dd><RoleLink id={user.userid}/></dd>
@@ -136,56 +23,46 @@
136
23
  <dt>Uidnumber</dt>
137
24
  <dd>{user.uidnumber}</dd>
138
25
  </dl>
139
- </TabPane>
140
- );
26
+ </TabPane>;
141
27
 
142
- var auditTab = (
143
- <TabPane key="audit" tab="Recent Activity">
28
+ var audit_tab=
29
+ <TabPane key="audit" tab="Recent Activity">
144
30
  <div className="audit auditUser">
145
- <AuditBox roles={[user.roleid]}
146
- resources={[user.resource_identifier]}
147
- tabview={true} />
31
+ <AuditBox roles={[user.roleid]} resources={[user.resource_identifier]} tabview={true}/>
148
32
  </div>
149
- </TabPane>
150
- );
151
-
152
- var pubkeysTab = (
153
- <TabPane key="pubkeys"
154
- tab={conjur.utils.getTabname('Public Keys', this.props.data.pubkeys)}>
155
- <PubkeysTabContent login={user.login} pubkeys={this.props.data.pubkeys} />
156
- </TabPane>
157
- );
158
-
159
- var permissionsTab = this.permissionsTab(user.roleid);
160
- var membershipsTab = this.membershipsTab(user.roleid);
161
- var annotationsTab = this.annotationsTab();
162
- var ownedTab = this.ownedTab();
163
-
164
- var tabs = _.compact([
165
- overviewTab,
166
- ownedTab,
167
- membershipsTab,
168
- permissionsTab,
169
- annotationsTab,
170
- pubkeysTab,
171
- auditTab
172
- ]);
173
-
174
- return (
175
- <div className="user">
176
- <h2>User {user.login}</h2>
177
- <TabbedArea defaultActiveKey="overview">
178
- {tabs}
179
- </TabbedArea>
180
- </div>
181
- );
182
- }
183
- });
184
-
185
- }).bind(conjur.views)
186
- (
187
- conjur,
188
- _,
189
- React,
190
- ReactBootstrap
191
- );
33
+ </TabPane>;
34
+
35
+ var pubkeys_list = this.props.data.pubkeys.map(function(k) {
36
+ var tokens = k.split(" ");
37
+ return <li className="list-group-item list-group-item-noborder">
38
+ <span className="badge">{tokens[0]}</span>
39
+ {tokens[tokens.length-1]}
40
+ </li>
41
+ });
42
+ var pubkeys_tab = <TabPane key="pubkeys" tab={get_tabname("Public Keys", this.props.data.pubkeys)}>
43
+ <div className="pubkeys pubkeysUser">
44
+ <ul className="list-group">
45
+ {pubkeys_list}
46
+ </ul>
47
+ </div>
48
+ </TabPane>;
49
+
50
+ var permissions_tab = this.permissions_tab(user.roleid);
51
+ var memberships_tab = this.memberships_tab(user.roleid);
52
+ var annotations_tab = this.annotations_tab();
53
+ var owned_tab = this.owned_tab();
54
+
55
+ var tabs=_.compact([overview_tab, owned_tab, memberships_tab,
56
+ permissions_tab, annotations_tab, pubkeys_tab, audit_tab]);
57
+
58
+
59
+ return (
60
+ <div className="user">
61
+ <h2> User {user.login} </h2>
62
+ <TabbedArea defaultActiveKey="overview">
63
+ {tabs}
64
+ </TabbedArea>
65
+ </div>
66
+ );
67
+ }
68
+ });
@@ -1,13 +1,18 @@
1
1
  /** @jsx React.DOM */
2
- /* global conjur, React */
3
2
 
4
3
  (function(conjur, React) {
5
4
  'use strict';
6
5
 
7
6
  var GenericList = conjur.views.GenericList;
8
7
 
9
- this.UserBox = React.createClass({
8
+ var UserBox = this.UserBox = React.createClass({
9
+ // no more external manipulation of state
10
+ //getInitialState: function() {
11
+ // return { currentNamespace: "", members: [] };
12
+ //},
10
13
  render: function() {
14
+ // <NamespaceFilter currentNamespace={this.props.currentNamespace}
15
+ // namespaces={this.props.data.namespaces} />
11
16
  return (
12
17
  <div className="userBox">
13
18
  <div className="userList">
@@ -1,251 +1,70 @@
1
1
  /** @jsx React.DOM */
2
- /* global conjur, React, ReactBootstrap, _ */
3
2
 
4
- (function(conjur, React, ReactBootstrap, _) {
5
- 'use strict';
3
+ var Variable = React.createClass({
4
+ mixins: [conjur.views.mixins.Tab],
5
+ render: function() {
6
+ var updaters = this.props.data.updaters.map(function (member) {
7
+ return <li className="list-group-item list-group-item-noborder">
8
+ <RoleLink id={member} />
9
+ </li>
10
+ }.bind(this));
11
+ var fetchers = this.props.data.fetchers.map(function (member) {
12
+ return <li className="list-group-item list-group-item-noborder">
13
+ <RoleLink id={member} />
14
+ </li>
15
+ }.bind(this));
16
+ var resourceId = [ conjur.app.configuration.account, 'variable', this.props.data.variable.id ].join(':');
6
17
 
7
- var TabbedArea = ReactBootstrap.TabbedArea,
8
- TabPane = ReactBootstrap.TabPane,
9
- Tab = conjur.views.mixins.Tab,
10
- RoleLink = conjur.views.RoleLink,
11
- AuditBox = window.AuditBox;
12
18
 
13
- var RevealerBox = React.createClass({
14
- getInitialState: function() {
15
- return {revealed: false};
16
- },
17
19
 
18
- handleClick: function() {
19
- this.setState({revealed: !this.state.revealed});
20
- },
21
20
 
22
- render: function() {
23
- var valToShow = this.state.revealed ? 'SECRET HERE!' : 'Show Value';
24
-
25
- return (
26
- <div className="revealer well well-sm" onClick={this.handleClick}>
27
- {valToShow}
28
- </div>
29
- );
30
- }
31
- });
32
-
33
- var Breadcrumb = React.createClass({
34
- render: function() {
35
- return (
36
- <div className="b-breadcrumb">
37
-
38
- </div>
39
- );
40
- }
41
- });
42
-
43
- var Breadcrumbs = React.createClass({
44
- render: function() {
45
- return (
46
- <div className="b-breadcrumbs">
47
- <Breadcrumb />
48
- </div>
49
- );
50
- }
51
- });
52
-
53
- var Activity = React.createClass({
54
- getInitialState: function() {
55
- var data = this.getData();
56
-
57
- return {
58
- data: data,
59
- options: {
60
- legend: {
61
- close: 'Closed',
62
- sread: 'Suc. read',
63
- supdate: 'Suc. update',
64
- fread: 'Failed read',
65
- fupdate: 'Failed update'
66
- },
67
- axis: {
68
- y: {
69
- label: 'Value'
70
- }
71
- }
72
- }
73
- };
74
- },
75
-
76
- getData: function() {
77
- return [];
78
- },
79
-
80
- render: function() {
81
- return (
82
- <div className="b-variable-activity">
83
- <h2>Activity</h2>
84
- <div className="b-variable-activity__graph">
85
- <Chart options={this.state.options}
86
- data={this.state.data} />
87
- </div>
88
- </div>
89
- );
90
- }
91
- });
92
-
93
- var Updaters = React.createClass({
94
- render: function() {
95
- return (
96
- <div className="b-variable-updaters">
97
- <h2>Updaters</h2>
98
- </div>
99
- );
100
- }
101
- });
102
-
103
- var Fetchers = React.createClass({
104
- render: function() {
105
- return (
106
- <div className="b-variable-fetchers">
107
- <h2>Fetchers</h2>
108
- </div>
109
- );
110
- }
111
- });
112
-
113
- var Updates = React.createClass({
114
- render: function() {
115
- return (
116
- <div className="b-variable-updates">
117
- <h2>Updates</h2>
118
- </div>
119
- );
120
- }
121
- });
122
-
123
- var Warnings = React.createClass({
124
- render: function() {
125
- return (
126
- <div className="b-variable-warnings">
127
- <h2>Warnings</h2>
128
- </div>
129
- );
130
- }
131
- });
132
-
133
- this.Variable = React.createClass({
134
- mixins: [Tab],
135
-
136
- render: function() {
137
- var updaters = this.props.data.updaters.map(function(member) {
138
- return (
139
- <li className="list-group-item list-group-item-noborder">
140
- <RoleLink id={member} />
141
- </li>
142
- );
143
- });
144
-
145
- var fetchers = this.props.data.fetchers.map(function(member) {
146
- return (
147
- <li className="list-group-item list-group-item-noborder">
148
- <RoleLink id={member} />
149
- </li>
150
- );
151
- });
152
-
153
- var resourceId = [
154
- conjur.app.configuration.account,
155
- 'variable',
156
- this.props.data.variable.id
157
- ].join(':');
158
-
159
- var overviewTab = (
160
- <TabPane key="overview" tab="Overview">
161
- <dl className="dl-horizontal pull-left">
21
+ var overview_tab =
22
+ <TabPane key="overview" tab="Overview">
23
+ <dl className="dl-horizontal">
162
24
  <dt>Owner</dt>
163
- <dd><RoleLink id={this.props.data.variable.ownerid} /></dd>
164
-
25
+ <dd><RoleLink id={this.props.data.variable.ownerid}/></dd>
165
26
  <dt>Created by</dt>
166
- <dd><RoleLink id={this.props.data.variable.userid} /></dd>
167
-
27
+ <dd><RoleLink id={this.props.data.variable.userid}/></dd>
168
28
  <dt>MIME type</dt>
169
29
  <dd>{this.props.data.variable.mime_type}</dd>
170
-
171
30
  <dt>Kind</dt>
172
31
  <dd>{this.props.data.variable.kind}</dd>
173
-
174
32
  <dt>Versions</dt>
175
33
  <dd>{this.props.data.variable.version_count}</dd>
176
34
  </dl>
177
- <div className="pull-right">
178
- <RevealerBox variable={this.props.data.variable} />
179
- </div>
180
- </TabPane>
181
- );
182
-
183
- var updatersTab = (
184
- <TabPane key="updaters" tab={conjur.utils.getTabname('Updaters', updaters)}>
35
+ </TabPane>;
36
+ var updaters_tab =
37
+ <TabPane key="updaters" tab={get_tabname("Updaters",updaters)}>
185
38
  <ul className="list-group">
186
39
  {updaters}
187
40
  </ul>
188
- </TabPane>
189
- );
190
-
191
- var fetchersTab = (
192
- <TabPane key="fetchers" tab={conjur.utils.getTabname('Fetchers', fetchers)}>
41
+ </TabPane>;
42
+ var fetchers_tab =
43
+ <TabPane key="fetchers" tab={get_tabname("Fetchers",fetchers)}>
193
44
  <ul className="list-group">
194
45
  {fetchers}
195
46
  </ul>
196
- </TabPane>
197
- );
47
+ </TabPane>;
48
+ var annotations_tab = this.annotations_tab();
198
49
 
199
- var annotationsTab = this.annotationsTab();
200
-
201
- var auditTab = (
202
- <TabPane key="audit" tab="Recent Activity">
50
+ var audit_tab =
51
+ <TabPane key="audit" tab="Recent Activity">
203
52
  <div className="audit auditHost">
204
53
  <AuditBox resources={[resourceId]} tabview={true}/>
205
54
  </div>
206
- </TabPane>
207
- );
208
-
209
- var tabs = _.compact([
210
- overviewTab,
211
- updatersTab,
212
- fetchersTab,
213
- annotationsTab,
214
- auditTab
215
- ]);
216
-
217
- // <Breadcrumbs />
218
- // <hr />
219
- // <Activity />
220
- // <hr />
221
- // <Updaters />
222
- // <hr />
223
- // <Fetchers />
224
- // <hr />
225
- // <Updates />
226
- // <hr />
227
- // <Warnings />
228
- // <hr />
229
- // <br />
230
- // <br />
231
- // <br />
232
- // <br />
233
-
234
- return (
235
- <div className="variable">
236
- <h2>Variable {this.props.data.variable.id}</h2>
237
- <TabbedArea defaultActiveKey="overview">
238
- {tabs}
239
- </TabbedArea>
240
- </div>
241
- );
242
- }
243
- });
244
-
245
- }).bind(conjur.views)
246
- (
247
- conjur,
248
- React,
249
- ReactBootstrap,
250
- _
251
- );
55
+ </TabPane>;
56
+
57
+
58
+ var tabs = _.compact([ overview_tab, updaters_tab, fetchers_tab,
59
+ annotations_tab, audit_tab ]);
60
+
61
+ return (
62
+ <div className="variable">
63
+ <h2>Variable {this.props.data.variable.id}</h2>
64
+ <TabbedArea defaultActiveKey="overview">
65
+ {tabs}
66
+ </TabbedArea>
67
+ </div>
68
+ );
69
+ }
70
+ });