conjur-asset-ui 1.3.1 → 1.3.2

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