/
database-role-edit.hbs
146 lines (143 loc) · 4.74 KB
/
database-role-edit.hbs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
<PageHeader as |p|>
<p.top>
<KeyValueHeader @path="vault.cluster.secrets.backend.show" @mode={{mode}} @root={{@root}} @showCurrent={{true}} />
</p.top>
<p.levelLeft>
<h1 class="title is-3" data-test-secret-header="true">
{{#if (eq @mode "create") }}
Create Role
{{else if (eq @mode "edit")}}
Edit Role
{{else}}
{{@model.id}}
{{/if}}
</h1>
</p.levelLeft>
</PageHeader>
{{#if (eq @mode 'show')}}
<Toolbar>
<ToolbarActions>
{{#if @model.canDelete}}
<ConfirmAction
@buttonClasses="toolbar-link"
@onConfirmAction={{action 'delete'}}
@confirmTitle="Delete role?"
@confirmMessage="This role will be permanently deleted. You will need to recreate it to use it again."
@confirmButtonText="Delete"
data-test-database-role-delete
>
Delete role
</ConfirmAction>
<div class="toolbar-separator" />
{{/if}}
{{#if @model.canGenerateCredentials}}
<button
type="button"
class="toolbar-link"
{{on 'click' (fn this.generateCreds @model.id @model.type)}}
data-test-database-role-generate-creds
>
{{if (eq @model.type "static") "Get credentials" "Generate credentials"}}
</button>
{{/if}}
{{#if @model.canEditRole}}
<ToolbarSecretLink
@secret={{concat 'role/' @model.id}}
@mode="edit"
@replace=true
@queryParams={{query-params itemType="role"}}
@data-test-edit-link=true
>
Edit role
</ToolbarSecretLink>
{{/if}}
</ToolbarActions>
</Toolbar>
{{#each @model.showFields as |attr|}}
{{#let attr.options.defaultDisplay as |defaultDisplay|}}
{{#if (eq attr.type "object")}}
<InfoTableRow
@alwaysRender={{true}}
@defaultShown={{attr.options.defaultShown}}
@label={{capitalize (or attr.options.label (humanize (dasherize attr.name)))}}
@value={{stringify (get @model attr.name)}}
/>
{{else}}
<InfoTableRow
@alwaysRender={{true}}
@defaultShown={{attr.options.defaultShown}}
@label={{capitalize (or attr.options.label (humanize (dasherize attr.name)))}}
@value={{or (get @model attr.name) defaultDisplay}}
@isLink={{eq attr.name 'database'}}
/>
{{/if}}
{{/let}}
{{/each}}
{{else}}
{{!-- Edit or Create --}}
<div class="box is-sideless is-fullwidth is-marginless">
<form {{on 'submit' this.handleCreateEditRole}}>
{{#each @model.fieldAttrs as |attr|}}
{{#if (eq @mode 'edit')}}
<ReadonlyFormField @attr={{attr}} @value={{get @model attr.name}} />
{{else if (not-eq attr.options.readOnly true)}}
{{form-field data-test-field attr=attr model=@model}}
{{!-- TODO: If database && !updateDB show warning --}}
{{#if (get this.warningMessages attr.name)}}
<AlertBanner @type="warning" @message={{get this.warningMessages attr.name}} />
{{/if}}
{{/if}}
{{/each}}
<DatabaseRoleSettingForm
@attrs={{@model.roleSettingAttrs}}
@roleType={{@model.type}}
@model={{@model}}
@mode={{@mode}}
@dbType={{await this.databaseType}}
/>
<div class="field is-grouped is-grouped-split is-fullwidth box is-bottomless">
<div class="field is-grouped">
<div class="control">
{{#if (is-empty-value this.warningMessages)}}
<button
data-test-secret-save
type="submit"
disabled={{this.loading}}
class="button is-primary {{if this.loading 'is-loading'}}"
>
{{#if (eq @mode 'create')}}
Create role
{{else}}
Save
{{/if}}
</button>
{{else}}
<ToolTip @horizontalPosition="left" as |T|>
<T.trigger>
<button
data-test-secret-save
type="submit"
disabled={{true}}
class="button is-primary"
>
Save
</button>
</T.trigger>
<T.content @class="tool-tip">
<div class="box">
You don't have permissions required to {{if (eq @mode 'create') "create" "update"}} this role. See form for details.
</div>
</T.content>
</ToolTip>
{{/if}}
</div>
<div class="control">
<SecretLink @mode="list" @class="button">
Cancel
</SecretLink>
</div>
</div>
</div>
</form>
</div>
{{/if}}